📜  使用Java在现有 PDF 文件中添加图像

📅  最后修改于: 2022-05-13 01:54:20.908000             🧑  作者: Mango

使用Java在现有 PDF 文件中添加图像

这些天,PDF经常被用于生成报表之类的,为了让Java程序与任何类型的word文件交互,excel openCV Apache框架就派上用场了。构建此代码所需的外部文件。第一个要求是导入以下库文件

  1. pdfbox-xxx.jar
  2. org.apache.commons.logging-xxx.jar

算法:

  1. 链接PDF文档和Java程序
    • 创建 PDDocument 对象
    • 创建 PDPage
    • 将页面添加到文档对象
    • 为图像创建 FileInputStream 对象。
  2. 通过传递 PDDocument 对象和 FIleInputStream 作为其构造函数来创建 PDJpeg 对象
  3. 调用drawXObject()对象并指定具有宽度和高度的坐标以将图像绘制到 PDF 文件上。
  4. 关闭流,保存文档对象,然后关闭文档。

实现:考虑一个输入图像样本来说明程序的工作,其中为了说明之前的工作 PDF 文档如下:

使用Java程序处理在上述PDF文档中插入文本

Java
// Adding Image in Existing PDF using Java
  
// Importing openCV libraries
import java.io.File;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDPage;
import org.apache.pdfbox.pdmodel.graphics.image PDImageXObject;
import org.apache.pdfbox.pdmodel.PDPageContentStream;
import java.io.IOException;
  
class GFG {
  
    // Main driver method
    public static void main(String[] args)
        throws IOException
    {
  
        // Loading an already existing pdf document
        File file = new File("D:\\javong\\pdf1.pdf");
        PDDocument doc = new PDDocument.load(file);
  
        // Retrieve the page
        PDPage page = doc.getPage(0);
  
        // Creating Object of PDImageXObject for selecting
        // Image and provide the path of file in argument
        PDImageXObject pdfimg
            = PDImageXImage.createFromFile(
                "D:\\Images\\chloro.jpg", doc);
  
        // Creating the PDPageContentStream Object
        // for Inserting Image
        PDPageContentStream image
            = new PDPageContentStream(doc, page);
  
        // set the Image inside the Page
        image.drawImage(pdfImage, 55, 370);
        System.out.println("Image Inserted");
  
        // Closing the page of PDF by closing
        // PDPageContentStream Object
        // && Saving the Document
        image.close();
        doc.save("D:\\javong\\pdf1.pdf");
  
        // Closing the Document
        doc.close();
    }
}


输出:插入到同一输入图像中的文本。