【问题标题】:pdfbox extract color font on a pdf errorpdfbox在pdf错误上提取颜色字体
【发布时间】:2013-07-15 22:08:51
【问题描述】:

大家好,对不起我的英语水平,但我不是英国人/美国人。

我的问题是下一个:我尝试使用在示例中发布在本网站 (How to get font color using pdfbox) 中的示例代码,作者说该代码已尝试但当我尝试时它向我显示此错误:

2013 年 7 月 17 日下午 1:05:28 org.apache.pdfbox.util.PDFStreamEngine processOperator 信息:不支持/禁用操作:BDC 2013 年 7 月 17 日下午 1:05:29 org.apache.pdfbox.util.PDFStreamEngine processOperator 信息:不支持/禁用操作:EMC 设备灰色 org.apache.pdfbox.pdmodel.graphics.color.PDColorState@481958 0.0

我提取内容的 pdf 3 个字母 (RGB) 已绘制:

R:涂成红色 G:涂成绿色 B:涂成黑色

有人可以解释一下,因为这个错误告诉我如何从 pdf 中提取彩色文本?

感谢所有期货 cmets

【问题讨论】:

    标签: pdf text fonts colors pdfbox


    【解决方案1】:

    这些日志输出的级别仅为 INFO,而不是错误:

    jul 17, 2013 1:05:28 PM org.apache.pdfbox.util.PDFStreamEngine processOperator INFO: unsupported/disabled operation: BDC
    jul 17, 2013 1:05:29 PM org.apache.pdfbox.util.PDFStreamEngine processOperator INFO: unsupported/disabled operation: EMC 
    

    他们所说的只是在未注册处理器的页面内容中遇到了某些运算符(BDC、EMC)。但由于这些运算符仅用于分析标记的内容,因此您的任务可以忽略这些运算符。

    之后你得到了你引用的代码的输出:

    DeviceGray
    org.apache.pdfbox.pdmodel.graphics.color.PDColorState@481958
    0.0
    

    至少第一行和最后一行与该代码匹配:遇到灰度值为 0 的 DeviceGray 灰色颜色,很可能是黑色 B。 (是否您在两者之间添加了额外的输出,例如graphicState.getStrokingColor()?)

    因此,没有错误,一切正常。

    【讨论】:

    • 感谢您的回答。不,我没有添加额外的输出,只是尝试了代码,因为我需要提取具有 3 种颜色文本的 pdf 上的文本,并且我需要提取每个文本。我没有足够的使用 PDFBOX 的经验,然后我尝试使用这些示例,但与我不同的是,没有向我显示提取文本的颜色 RGB。只是向我展示了 DeviceGray 0.0,文本以 3 种颜色(红色、蓝色和绿色)书写。可能是没有包含导入的 PageDrawer 属性?
    • 代码显示整个流处理后的颜色。通常在流中存储当前状态,完成某些操作,然后恢复之前的状态。这可能解释了所有完成后的当前颜色是黑色。我认为你想从PDFStreamEngine 派生类似于PDFTextStripper,但processTextPosition 也考虑到当前颜色。
    • 使用 PDFStreamEngine 和 proceesTextPosition 我可以按每个字符的颜色提取文本?
    • 当您在proceesTextPosition,时,您可以查询当前TextPosition文本绘制时的图形状态。
    猜你喜欢
    • 1970-01-01
    • 2016-11-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-19
    • 2018-11-02
    • 1970-01-01
    相关资源
    最近更新 更多