【问题标题】:parsing a pdf file with clickable contents page解析带有可点击内容页面的 pdf 文件
【发布时间】:2012-12-30 20:40:02
【问题描述】:

假设我们有一个包含可点击内容页面的 pdf 文件。 (我说的是章节和子章节) 如何在 C# 中解析某个文件,以及应用程序如何实现它正在阅读的 pdf 是否有章节/内容等?

这是一个没有可点击目录的 pdf 链接 https://docs.google.com/open?id=0B1EbI-EMJxmkODE1Mm5WbFpEdXc 我似乎没有找到带有可点击目录的 pdf,但我在这里找到了如何操作的指南 http://everythingyoumightneed.blogspot.com/2013/01/how-to-create-pdf-with-clickable-links.html

所以我的问题是:应用程序如何区分哪个是哪个以及如何解析具有可点击链接的应用程序?

【问题讨论】:

  • iTextSharp 是您可能要考虑用于 PDF 分析的众多 PDF 库之一。但是您认为没有章节或内容的 PDF 是什么,您的标准是什么?
  • @mkl 我所知道的是两种 pdf 样式。一个是可点击的内容章节,另一个是简单的文本(可能包括一页内容但不可点击)我想要一种方法来定义是否有可点击的内容,以及如何解析这些内容
  • 也许您应该为这两种情况提供样本文件。不过,作为第一个预感,我认为您的意思要么是大纲,要么是注释。两者都可以使用 iTextSharp 或任何其他重要的 PDF 库轻松检查。
  • 在哪里上传文件以在此处共享?
  • 堆栈溢出仅提供图像上传,因此您必须使用不同的文件共享服务。请不要选择需要下载者注册的。

标签: c# c#-4.0 pdf pdf-parsing


【解决方案1】:

您的问题与试图找出段落和列在 PDF 文件中的位置没有什么不同; PDF 通常不会这样标记目录页面。所以即使有一个PDF库(比如mkl指出的iTextSharp),这也不是一件容易的事。

有了这样的库,您将能够看到 PDF 文件中的页面和页面上的文本。但是,如果这是一本书,目录页可能是 PDF 文件中的第一页、第二页、第三页或第 x 页,因为它前面出现了各种其他页面(封面、第二封、版权、致敬、你的名字...)。

因此,发现是否存在目录的算法必须能够在 PDF 文件的前 x 页中的某处发现它。由于没有标准的标签突出目录中的文本,这必须通过分析该页面上文本的格式来完成。

有两件事可能会有所帮助(如果有的话):

1) 在许多 PDF 文件中,表格中的项目是您所说的可点击的内容。因此,您可以查看 PDF 文件并尝试找到包含大量超链接项目的第一页。

2) 在许多 PDF 文件中,目录在书签中镜像。因此,您还可以检查书签结构,看看是否可以使用它来计算书中有多少章。

请记住,这两个功能都是可选的,如果存在,则不会标准化。

【讨论】:

  • 我所知道的是两种 pdf 样式。一个是可点击的内容章节,另一个是简单的文本(可能包括一页内容但不可点击)我想要一种方法来定义是否有可点击的内容,以及如何解析这些内容。我认为您已经定义了这一点,但请提供更多信息,因为我是菜鸟,需要更多帮助
【解决方案2】:

由于 PDF 是一种二进制格式,您必须使用 pdflib 之类的 pdf 库才能读取 pdf 文件。

pdfLib

您也可能想查看此 CodeProject 站点以获取一些示例 Converting PDF to Text in C#

【讨论】:

  • 这是另一个答案的复制粘贴,我需要一些更具体的东西(可能是你的答案,但我也需要在这里做一些解释)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-03-11
  • 1970-01-01
  • 1970-01-01
  • 2021-09-06
  • 1970-01-01
  • 2021-01-30
  • 1970-01-01
相关资源
最近更新 更多