正如标题所说。我问的原因是我们正在将 PDF 转换为格式化的 ASCII 文本(使用 pdftotext)并且只想显示那些看起来合理的文本。
PPT 文件往往在图像、对角线文本和其他不能很好地转换为 ASCII 的内容上包含文本,所以如果可以的话,我们希望将它们过滤掉。
正如标题所说。我问的原因是我们正在将 PDF 转换为格式化的 ASCII 文本(使用 pdftotext)并且只想显示那些看起来合理的文本。
PPT 文件往往在图像、对角线文本和其他不能很好地转换为 ASCII 的内容上包含文本,所以如果可以的话,我们希望将它们过滤掉。
PDF 的创建应用程序列在其 XMP 元数据中。您可以在 Acrobat 9 中很容易地看到这一点(我相信更早):转到File > Properties
,单击Additional Metadata...
,然后转到Advanced
它列在XMP Core Properties和PDF Properties下:
xmp:CreatorTool: Microsoft PowerPoint
pdf:Creator: Microsoft PowerPoint
我猜您想以编程方式找到它,因此您需要找到一个库来读取适用于您的语言的元数据。这是一些 XMP 工具的列表。
简短的回答:
不,我不这么认为。
长答案:
不,我不这么认为,因为有很多方法可以将 PowerPoint 文件转换为 pdf,例如 Adobe Acrobat 和 PDFCreator 以及许多其他方法。转换器可以在 PDF 文件中嵌入特定信息,即使您找到一种方法来检测来自一个转换器的 PowerPoint 源 pdf,同样的方法可能不适用于另一个。
更长的答案:
不,我不这么认为,因为“长答案”中描述的原因。而且我不认为检测 PDF 的来源是解决您要解决的问题的最佳方法。不仅仅是 PowerPoint 会产生重叠的文本和图像。我认为检测 PDF 文件的实际布局要好得多。如果有图像和文本的叠加,那么你会做一些过滤或预处理来满足它。
您的推理非常武断-肯定有很多没有您描述的功能的 PPT 文件,还有很多带有它们的 PDF 文件,它们是从另一个来源生成的。
理论上,更好的方法是检测这些“不需要的”情况何时发生。然而,即使 PDF 格式是部分开放的(显然,仅用于阅读,因此它不是真正的开放格式),提取这样的复杂数据将非常困难。
无论来源如何,所有 PDF 都可能存在此问题。大多数桌面出版套件都能够输出 PDF,并且经常以高品质和更华丽的 PDF 演示文稿出售...
“更明智”的方法是使用 PDF 解析器、ITextSharp 或 pdfNet...等,使用您选择的库,查找所有图像矩形和所有文本矩形,对矩形进行排序,然后查看是否有大量文本和图像矩形的重叠——忽略图像到图像的重叠。如果是这样,请拒绝该页面和/或文档。
这并不完美,但至少它会捕获许多不健全的 PDF,无论来源如何。要添加的其他启发式方法包括颜色分析。(即重叠区域中的颜色是否足够不同以允许“正常”结果?)
祝你好运
它可能会把它的名字放在创作者或制作者信息中,但我没有副本可以用来检查这个理论。
通常,以编程方式(可靠地)确定文件的来源或根据其内容生成文件的方式并非易事。毕竟,文件只是位的集合。
除非您有大量资源来构建启发式方法来根据您的需要确定文件是否看起来“合理健全”,否则我会认为这是人类的任务。
一些从 ppt 到 pdf 的转换器在 pdf 开头的评论中保留了创建者。
我认为大多数应用程序生成的 PDF 似乎是相同的。它可能有一些你可以从文件中读取的元数据......