相关文章
更多最近更新
更多PDFBox在PDF文档中添加页面
2019-04-28 08:15|来源: 网路
在前一章中,我们已经学习了如何创建PDF文档。 创建PDF文档后,我们需要添加页面。 现在来了解如何在PDF文档中添加页面。
将页面添加到PDF文档
可以通过实例化PDPage
类并使用PDDocument
类的addPage()
方法将其添加到PDF文档来创建空白页面。
以下是创建一个空文档并向其中添加页面的步骤。
第1步:创建空白文档
通过实例化PDDocument
类创建一个空的PDF文档,如下所示。
PDDocument document = new PDDocument();
第2步:创建一个空白页面
PDPage
类表示PDF文档中的一个页面,因此可以通过实例化该类来创建一个空页面,如下面的代码块所示。
PDPage my_page = new PDPage();
第3步:将页面添加到文档
使用PDDocument
类的addPage()
方法将页面添加到PDF文档。 对于此方法,需要传递PDPage
对象作为参数。
因此,将在上一步中创建的空白页添加到PDDocument
对象,如以下代码块中所示。
document.addPage(my_page);
通过这种方式,可以根据需要添加任意数量的页面作为PDF文档。
第4步:保存文档
添加完所有页面后,使用PDDocument
类的save()
方法保存PDF文档,如以下代码块所示。
document.save("Path");
第5步:关闭文档
最后使用PDDocument
类的close()
方法关闭文档,如下所示。
document.close();
示例
本示例演示如何创建PDF文档并向其中添加页面。 在这里我们将创建一个名为my_doc.pdf
的PDF文档,并进一步添加10
个空白页面,并将其保存在路径F:\worksp\pdfbox
中。 将下面代码保存在名称为AddingPages.java
的文件中。
package com656463; import java.io.IOException; import org.apache.pdfbox.pdmodel.PDDocument; import org.apache.pdfbox.pdmodel.PDPage; public class AddingPages { public static void main(String args[]) throws IOException { //Creating PDF document object PDDocument document = new PDDocument(); for (int i=0; i<10; i++) { //Creating a blank page PDPage blankPage = new PDPage(); //Adding the blank page to the document document.addPage( blankPage ); } //Saving the document document.save("F:\\worksp\\pdfbox\\my_doc.pdf"); System.out.println("PDF created"); //Closing the document document.close(); } }
执行后,上述程序会创建一个带有空白页面的PDF文档,其中显示以下消息 -
PDF created
如果验证指定的路径,可以找到创建的PDF文档
相关问答
更多-
使用pdfbox将pdf文档转换为图片[2023-07-29]
软件的问题吧,在转换是识别不出来转换出来就没有显示了。 网上有可以把pdf转换成图片格式的转换器的,你在网上搜《狸涡pdf转换jpg》。 打开转换器后添加文件,选择一个你要的图片格式,然后开始转换。 -
好的,谢谢大家的回复。 我喜欢bezier曲线的解决方案。 这种方法适用于我: private void drawCircle(PDPageContentStream contentStream, int cx, int cy, int r, int red, int green, int blue) throws IOException { final float k = 0.552284749831f; contentStream.setNonStrokingColor(red, gre ...
-
这可以使用Splitter 。 这是一个将在每个页面上分割文档的示例代码: PDDocument document = PDDocument.load(myPDF); Splitter splitter = new Splitter(); List
splittedDocuments = splitter.split(document); 您可以使用setSplitAtPage(split)控制每个setSplitAtPage(split) PDF上的页面数量。 This is p ... -
使用PDFBox缩放PDF页面(Scaling a PDF page using PDFBox)[2023-07-19]
使用 BufferedImage img = page.convertToImage(BufferedImage.TYPE_INT_RGB, 300); 在PDFBox 1.8。*中,这将以300dpi呈现。 默认(您使用的)是144dpi。 因此,根据您的需要,使用大于或小于144的dpi参数。 use BufferedImage img = page.convertToImage(BufferedImage.TYPE_INT_RGB, 300); in PDFBox 1.8.*, this will ... -
我已经回答了我自己的问题。 蒂尔曼豪斯尔指出我正确的方向。 public class templateTest { public static void main(String[] args) throws IOException { File file = new File("template.pdf"); PDDocument templatePdf = PDDocument.load(file); PDDocument mainDocument = new PDDocumen ...
-
最后,我没有重新加载模板每次工作。 所以得到的文件是我想要的:不是太大(4Mb为164页)。 我认为我之前犯过两个错误:一个是创建页面,另一个是字段重复。 所以这里是工作代码,如果有人碰巧遇到同样的问题。 表单创建: PDAcroForm finalForm = new PDAcroForm(finalDoc, new COSDictionary()); finalForm.setDefaultResources(originForm.getDefaultResources()) 页面创建 ...
-
使用pdfbox在包含图像的PDF上添加水印(1.7)(Add a watermark on a pdf that contains images using pdfbox (1.7))[2022-09-05]
正如mkl所建议的,这可能是我正在使用的pdfbox版本的一个问题。 As suggested by mkl, it is probably an issue with the version of pdfbox that I am using. -
要添加/ UF条目,请使用setFileUnicode(String file) 。 要添加/ Desc条目,请使用setFileDescription(String description) 。 我还包括Rad的答案,这是一个评论,可能会被删除: 如果您认为PSPDFKit存在问题,请在此处打开支持请求。 我们很乐意提供帮助! To add the /UF entry, use setFileUnicode(String file). To add the /Desc entry, use setFile ...
-
使用pdfbox从单独的pdf(不同页面大小)添加页面作为图层(Add page as layer from separate pdf(different page size) using pdfbox)[2022-12-17]
PDFBox依赖项 主要问题是PDFBox有三个核心组件,一个需要依赖。 缺少一个核心组件。 OP在评论中澄清了这一点 实际上进程没有挂起,文件根本就没有创建。 因为这听起来可能有异常或错误,尝试将代码包装为try { ... } catch (Throwable t) { t.printStackTrace(); } 已经在聊天中提出了阻止 。 事实上, java.lang.NoClassDefFoundError: org/apache/fontbox/util/BoundingBox at ... -
使用PDFBox使某些字符在现有PDF文档中不可见(Make some characters as invisible from an existing PDF document by using PDFBox)[2022-07-02]
基本上你必须通过用八个标记3 Tr (hello) Tj 0 Tr ( world) Tj替换两个标记(hello world) Tj来改变tokens列表 因此,替换你的循环 List tokens = parser.getTokens(); for (int j = 0; j < tokens.size(); j++) { [...] } 通过类似的东西 List tokens = parser.getTokens(); for (int j = 0; j < tokens.siz ...