Apache PDFBox 将嵌入文件添加到 PDF 文档
本教程演示如何将嵌入文件添加到 PDF 文档。
Maven 依赖项
我们使用 Apache Maven 来管理我们的项目依赖项。确保以下依赖项驻留在类路径中。
<dependency><groupId>org.apache.pdfbox</groupId><artifactId>pdfbox</artifactId><version>2.0.8</version>
</dependency>
Apache PDFBox 将嵌入文件添加到 PDF 文档
首先我们创建一个PDComplexFileSpecification
保存嵌入文件的 . 为了保持简单,我们创建了一个带有一些基本文本输入的虚拟文件流。我们创建了PDEmbeddedFile
包含虚拟文件的文件,我们可以使用它来设置一些可选参数。嵌入文件存储在一个命名的树类PDEmbeddedFilesNameTreeNode
中。最后,我们将树添加到文档目录中。
package com.memorynotfound.pdf.pdfbox;import org.apache.pdfbox.pdmodel.*;
import org.apache.pdfbox.pdmodel.common.filespecification.PDComplexFileSpecification;
import org.apache.pdfbox.pdmodel.common.filespecification.PDEmbeddedFile;
import org.apache.pdfbox.pdmodel.font.PDType1Font;import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.IOException;
import java.util.*;public class AddEmbeddedFiles {public static void main(String[] args) throws Exception{try (final PDDocument doc = new PDDocument()){PDPage page = new PDPage();doc.addPage(page);PDPageContentStream contentStream = new PDPageContentStream(doc, page);contentStream.beginText();contentStream.setFont(PDType1Font.HELVETICA, 12);contentStream.newLineAtOffset(100, 700);contentStream.showText("Go to Document -> File Attachments to View Embedded Files");contentStream.endText();contentStream.close();// embedded files are stored in a named treePDEmbeddedFilesNameTreeNode efTree = new PDEmbeddedFilesNameTreeNode();// first create the file specification, which holds the embedded filePDComplexFileSpecification fs = new PDComplexFileSpecification();fs.setFile("example-document.txt");// create a dummy file stream, this would probably normally be a FileInputStreambyte[] data = "This is the contents of the embedded file".getBytes("ISO-8859-1");ByteArrayInputStream fakeFile = new ByteArrayInputStream(data);// now lets some of the optional parametersPDEmbeddedFile ef = new PDEmbeddedFile(doc, fakeFile);ef.setSubtype("text/plain");ef.setSize(data.length);ef.setCreationDate(Calendar.getInstance());fs.setEmbeddedFile(ef);// create a new tree node and add the embedded filePDEmbeddedFilesNameTreeNode treeNode = new PDEmbeddedFilesNameTreeNode();treeNode.setNames(Collections.singletonMap("My first attachment", fs));// add the new node as kid to the root nodeList<PDEmbeddedFilesNameTreeNode> kids = new ArrayList<PDEmbeddedFilesNameTreeNode>();kids.add(treeNode);efTree.setKids(kids);// add the tree to the document catalogPDDocumentNameDictionary names = new PDDocumentNameDictionary(doc.getDocumentCatalog());names.setEmbeddedFiles(efTree);doc.getDocumentCatalog().setNames(names);doc.save(new File("/tmp/embedded-file.pdf"));} catch (IOException e){System.err.println("Exception while trying to create pdf document - " + e);}}}
输出
当我们运行这个应用程序时,会生成一个 PDF 文档。如果我们使用 Acrobat Reader 打开文档,我们可以在左栏中看到该文档现在是嵌入文件的骄傲所有者。
参考
Apache PDFBox 将嵌入文件添加到 PDF 文档相关推荐
- Apache PdfBox 2.0.X 版本解析PDF文档(文字和图片)
最近项目开发过程涉及到了pdf文件的内容的解析和和内容的提取入库操作,其中pdf的解析采用了开源的apache pdfbox 插件,版本选用的是最新版本的2.0.8版本,现将简单的读取解析的步骤记录如 ...
- 使用PDF24 将mathmatica 的.nb文件转化为PDF文档
使用PDF24 将mathmatica 的.nb文件转化为PDF文档 对于mathematica保存后的.nb文档,如果电脑上没有mathematica 软件无法打开,更改为.docx无法打开,用MA ...
- PDF怎么插入页?将页面添加到 PDF 文档的 3 种简单方法
得益于现代技术,我们现在可以轻松地合并.创建.编辑 PDF 并执行更多操作.使用专业的PDF程序在PDF文档中插入一页问题不大.这篇文章将介绍如何使用 奇客PDF编辑 和其他四个桌面和在线程序向 PD ...
- PDF文件简介及PDF文档加密方法
PDF文件的认识: Adobe Reader 关于PDF的图标PDF全称Portable Document Format,译为可移植文档格式,是一种电子文件格式.这种文件格式与操作系统平台无关,也就是 ...
- itextsharp php,将页码添加到pdf文档(itextsharp)
您必须使用iTextSharp打开PDF并自行添加页码.我曾经做过这样的事情,这是我的功能可能会给你一个开始. 该功能将当前页面添加到左下角,因此您可能必须将其放置在符合您需要的其他位置. publi ...
- 【PDFBox】PDFBox操作PDF文档之添加本地图片、添加网络图片、图片宽高自适应、图片水平垂直居中对齐
这篇文章,主要介绍PDFBox操作PDF文档之添加本地图片.添加网络图片.图片宽高自适应.图片水平垂直居中对齐. 目录 一.PDFBox操作图片 1.1.添加本地图片 (1)案例代码 (2)运行效果 ...
- IEEE论文Word 转 PDF文件的字体嵌入(embedded font)和pdf 文档去除链接
word 2010 选择 文件-> 发布pdf 确认PDF是否字体都嵌入: pdf文件双击文件->属性->字体,查看是否都嵌入,如图: PDF文档删除链接: "高级---文 ...
- linux 分割pdf,PDFBox分割PDF文档
在前一章中,我们已经看到了如何将JavaScript添加到PDF文档. 现在来学习如何将给定的PDF文档分成多个文档. 分割PDF文档中的页面 可以使用Splitter类将给定的PDF文档分割为多个P ...
- matlab使用pdfbox,PDFBox编写PDF文档
本文概述 PDF文档是纸质文档的流行替代品.它们在每个平台上具有相同的外观.与纸质文档一样, 某些PDF文档是机密的.我们可以使用密码保护来保护PDF文档.我们还可以在PDF文档中指定权限和加密类型. ...
最新文章
- 首次在观测中证实霍金黑洞面积定理!他们从引力波中算出黑洞真实面积
- 【数据结构与算法】之深入解析“UTF-8编码验证”的求解思路与算法示例
- 数据采集串口通信系统verilog设计和仿真
- OpenCL用于计算机领域的13个经典案例
- 德国力挺华为:建5G网络不排除任何设备厂商
- 为什么不懂技术的人可以做产品经理?
- 多媒体计算机的关键技术有哪些,多媒体计算机的定义分类和关键技术
- 西门子修复因使用第三方组件引起的90多个漏洞
- 【OpenCV学习笔记】【函数学习】一(MFC+OpenCV2.4.7读取摄像头之cvCaptureFromCAM()的索引问题
- 安卓rom制作教程_MIUI官改篇对比分析-极光ROM-台湾W大-星空未来-其他官改官网
- 运动会管理系统(JAVA,JSP,SERVLET,SQLSERVER)
- 【WPS技能】xlsx表格根据单元格的值改变行背景色
- k8s集群外部域名dns解析问题
- 调度工具之Azkaban 介绍
- 论文阅读-Detecting Deepfakes with Self-Blended Images (利用自混合图像检测深度伪造)
- java涂色_【LeetCode(Java) - 276】栅栏涂色
- 掌上医院:手机生活助手
- [2016 NUIST 程序设计竞赛] D. 达朗贝尔的台阶
- Python在cmd下pip快速下载安装包的国内安装镜像
- (第六天)学习Python的元组,字典,集合,公共操作