使用Java在现有 PDF 文件中添加图像
这些天,PDF经常被用于生成报表之类的,为了让Java程序与任何类型的word文件交互,excel openCV Apache框架就派上用场了。构建此代码所需的外部文件。第一个要求是导入以下库文件
- pdfbox-xxx.jar
- org.apache.commons.logging-xxx.jar
算法:
- 链接PDF文档和Java程序
- 创建 PDDocument 对象
- 创建 PDPage
- 将页面添加到文档对象
- 为图像创建 FileInputStream 对象。
- 通过传递 PDDocument 对象和 FIleInputStream 作为其构造函数来创建 PDJpeg 对象
- 调用drawXObject()对象并指定具有宽度和高度的坐标以将图像绘制到 PDF 文件上。
- 关闭流,保存文档对象,然后关闭文档。
实现:考虑一个输入图像样本来说明程序的工作,其中为了说明之前的工作 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();
}
}
输出:插入到同一输入图像中的文本。