【问题标题】:Getting Dictionary of values from PDF's Internals using iTextSharp and PDFsharp使用 iTextSharp 和 PDFsharp 从 PDF 内部获取值字典
【发布时间】:2012-07-13 19:40:40
【问题描述】:

我有一个项目,我需要拆分非常大的 PDF 文件,每个文件包含 150 到 20 万页。我目前正在使用 iTextSharp DLL 来拆分一些具有可由 Adob​​e Reader 创建的“标准”书签的 PDF。我还使用 PDFsharp 从没有这些“标准”书签的 PDF 中提取文本,然后我将它们从数据库中解析为关键字并将它们拆分为更小的 PDF。然而,与第一种方法相反,这是非常慢。


但是,没有“标准”书签的 PDF 有索引/书签。 问题是这些是由 SOLindexer(Link to product page) 创建的。我能够在内部 COS 树中找到这些索引/书签。 PDF 内部结构中到我想要到达的位置的路径是“trailer/Info/SSEDictionary/Document_MemberStatements”。在这个目录中(如果可以这样称呼的话)我可以点击 -DATA- 并打开一个记事本文件,其中包含我需要的所有帐号、姓名和东西(当然格式很奇怪,但可读),我相信这些是我可以放入字典的值。


在 iTextSharp 和 PDFsharp 中,您可以通过例如 var stuff = reader.Info.Valuesvar stuff = reader.Info.Keys 来访问信息部分,但这些似乎是死胡同,因为我无法从中获取 SSEDictionary 内容那里。 iTextSharp 还允许您查看预告片,并且我能够从那里获取密钥,但过去我无法深入到最低级别。我知道有一种方法可以使用 PDFsharp 从内部获取东西,如下所示:

PdfSharp.Pdf.PdfDocument inputDocument = PdfSharp.Pdf.IO.PdfReader.Open(MapPath("PDFs/Member Statements/06-2012.pdf"), PdfDocumentOpenMode.ReadOnly);
PdfSharp.Pdf.PdfDictionary dictionary = (PdfSharp.Pdf.PdfDictionary)inputDocument.Internals.Catalog.Elements.GetObject("/Outlines"); 

但是,我无法弄清楚如何使其适应我目前的情况以及获得所需东西的途径。此外,我不太确定如何在 iTextSharp 中执行此操作(我最喜欢两者图书馆)。因此,我的问题是:您将如何在代码中获得字典(我相信我打开的文本文件中的所有内容都是如此)?另外,该代码会是什么样子?我对 PDF 的内部结构有相当的了解,但我只是不知道如何到达那里。谢谢!

【问题讨论】:

  • 能否用一个简短的编程相关问题替换这堵文字墙?
  • 我在做的时候想过这个问题,但我觉得我无法更简洁地解释我的情况。
  • 分离成不同的段落会有所帮助...

标签: c# asp.net pdf itextsharp pdfsharp


【解决方案1】:

PDFVole 是基于 iText 的开源工具,可让您浏览 PDF 文件的内部结构。也许您可以看一下它的源代码并获得一些想法?如果我是你,我会从这个开始:PDFTreeParser.java

【讨论】:

  • 这很好,但它并没有完全让我到达那里。我真正感兴趣的是我是否可以将树底部的数据放入字典中。 PDFvole 似乎只获取 /Info 或 /Size 等树节点的名称,但我仍然无法深入了解。不过,感谢您的努力。
  • 我确实使用过它,而且我可以查看我需要的参数(如果可以这样称呼的话)。它们被称为 /ACCT_NUMBER 和 /CUSTOMER_NAME,它们位于 /SOLIINDEXDICT 下,但是,这并没有告诉我如何将这些值实际读入我可以使用的字典中。
  • 其实是个不错的程序,我很惊喜。
  • 我的建议是,在运行程序并查看它的作用之后,查看程序的源代码,以便您了解如何在程序上执行相同的操作。跨度>
  • 我查看了所有代码,但它仍然没有完全让我到达那里。请参阅我的帖子以获取更多信息。 forum.pdfsharp.net/viewtopic.php?f=2&t=2090
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-19
  • 1970-01-01
  • 2018-11-24
  • 1970-01-01
  • 1970-01-01
  • 2011-11-27
相关资源
最近更新 更多