java - 如何使用 Java 计算 PDF/Word 文档中的彩色页面

标签 java pdf

我正在寻求使用 Java 开发桌面应用程序以计算 PDFWord 文件中彩色页面的数量。这将用作整个系统的一部分,以帮助根据页数(彩色/黑白)计算打印文档的成本

理想情况下,应用程序的用户可以使用文件对话框来选择所需的 PRF/Word 文件,然后应用程序可以计算并输出彩色页面的数量,从而使系统可以相应地自动计算文档成本。

即 如果 A4 彩色页面每页打印成本为 50c, 黑白每页 10 美分, 计算每个彩色/黑白页面的文档总成本。

我知道现有软件 Rapid PDF Count http://www.traction-software.co.uk/rapidpdfcount/ , 但不适合作为集成到新系统中的一部分。我也尝试按照此解决方案使用 GhostScript/Python:http://root42.blogspot.de/2012/10/counting-color-pages-in-pdf-files.html ,但是这会花费太长时间(计算 100 页 pdf 需要 5 分钟),并且很难在桌面应用程序中实现。

是否有任何方法可以使用 Java(或其他语言)计算 PDF 或 Word 文件中彩色页面的数量

谢谢

最佳答案

虽然这听起来很容易,但任务相当复杂。

一种选择是使用 iText 等程序来 walk every single token in the PDF ,寻找支持颜色的标记并将其与您对“黑色”的定义进行比较。但是,这只会为您提供基本的文本和绘图命令。图像是完全不同的野兽,因此您可能需要找到一个图像解析器或获取每个规范的副本,然后逐一进行。

token 遍历的缺点之一是您需要正确处理引用其他事物的 token 并进一步遍历这些 token 。

另一个缺点是事物可能会相互重叠,因此您可能需要了解它们的坐标、z-index、透明度等。

路上会有更多的颠簸,但这是一个好的开始。最有趣的是,如果您完成此操作,您实际上会发现您已经部分构建了一个 PDF 渲染器!

接下来,您需要定义“黑色”。在我的脑海中,有 RGB 黑色、CMYK 黑色、灰色黑色,也许还有 Lab 黑色以及一些 Pantones。这不应该太难,但如果我要构建它,我想知道“空白墨水的使用”,它也可能是灰色阴影。您可能还需要处理“丰富的空白”!

综上所述,我认为您找到的 GhostScript 选项确实是最好的选择。它从字面上呈现 PDF 并从 RGB 角度计算墨水覆盖率。你也应该处理灰色,但这不应该太难,here's a good starting point .

关于java - 如何使用 Java 计算 PDF/Word 文档中的彩色页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30644722/

相关文章:

java - 使用Java jersey和Spring Security进行的Pdf下载在初始化 postman 的请求时给出错误

iOS pdf在特定坐标处缩放

javascript - jsPDF 对齐文本

c# - Android 手机在 ASP.Net 站点回发后无法打开流式传输的 PDF

java - 写入 PDF 文件时,图像上绘制的形状会反转

java - 日常网络运营的最佳方式

java - 关于线程和进程的一个问题

java - 有没有办法替换 .json 文件内字符串中的括号?

java - AndEngine GLES 2 - 黑屏,无错误

javascript - 错误 : Resource interpreted as Document but transferred with MIME type application/pdf