PDFBox - 插入图像

在上一章中,我们已经了解了如何从现有PDF文档中提取文本.在本章中,我们将讨论如何将图像插入PDF文档.

将图像插入PDF文档

您可以插入图像到分别使用类 PDImageXObject PDPageContentStream createFromFile() drawImage()方法的PDF文档./p>

以下是从现有PDF文档中提取文本的步骤.

步骤1:加载现有PDF文档

使用 PDDocument 类的静态方法 load()加载现有PDF文档.此方法接受文件对象作为参数,因为这是一个静态方法,您可以使用类名调用它,如下所示.

File file = new File("path of the document")
PDDocument doc = PDDocument.load(file);

第2步:检索页面

在PDF文档中选择一个页面并使用

PDPage page = doc.getPage(0);

步骤3:创建PDImageXObject对象

PDFBox库中的类 PDImageXObject 表示图片.它提供了执行与图像相关的操作所需的所有方法,例如插入图像,设置图像高度,设置宽度等.

我们可以使用它创建此类的对象方法 createFromFile().对于这种方法,我们需要传递我们想要以字符串形式添加的图像的路径以及需要添加图像的文档对象.

PDImageXObject pdImage = PDImageXObject.createFromFile("C:/logo.png", doc);

第4步:准备内容流

您可以使用类的对象插入各种数据元素命名为 PDPageContentStream .您需要将文档对象和页面对象传递给此类的构造函数,因此,通过传递前面步骤中创建的这两个对象来实例化此类,如下所示.

PDPageContentStream contentStream = new PDPageContentStream(doc, page);

步骤5:在PDF文档中绘制图像

您可以使用以下方法在PDF文档中插入图像 drawImage()方法.对于此方法,您需要添加在上面步骤中创建的图像对象以及图像所需的尺寸(宽度和高度),如下所示.

 contentstream.drawImage(pdImage,70,250);

步骤6:关闭PDPageContentStream

使用<b关闭 PDPageContentStream 对象> close()方法如下所示.

contentstream.close();

步骤7:保存文档

添加所需内容后,使用保存PDF文档 PDDocument 类的save()方法,如以下代码块所示.

doc.save("Path");

步骤8:关闭文档

最后,使用关闭() PDDocument 类的方法,如下所示.

doc.close();

示例

假设我们有一个名为 sample.pdf 的PDF文档,路径 C:/PdfBox_Examples/包含空白页面如下所示.

示例文档

此示例演示如何将图像添加到上述PDF文档的空白页面.在这里,我们将加载名为 sample.pdf 的PDF文档并向其添加图像.将此代码保存在名为 InsertingImage.java的文件中.

import java.io.File;
  
import org.apache.pdfbox.pdmodel.PDDocument; 
import org.apache.pdfbox.pdmodel.PDPage;
import org.apache.pdfbox.pdmodel.PDPageContentStream;
import org.apache.pdfbox.pdmodel.graphics.image.PDImageXObject;

public class InsertingImage {

   public static void main(String args[]) throws Exception {
      //Loading an existing document
      File file = new File("C:/PdfBox_Examples/sample.pdf");
      PDDocument doc = PDDocument.load(file);
        
      //Retrieving the page
      PDPage page = doc.getPage(0);
       
      //Creating PDImageXObject object
      PDImageXObject pdImage = PDImageXObject.createFromFile("C:/PdfBox_Examples/logo.png",doc);
       
      //creating the PDPageContentStream object
      PDPageContentStream contents = new PDPageContentStream(doc, page);

      //Drawing the image in the PDF document
      contents.drawImage(pdImage, 70, 250);

      System.out.println("Image inserted");
      
      //Closing the PDPageContentStream object
      contents.close();		
		
      //Saving the document
      doc.save("C:/PdfBox_Examples/sample.pdf");
            
      //Closing the document
      doc.close();
     
   }
}

使用以下命令从命令提示符编译并执行保存的Java文件.

 javac InsertingImage.java 
 java InsertingImage

执行时,上面的程序将图像插入到给定PDF文档的指定页面中,显示以下消息.

Image inserted

如果您验证文档 sample.pdf ,您可以观察到图像已插入其中,如下所示.

Inserting image