【问题标题】:How to count color pages in a PDF/Word doc using Java如何使用 Java 计算 PDF/Word 文档中的彩色页面
【发布时间】:2015-08-19 02:48:10
【问题描述】:

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

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

即 如果 A4 彩色页面的打印成本为每页 50 美分, 黑白每页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,但是这需要很长时间(5 分钟才能计算 100 页 pdf),并且很难在桌面应用程序中实现。

有没有使用 Java(或替代语言)计算 PDF 或 Word 文件中彩色页面数量的方法

谢谢

【问题讨论】:

    标签: java pdf


    【解决方案1】:

    虽然听起来很简单,但任务相当复杂。

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

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

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

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

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

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

    【讨论】:

    • 非常详尽的回答,谢谢!将调查指定的 iText 解决方案,但看起来某种形式的 Ghostscript 实现是前进的方向
    【解决方案2】:

    想知道点击费用是多少是一个很常见的问题,但解决起来并不容易。正如 Chris Haas 给出的答案已经表明的那样,但我想再解释一下。

    首先,您必须想知道您是否真的想要同时支持 Word 和 PDF 文档。分析 Word 文件并没有您想象的那么有用,因为该 Word 文件在打印之前可能会被转换为其他文件。而且由于您是从 Word 开始的,因此 Word 中漂亮的 RGB 黑色文本被转换为 PDF 中不完美的 4 色黑色的可能性非常高。换句话说,即使您可能将 Word 中的一页黑色文本视为“廉价”页面,但在从 Word 转换为可打印的内容后,它可能会变成昂贵的彩色页面。

    然后让我们考虑 PDF 案例。 PDF 支持大量颜色空间(灰色、RGB、CMYK,与附加的 ICC 配置文件相同、专色和一些多专色变体、CalGray 和 CalRGB 和 Lab。除此之外,还有一系列非常棘手的透明度、叠印、阴影、图像、遮罩等特性……您都必须考虑在内。计算所需内容的唯一真正好方法是做与打印机基本相同的工作;转换 PDF每页一张图片并检查像素。

    因为你想做的事,最好的进步方式是:
    1) 将任何 word 文件转换为 PDF
    2) 将任何 PDF 文件转换为 CMYK
    3) 将该 CMYK 文件的每一页呈现为图像。

    完成后,您可以检查图像并查看是否还有任何颜色。您可以为此使用许多潜在的技术。 GhostScript 绝对是其中之一,但也有一些商业解决方案肯定会更昂贵但可能更快。

    【讨论】:

    • 您好,感谢您的回答,我不打算专门支持 PDF 和 Word,这只是一个建议,以防万一有特定于 Word 的解决方案。有关计算颜色的信息将非常有用。谢谢
    猜你喜欢
    • 2022-12-06
    • 2011-12-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-31
    • 1970-01-01
    • 2011-11-10
    • 1970-01-01
    相关资源
    最近更新 更多