PDFBox 将图片插入PDF文档

PDFBox 提供了一个用于将图片插入 PDF 文档的库。该库使用 Java 程序在 PDF 文档中插入图片。PDImageXObject类的createFromFile() 和PDPageContentStream类的drawImage() 方法可以在文档中插入图片。

按照以下步骤在现有 PDF 文档中插入图片:

第1步:加载现有文档

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

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

第2步:检索页面

在这里,我们需要选择一个将插入图像的页面。getPage() 方法用于检索PDF文档的页面。此方法接受页码作为我们要检索的页面的参数。这可以在以下代码中显示。

PDPage page = doc.getPage(1);  

第3步:为 PDImageXObject 创建对象

PDImageXobject类用于创建文档中的图片。该类负责执行与图片相关的所有操作,例如插入图片、设置图片的高度和宽度等。

createFromFile()方法 用来创建的一个PDImageXobject类的对象。在这个方法中,我们需要传递我们要插入的图图片的路径和需要添加图片的文档对象。

PDImageXObject pdImage = PDImageXObject.createFromFile("PATH of Image",doc);  

第4步:准备内容流

PDPageContentStream类用于创建一个对象用于插入各种数据元素。此类的构造函数包含文档对象和页面对象作为参数,如下所示。

PDPageContentStream contents = new PDPageContentStream(doc, page);  

第5步:绘制图像

drawImage() 方法用于在PDF文档中插入的图片。在这个方法中,我们需要将页面对象和图片的尺寸作为参数传递来绘制图片。

contents.drawImage(pdImage, 250, 300);  

第6步:关闭 PDPageContentStream

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

contentStream.close();  

第7步:保存文件

save() 方法用来保存文档。save() 方法接受字符串值并将该文件作为参数的路径。

doc.save("Path of Document");  

第8步:关闭文档

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

doc.close();  

PDFBox 将图片插入PDF文档 完整示例

package com.yiidian;

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;

import java.io.File;
import java.io.IOException;

public class InsertingImage {

    public static void main(String[] args) throws IOException {

        //Loading an existing document   
        File file = new File("d:/blank.pdf");
        PDDocument doc = PDDocument.load(file);

        //Retrieving the page
        PDPage page = doc.getPage(0);

        //Creating PDImageXObject object
        PDImageXObject pdImage = PDImageXObject.createFromFile("d:/logo.png", doc);

        //creating the PDPageContentStream object
        PDPageContentStream contents = new PDPageContentStream(doc, page);

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

        System.out.println("Image inserted Successfully.");

        //Closing the PDPageContentStream object
        contents.close();

        //Saving the document
        doc.save("d:/blank.pdf");

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

控制台输出结果如下:

打开blank.pdf,显示效果如下:

热门文章

优秀文章