是否有一个库/工具可以列出 PDF 文档中使用的所有颜色?
我确信 Acrobat 本身会这样做,但我想要一个替代方案(最好是可以编写脚本的东西)。
所以这个想法是,如果你有一个非常简单的 PDF 文档,其中有四种颜色,输出可能会说:
RGB(100,0,0)
RGB(105,0,0)
CMYK(0,0,0,1)
CMYK(1,1,1,1)
您可以使用pdfbox探索内部,但您必须编写一些代码来查找和分类所有这些颜色。
大多数 PDF 工具都可以访问这些信息,但没有 api 可以访问它。您可以使用任何工具并将其添加到
Apago PDFspy 生成一个 XML 文件,其中包含从 PDF 文件中提取的各种元数据。它报告颜色使用情况,包括专色。
我们最近向 Quick PDF Library - www.quickpdflibrary.com 添加了一个名为 GetPageColorSpaces(0) 的函数,以检索文档中使用的大部分 ColorSpace 信息。
这是一些示例输出。
资源,\"QuickPDFCS2eb0f578\",分色,\"HKS 52 E\",DeviceCMYK,0.95,0,0.55,0
资源,\"QuickPDFCSb7b05308\",分色,\"黑色\",DeviceCMYK,0,0,0 ,1
资源,\"QuickPDFCSd9f10810\",分色,\"Pantone 117 C\",DeviceCMYK,0,0.18,1,0.15
资源,\"QuickPDFCS9314518c\",分色,\"All\",DeviceCMYK,0,1 ,0,0.5
资源,\"QuickPDFCS333d463d\",分色,\"noplate\",DeviceCMYK,1,0,0,0
资源,\"QuickPDFCSb41cafc4\",分色,\"noprint\",DeviceCMYK,0,1 ,0,0
资源,\"Cs10\",DeviceN,Black,Colorant,-1,-1,-1,-1
资源,\"Cs10\",DeviceN,P1495,Colorant,-1,-1,- 1,-1
资源,\"Cs10\",DeviceN,CalRGB,Colorant,-1,-1,-1,-1
资源,\"Cs10\",分离,\"P1495\",DeviceCMYK,0,0.31,0.69,0
XObject,\"R29\",图像,,DeviceRGB,-1,-1,-1,-1
免责声明:我在 Atalasoft 工作。
我们的产品,带有PDF 阅读器插件的DotImage,可以做到这一点。最简单的方法是栅格化页面,然后使用我们的任何图像分析工具来获取颜色。
这个例子展示了如果你想对相似的颜色进行分组时如何做——部署的例子只适用于 PNG 和 JPEG,但如果你下载代码,包含附加组件并获取 PDF 是微不足道的(让我知道您是否需要帮助)
来源:
http://www.atalasoft.com/cs/blogs/31appsin31days/archive/2008/05/30/color-scheme-generator.aspx
在这里运行它:
如果您正在处理来自受限来源的特定且简单的 PDF 文档,那么您可以通过阅读内容流来找到颜色。然而,这不能是一个通用的解决方案。
例如,PDF 文档可以包含渐变或透明度。如果您的文档包含这种类型的结构,那么您最终可能会得到多种颜色而不是特定的颜色。
同样,许多 PDF 文档包含位图图像。鉴于需要对这些进行插值以以不同的分辨率显示,因此显示的 PDF 中的颜色集可能与嵌入位图更大或不同(尽管显然与嵌入位图大体相似)。
同样,许多 PDF 文档包含多个颜色空间中的构造,这些构造被渲染到不同的颜色空间中。例如,PDF 可能包含 DeviceRGB 位图、基于 ICC 的 CMYK 颜色中的线和基于 Lab 的矩形。显示的版本可能是 sRGB 用于显示或 CMYK 用于打印。这些中的每一个都会影响精确的颜色集。
因此,唯一 100% 有效的答案将与特定颜色空间的特定分辨率的特定 PDF 渲染相关。从生成的位图中,您可以确定已使用的颜色。
有多种 PDF 库可以进行这种类型的渲染,包括 DotImage(在另一个答案中引用)和 ABCpdf .NET(我在其中工作)。