4

假设我们有一个包含可点击内容页面的 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

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

4

2 回答 2

4

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

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

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

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

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

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

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

于 2012-12-31T09:19:14.983 回答
1

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

pdf库

您也可能想查看此 CodeProject 站点以获取一些示例 在 C# 中将 PDF 转换为文本

于 2012-12-30T20:45:09.647 回答