📜  PDFBox将图像插入PDF文档

📅  最后修改于: 2021-01-07 07:43:53             🧑  作者: Mango

PDFBox将图像插入PDF文档

PDFBox提供了一个用于将图像插入PDF文档的库。该库使用Java程序在PDF文档中插入图像。类PDImageXObjectPDPageContentStreamcreateFromFile()的drawImage()方法中使用的文档中插入图像。

请按照以下步骤在现有的PDF文档中插入图像-

加载现有文档

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

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

检索页面

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

PDPage page = doc.getPage(1);

为PDImageXObject创建对象

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

createFromFile()方法用于创建PDImageXobject类的对象。在这种方法中,我们需要传递要插入的图像的路径,并记录需要添加图像的对象。

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

准备内容流

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

PDPageContentStream contents = new PDPageContentStream(doc, page);

画图

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

contents.drawImage(pdImage, 250, 300);

关闭PDPageContentStream

我们可以使用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.graphics.image.PDImageXObject;

public class InsertingImage {
    
    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 page
          PDPage page = doc.getPage(1);
    
    //Creating PDImageXObject object
          PDImageXObject pdImage = PDImageXObject.createFromFile("/eclipse-workspace/java.jpeg",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("/eclipse-workspace/blank.pdf");
    
    //Closing the document
    doc.close();
    }
}

输出:

成功执行上述程序后,它显示以下输出消息。

现在,要验证图像已插入文档中,请打开PDF文档,该文档将显示以下输出。