Java 无法了解如何使用PDFBox
我正在尝试创建一个PDF文件,在文档和其他类的文本字段中包含许多文本框。我正在使用PDFBox 好的,创建一个新文件很容易,写一行文本也很容易。现在,当我尝试插入下一个文本行或文本字段时,它会覆盖内容Java 无法了解如何使用PDFBox,java,pdfbox,Java,Pdfbox,我正在尝试创建一个PDF文件,在文档和其他类的文本字段中包含许多文本框。我正在使用PDFBox 好的,创建一个新文件很容易,写一行文本也很容易。现在,当我尝试插入下一个文本行或文本字段时,它会覆盖内容 PDDocument doc = null; PDPage page = null; try{ doc = new PDDocument(); page = new PDPage(); doc.ad
PDDocument doc = null;
PDPage page = null;
try{
doc = new PDDocument();
page = new PDPage();
doc.addPage(page);
PDFont font = PDType1Font.HELVETICA_BOLD;
PDPageContentStream title = new PDPageContentStream(doc, page);
title.beginText();
title.setFont( font, 14 );
title.moveTextPositionByAmount( 230, 720 );
title.drawString("DISPATCH SUMMARY");
title.endText();
title.close();
PDPageContentStream title1 = new PDPageContentStream(doc, page);
title1.beginText();
title1.setFont( font, 11 );
title1.moveTextPositionByAmount( 30, 620 );
title1.drawString("DEPARTURE");
title1.endText();
title1.close();
doc.save("PDFWithText.pdf");
doc.close();
} catch (Exception e){
System.out.println(e);
}
它确实给了我一个错误:“您正在覆盖现有内容,您应该使用附加模式”
因此,我尝试使用title1.appendRawCommands(String),但它不起作用
如何添加新的文本框和文本字段(来自另一个类)?我在互联网上读过几十篇教程,但它们只显示了创建一行
PDPageContentStream title1 = new PDPageContentStream(doc, page, true, true);
OP将此作为答案发布,因此这将向系统标记有答案
此外,如果第一个内容流包含实质性改变图形状态的操作(例如通过改变当前转换矩阵),并且希望新内容流以恢复这些更改开始,则应使用具有三个布尔参数的构造函数:
PDPageContentStream title1 = new PDPageContentStream(doc, page, true, true, true);
此实现已弃用
PDPageContentStream title1 = new PDPageContentStream(doc, page, true, true);
新的实施将是
PDPageContentStream title1 = new PDPageContentStream(doc, page, PDPageContentStream.AppendMode.OVERWRITE, true);
您本可以回答自己的问题并接受它。@请参阅我的编辑,您可能想尝试另一个在新流开始时重置图形状态的构造函数。现在不推荐使用此构造函数。使用
PDPageContentStream title1=新的PDPageContentStream(doc,page,PDPageContentStream.AppendMode.APPEND,false)代码>取而代之。