📜  PDFBox添加多行

📅  最后修改于: 2021-01-07 07:37:20             🧑  作者: Mango

PDFBox添加多行

在上一节中,我们讨论了如何将文本内容添加到PDF文档的页面。上一个程序只在页面中写一行。如果我们要在页面中插入多行,则不允许,并在行尾结束后结束文本的插入。

要在PDF文档中添加多行,我们需要使用setLeading()方法,并在完成每一行后,我们使用newline()方法从新行中插入文本。

请按照以下步骤在现有PDF文档中插入多行-

加载现有文档

我们可以使用static load()方法加载现有的PDF文档。此方法接受文件对象作为参数。我们还可以使用PDFBox的类名PDDocument调用它。

File file = new File("PATH"); 
PDDocument doc = PDDocument.load(file); 

获取所需页面

获取所需的页面,我们要在其中添加PDF文档中的文本内容。 getPage()方法用于从PDF文档检索页面。 getPage()方法接受页面的索引作为参数。

PDPage page = doc.getPage(Page Index);

准备内容流

PDPageContentStream类用于在文档中插入数据。在此类中,我们需要传递文档对象页面对象作为其参数来插入数据。

PDPageContentStream contentStream = new PDPageContentStream(doc, page);

开始文字

我们可以使用PDPageContentStream类的newLineAtOffset()方法设置文本的位置,如下所示。

contentStream.newLineAtOffset(20, 450);

设置文字字体

我们可以使用PDPageContentStream类的setFont()方法设置文本的字体样式字体大小。

contentStream.setFont(Font_Type, Font_Size);

设置文字开头

我们可以使用setLeading()方法设置文本开头。 setLeading()方法决定向下移动多少以到达下一个基线。

contentStream.setLeading(14.5f);

使用newLine()插入多行

我们可以使用showText()插入多行,并使用newline()方法将每一行分开,如下所示。

contentStream.showText(Line1);
contentStream.newLine();
contentStream.showText(Line2);

写文字内容

我们可以使用PDPageContentStream的showText()方法在PDF文档中插入文本内容。

contentStream.showText(text);

结束文字

在PDF文档中插入文本时,我们需要提供文本的终点。所述PDPageContentStream类的ENDTEXT()方法被用于结束文本内容。

contentStream.endText();

关闭内容流

我们可以使用close()方法关闭PDPageContentStream类。

contentStream.close();

保存文件

添加所需的文档后,我们需要将其保存到所需的位置。 save()方法用于保存文档。 save()方法接受字符串值,并将文档的路径作为参数传递。

doc.save("Path of Document");

关闭文件

完成任务后,我们需要使用close()方法关闭PDDocument类对象。

doc.close();

例-

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 AddMultipleText {    
    
public static void main(String[] args)throws IOException {        
        //Loading an existing document
          File file = new File("/eclipse-workspace/blank.pdf");
          PDDocument doc = PDDocument.load(file);
    
    //Retrieving the pages of the 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_BOLD_ITALIC, 24);
    
    //Setting the leading
    contentStream.setLeading(14.5f);

    //Setting the position for the line 
    contentStream.newLineAtOffset(25, 700);

          String text = "Hi!!! This is the multiple text content example.";
          String Line1 = "Here, we discussed about how to add text content in the pages of the PDF document.";
          String Line2 = "We do this by using the ShowText() method of the ContentStream class";

    //Adding text in the form of string
    contentStream.showText(text);
    contentStream.newLine(); 
    contentStream.showText(Line1);
    contentStream.newLine();
    contentStream.showText(Line2);
    
    //Ending the content stream
    contentStream.endText();

    System.out.println("Multiple Text Content is added in the PDF Document.");

    //Closing the content stream
    contentStream.close();

    //Saving the document
    doc.save(new File("/eclipse-workspace/blank.pdf"));

    //Closing the document
    doc.close();
    }
}

输出:

成功执行以上程序后,我们可以看到以下消息。

现在,打开PDF文档,我们可以看到在PDF文档的页面中添加了多行。