在Java中,可以使用Apache PDFBox库来创建PDF并实现立即下载。以下是实现的步骤:
<dependency>
<groupId>org.apache.pdfbox</groupId>
<artifactId>pdfbox</artifactId>
<version>2.0.24</version>
</dependency>
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDPage;
import org.apache.pdfbox.pdmodel.common.PDRectangle;
import org.apache.pdfbox.pdmodel.PDPageContentStream;
import org.apache.pdfbox.pdmodel.font.PDType1Font;
import java.io.IOException;
public class PDFCreator {
public static void main(String[] args) {
try {
PDDocument document = new PDDocument();
PDPage page = new PDPage(PDRectangle.A4);
document.addPage(page);
PDPageContentStream contentStream = new PDPageContentStream(document, page);
contentStream.setFont(PDType1Font.HELVETICA_BOLD, 12);
contentStream.beginText();
contentStream.newLineAtOffset(50, 700);
contentStream.showText("Hello, PDF!");
contentStream.endText();
contentStream.close();
document.save("sample.pdf");
document.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
这个示例创建了一个简单的PDF文件,其中包含一个Hello, PDF!的文本。
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.OutputStream;
public class PDFDownloadServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {
response.setContentType("application/pdf");
response.addHeader("Content-Disposition", "attachment; filename=sample.pdf");
File file = new File("sample.pdf");
FileInputStream fileInputStream = new FileInputStream(file);
OutputStream outputStream = response.getOutputStream();
byte[] buffer = new byte[4096];
int length;
while ((length = fileInputStream.read(buffer)) > 0) {
outputStream.write(buffer, 0, length);
}
outputStream.flush();
outputStream.close();
fileInputStream.close();
}
}
请注意,上述示例仅用于说明目的。实际应用程序中可能需要更复杂的PDF生成逻辑和文件下载处理。
领取专属 10元无门槛券
手把手带您无忧上云