首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用Java计算PDF/Word文档中的颜色页

如何使用Java计算PDF/Word文档中的颜色页
EN

Stack Overflow用户
提问于 2015-06-04 13:11:18
回答 2查看 3.6K关注 0票数 2

我希望开发一个使用Java的桌面应用程序来,计算、PDF、或Word文件中的彩色页面数。这将作为一个整体系统的一部分来帮助计算打印文档的成本,根据页面的数量(颜色/B&W)。

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

也就是说,如果A4彩色页面的打印成本为每页50c,而B&W值为每页10c,则计算每个彩色/B&W页的文档总成本。

我知道现有的软件快速PDF计数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文件中彩色页数的方法?

谢谢

EN

回答 2

Stack Overflow用户

发布于 2015-06-04 17:00:19

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

一种选择是使用像iText to walk every single token in the PDF这样的程序,查找支持颜色的标记,并将其与“黑色”的定义进行比较。但是,这只会得到基本的文本和绘图命令。图像是完全不同的东西,所以您可能需要找到一个图像解析器,或者抓取每个规范的副本,然后遍历每个规范。

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

另一个缺点是,事情可能会重叠,所以你可能想知道他们的坐标,z索引,透明度等等。

道路上还会有更多的颠簸,但这是一个好的开始。最有趣的是,如果你做到了这一点,你会发现你已经建立了部分PDF渲染!

接下来,您需要定义“黑色”。在我的头顶上有RGB黑色,CMYK黑色,灰色黑色,也许实验室黑色和一些潘通。这应该不难,但如果我要建立这个,我会想知道“空白墨水的使用”,这也可能是灰色的阴影。也有“丰富的空白”,你可能需要处理,也!

所以说,我认为你找到的GhostScript选项确实是最好的选择。它逐字逐句地呈现PDF并从RGB的角度计算墨迹覆盖范围。你还是应该处理格雷的,但这不应该太难,here's a good starting point

票数 1
EN

Stack Overflow用户

发布于 2015-06-04 20:31:52

想知道点击费将会是什么是一个很常见的问题,但这是不容易解决的。正如克里斯·哈斯给出的答案所表明的那样,但我想再讲一遍。

首先,你必须想知道你是否真的想同时支持Word和PDF文档。分析Word文件没有您想象的那么有用,因为在打印单词文件之前,可能会将其转换为其他文件。因为你是从Word开始的,你在Word中漂亮的RGB黑色文本被转换成不太完美的4色( PDF格式的黑色)的可能性很高。换句话说,即使你可能把一页黑色的文字在单词中算作“便宜”的页面,但在从Word转换到可以打印的东西之后,它可能会变成一个昂贵的彩色页面。

那么,让我们考虑PDF的情况。PDF支持整个颜色空间(灰色,RGB,CMYK,与国际商会的配置文件,斑点颜色和一些多点颜色变体,CalGray,CalRGB和实验室相同。此外,有一系列非常棘手的特点,如透明度,重印,阴影,图像,面具.你们都必须考虑到。计算所需内容的唯一真正好的方法是做与打印机基本相同的工作;将PDF转换为每页一张图像并检查像素。

由于你想要做的事情,最好的方法是:

1)将任何单词文件转换为PDF格式。

2)将任何PDF文件转换为CMYK

3)将CMYK文件的每一页呈现为图像。

一旦你这样做了,你可以检查图像,看看你是否还有任何颜色。有许多潜在的技术可用于此。GhostScript无疑是其中之一,但也有一些商业解决方案,这些解决方案肯定会更昂贵,但可能更快。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30644722

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档