- 教程
- 概述
- 环境
- 创建 PDF 文档(Creating a PDF Document)
- 添加页面(Adding Pages)
- 加载文档(Loading a Document)
- 删除页面(Removing Pages)
- 文档属性(Document Properties)
- 添加文本(Adding Text)
- 添加多行(Adding Multiple Lines)
- 阅读文本(Reading Text)
- 插入图像(Inserting Image)
- 加密 PDF 文档(Encrypting a PDF Document)
- JavaScript in PDF Document
- 拆分PDF文档(Splitting a PDF Document)
- 合并多个 PDF 文档(Merging Multiple PDF Documents)
- 合并多个 PDF 文档(Merging Multiple PDF Documents)
- 添加矩形(Adding Rectangles)
- 有用的资源
插入图像(Inserting Image)
在上一章中,我们已经了解了如何从现有PDF文档中提取文本。 在本章中,我们将讨论如何将图像插入PDF文档。
将图像插入PDF文档
您可以分别使用PDImageXObject和PDPageContentStream类的createFromFile()和drawImage()方法将图像插入PDF文档。
以下是从现有PDF文档中提取文本的步骤。
第1步:加载现有PDF文档
使用PDDocument类的静态方法load()加载现有PDF文档。 此方法接受文件对象作为参数,因为这是一个静态方法,您可以使用类名调用它,如下所示。
File file = new File("path of the document")
PDDocument doc = PDDocument.load(file);
第2步:检索页面
选择PDF文档中的页面并使用getPage()方法检索其页面对象,如下所示。
PDPage page = doc.getPage(0);
第3步:创建PDImageXObject对象
PDFBox库中的类PDImageXObject表示图像。 它提供了执行与图像相关的操作所需的所有方法,例如插入图像,设置图像高度,设置图像宽度等。
我们可以使用createFromFile()方法创建此类的对象。 对于这种方法,我们需要传递我们想要以字符串形式添加的图像的路径以及需要添加图像的文档对象。
PDImageXObject pdImage = PDImageXObject.<i>createFromFile</i>("C:/logo.png", doc);
第4步:准备内容流
您可以使用名为PDPageContentStream的类的对象插入各种数据元素。 您需要将文档对象和页面对象传递给此类的构造函数,因此,通过传递在前面步骤中创建的这两个对象来实例化此类,如下所示。
PDPageContentStream contentStream = new PDPageContentStream(doc, page);
第5步:在PDF文档中绘制图像
您可以使用drawImage()方法在PDF文档中插入图像。 对于此方法,您需要添加在上面步骤中创建的图像对象和图像所需的尺寸(宽度和高度),如下所示。
contentstream.drawImage(pdImage, 70, 250);
第6步:关闭PDPageContentStream
使用close()方法关闭PDPageContentStream对象,如下所示。
contentstream.close();
第7步:保存文档
添加所需内容后,使用PDDocument类的save()方法保存PDF文档,如以下代码块所示。
doc.save("Path");
第8步:关闭文档
最后,使用PDDocument类的close()方法关闭文档,如下所示。
doc.close();
例子 (Example)
假设我们在路径C:/PdfBox_Examples/有一个名为sample.pdf的PDF文档,其中包含空页,如下所示。
此示例演示如何将图像添加到上述PDF文档的空白页。 在这里,我们将加载名为sample.pdf的PDF文档并向其添加图像。 将此代码保存在名为InsertingImage.java.的文件中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 ,您可以观察到图像插入其中,如下所示。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论