如何从 pdf 文件中提取附件?

2023-11-24

我有大量 pdf 文档,其中附有 xml 文件。我想提取那些附加的 xml 文件并读取它们。如何使用 .net 以编程方式执行此操作?


iTextSharp 也非常有能力提取附件...尽管您可能必须使用低级对象来执行此操作。

有两种方法可以在 PDF 中嵌入文件:

  1. 在文件注释中
  2. 在文档级别“EmbeddedFiles”。

一旦您拥有来自任一来源的文件规范字典,文件本身将成为标记为“EF”(嵌入文件)的字典中的流。

因此,要在文档级别列出所有文件,可以编写如下代码(用 Java):

Map<String, byte[]> files = new HashMap<String,byte[]>();

PdfReader reader = new PdfReader(pdfPath);
PdfDictionary root = reader.getCatalog();
PdfDictionary names = root.getAsDict(PdfName.NAMES); // may be null
PdfDictionary embeddedFilesDict = names.getAsDict(PdfName.EMBEDDEDFILES); //may be null
PdfArray embeddedFiles = embeddedFilesDict.getAsArray(PdfName.NAMES); // may be null

int len = embeddedFiles.size();
for (int i = 0; i < len; i += 2) {
  PdfString name = embeddedFiles.getAsString(i); // should always be present
  PdfDictionary fileSpec = embeddedFiles.getAsDict(i+1); // ditto

  PdfDictionary streams = fileSpec.getAsDict(PdfName.EF);
  PRStream stream = null;

  if (streams.contains(PdfName.UF))
    stream = (PRStream)streams.getAsStream(PdfName.UF);
  else
    stream = (PRStream)streams.getAsStream(PdfName.F); // Default stream for backwards compatibility

  if (stream != null) {
    files.put( name.toUnicodeString(), PdfReader.getStreamBytes((PRStream)stream));
  }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何从 pdf 文件中提取附件? 的相关文章

随机推荐

  • Cypress,cy.visit() 尝试加载 ESOCKETTIMEDOUT 失败 [关闭]

    Closed 这个问题需要调试细节 目前不接受答案 致力于www github com cy visit 尝试加载 ESOCKETTIMEDOUT 失败 但在其他网站上没有 对我来说 通过在赛普拉斯配置中添加以下内容解决了问题 header
  • 禁用 ASP.NET-MVC3 中 unicode 字符的编码

    在我的网站上 每个文本都以 UTF 8 格式提供 由于现在每个浏览器都支持 unicode 字符 因此我想按原样使用它们 asp net 框架非常有用 它可以用数字字符引用替换任何 unicode 例如 225 供参考检查 http en
  • 自 Mac OS 10.11 El Capitan 起,具有系统完整性保护的 DYLD_LIBRARY_PATH 技巧的替代方案

    这是我所拥有的 Mac 操作系统 10 11 埃尔卡皮坦 python 2 7 12 从 python org 安装 Library Frameworks Python framework 皮查姆 2016 2 3 vtk 7 1 0 这是
  • curl_easy_perform:无法解析主机名

    我有一个奇怪的问题libcurl 它拒绝解析特定的 URL 返回错误消息 无法解析主机名 它在解析其他主机时没有任何问题 我怀疑原因是失败的 URL 返回 302 重定向 但我已经为其设置了适当的选项 有问题的网址 http serverm
  • 如何将Webcam集成到Java的Swing应用程序中?

    我正在 swing Java 中创建一个 GUI 应用程序 我必须将网络摄像头与我的 GUI 集成 有人对此有想法吗 下载并安装JMF 将 jmf jar 添加到您的项目库中 下载图像采集卡源文件并将其添加到您的项目中 按如下方式使用它开始
  • 为什么不能将受约束的开放泛型类型转换为受约束类型?

    我想我一定错过了一些东西 为什么我不能编译这个 class Foo
  • 如何在Android中的ListView中显示图像列表?

    如何使用 ListView 显示图像列表 我正在运行时下载图像 图像总数不固定 我会从这样的事情开始 如果我的代码有问题 我当然会感谢任何评论 public class ItemsList extends ListActivity priv
  • 在带有 Java/JDBC 的 Oracle PL/SQL 中使用游标并获取结果

    我有一个像这样构建的 PL SQL 查询 DECLARE a NUMBER B NUMBER CURSOR cursor IS SOME SELECT QUERY BEGIN OPEN cursor LOOP SOME STUFF END
  • angularjs ui-router stateparams 在页面刷新时不可见丢失

    我正在开发一个有角度的项目 我在其中设置了状态 如下所示 stateProvider state UserPanel url user params userId null views content templateUrl AngView
  • Java JIT 编译器导致 OutOfMemoryError

    我们最近开始偶尔崩溃的一个应用程序 并显示一条有关 java lang OutOfMemoryError 为 Chunk new 请求 8589934608 字节 交换空间不足 的消息 我在网上环顾四周 到处的建议都仅限于 恢复到以前的 J
  • JPA 2 和 Hibernate 3.5.1 MEMBER OF 查询不起作用

    我正在尝试以下 JPQL 但它失败了 Query query em createQuery SELECT u FROM User u WHERE admin MEMBER OF u roles List users query query
  • 从 NFC 标签读取数据

    您好 我正在开发一个用于向 NFC 标签读取和写入数据的应用程序 我在从 NFC 标签读取数据时遇到问题 当我尝试读取数据时 我的应用程序第一次崩溃 当我第二次扫描标签时 应用程序读取数据时再次崩溃 请帮我解决这个问题 这是我的代码 提前致
  • 我可以将一个查询拆分为多个查询或创建并行性来加速查询吗?

    我有一张桌子avl pool 我有一个函数可以在地图上找到最接近该链接的链接 x y 位置 此选择的性能非常线性 该函数需要约 8 毫秒才能执行 所以计算一下这个 select 1000 行需要 8 秒 或者正如我在此示例中所示 20 00
  • 抛出格式异常 C#

    我试图在有人在提示输入年龄时尝试输入非整数字符的实例中抛出格式异常 Console WriteLine Your age age Int32 Parse Console ReadLine 我不熟悉 C 语言 可以使用帮助来为此实例编写 tr
  • 反编译APK,修改它然后重新编译它

    我需要修改现有的 APK 修改源代码 然后重新编译它 我可以使用 dex2jar 或 apktool 反编译它 效果很好 从jar文件中我可以获得java源代码 使用jd gui 然后我可以修改java文件 但现在我想知道如何重新编译jav
  • StartCoroutine/yield 返回模式在 Unity 中到底如何工作?

    我了解了协程的原理 我知道如何达到标准StartCoroutine yield return在 Unity 中的 C 中工作的模式 例如调用一个方法返回IEnumerator via StartCoroutine并在该方法中做某事 做yie
  • Enum 类型属性的 RestSharp 反序列化

    我有一个对象 var testTcc new TrendingConfigurationConfigDto TrendingConfigurationId 1 ConfigId 1 DeviceId 1 Selected true YAxi
  • 手动安装 NPM 包

    我使用node windows installer v0 8 3来安装nodejs 当我尝试像这样安装express时 npm install express 它不起作用 我认为这是因为我的公司使用了代理 所以我从github下载了expr
  • 本机库加载时出现莫名其妙的 UnsatisfiedLinkError

    首先 也是最重要的 我的申请一般有效 我在所有四个 32 位 CPU ABI 上有许多客户端 并且他们运行该应用程序没有任何问题 本机库是为所有四种架构构建的 库就在那里 方法都就位并且命名正确 然而 我偶尔会收到无法加载本机库的异常报告
  • 如何从 pdf 文件中提取附件?

    我有大量 pdf 文档 其中附有 xml 文件 我想提取那些附加的 xml 文件并读取它们 如何使用 net 以编程方式执行此操作 iTextSharp 也非常有能力提取附件 尽管您可能必须使用低级对象来执行此操作 有两种方法可以在 PDF