📅  最后修改于: 2020-11-12 05:16:23             🧑  作者: Mango
在上一章提供的示例中,我们讨论了如何在PDF页面中添加文本,但是通过此程序,您只能添加适合一行的文本。如果尝试添加更多内容,将不会显示超出行空间的所有文本。
例如,如果您在上一章中通过传递以下字符串执行上述程序,则仅显示其中一部分。
String text = "This is an example of adding text to a page in the pdf document. we can
add as many lines as we want like this using the showText() method of the
ContentStream class";
与上述字符串上一章替换例子的字符串文本并执行它。执行后,您将收到以下输出。
如果仔细观察输出,您会注意到仅显示了字符串的一部分。
为了向PDF添加多行,您需要使用setLeading()方法设置行距,并在每行结束后使用newline()方法移至新行。
以下是创建空文档并将内容添加到其中的页面的步骤。
您可以使用PDDocument类的load()方法加载现有文档。因此,实例化此类并加载所需的文档,如下所示。
File file = new File("Path of the document");
PDDocument doc = PDDocument.load(file);
您可以使用getPage()方法在文档中获取所需页面。通过将所需页面的索引传递给此方法来检索所需页面的对象,如下所示。
PDPage page = doc.getPage(1);
您可以使用名为PDPageContentStream的类的对象插入各种数据元素。您需要将文档对象和页面对象传递给此类的构造函数,因此,通过传递在先前步骤中创建的这两个对象来实例化此类,如下所示。
PDPageContentStream contentStream = new PDPageContentStream(doc, page);
在PDF文档中插入文本时,可以使用PDPageContentStream类的beginText()和endText()方法指定文本的起点和终点,如下所示。
contentStream.beginText();
………………………..
code to add text content
………………………..
contentStream.endText();
因此,如下所示,使用beginText()方法开始文本。
contentStream.beginText();
使用newLineAtOffset()方法,可以在页面中的内容流上设置位置。
//Setting the position for the line
contentStream.newLineAtOffset(25, 700);
您可以使用PDPageContentStream类的setFont()方法将文本的字体设置为所需的样式,如下所示,此方法需要传递字体的类型和大小。
contentStream.setFont( font_type, font_size );
您可以使用setLeading()方法设置文本开头,如下所示。
contentStream.setLeading(14.5f);
您可以使用PDPageContentStream类的ShowText()方法插入多个字符串,方法是使用newline()方法将每个字符串分开,如下所示。
contentStream. ShowText(text1);
contentStream.newLine();
contentStream. ShowText(text2);
插入文本后,需要使用PDPageContentStream类的endText()方法结束文本,如下所示。
contentStream.endText();
如下所示,使用close()方法关闭PDPageContentStream对象。
contentstream.close();
添加所需的内容后,使用PDDocument类的save()方法保存PDF文档,如以下代码块所示。
doc.save("Path");
最后,使用PDDocument类的close()方法关闭文档,如下所示。
doc.close();
本示例演示了如何使用PDFBox在PDF中添加多行。将此程序保存在名为AddMultipleLines.java的文件中。
import java.io.File;
import java.io.IOException;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDPage;
import org.apache.pdfbox.pdmodel.PDPageContentStream;
import org.apache.pdfbox.pdmodel.font.PDType1Font;
public class AddMultipleLines {
public static void main(String args[]) throws IOException {
//Loading an existing document
File file = new File("C:/PdfBox_Examples/my_pdf.pdf");
PDDocument doc = document.load(file);
//Creating a PDF Document
PDPage page = doc.getPage(1);
PDPageContentStream contentStream = new PDPageContentStream(doc, page);
//Begin the Content stream
contentStream.beginText();
//Setting the font to the Content stream
contentStream.setFont( PDType1Font.TIMES_ROMAN, 16 );
//Setting the leading
contentStream.setLeading(14.5f);
//Setting the position for the line
contentStream.newLineAtOffset(25, 725);
String text1 = "This is an example of adding text to a page in the pdf document.
we can add as many lines";
String text2 = "as we want like this using the ShowText() method of the
ContentStream class";
//Adding text in the form of string
contentStream. ShowText(text1);
contentStream.newLine();
contentStream. ShowText(text2);
//Ending the content stream
contentStream.endText();
System.out.println("Content added");
//Closing the content stream
contentStream.close();
//Saving the document
doc.save(new File("C:/PdfBox_Examples/new.pdf"));
//Closing the document
doc.close();
}
}
使用以下命令从命令提示符处编译并执行保存的Java文件。
javac AddMultipleLines.java
java AddMultipleLines
执行后,上述程序将给定的文本添加到文档中并显示以下消息。
Content added
如果您在指定路径中验证PDF文档new.pdf ,则可以看到给定内容以多行添加到文档中,如下所示。