PDFlib TET 获取当前颜色的名称

PDFlib TET get name of the current color

我的需求是用 PDFlib TET 读取文本的颜色。

作为基础,我正在使用这个 PDFlib 示例:https://www.pdflib.com/tet-cookbook/tet_and_pdflib/search_and_replace_text/

在两次 result.add(new rectangle(...)) 调用之前,我尝试像这样读取颜色:

    String csname = tet.pcos_get_string(doc, "colorspaces[" + tet.colorspaceid + "]/name");
    if ("Separation".equals(csname)) {
        String type = tet.pcos_get_string(doc, "type:colorspaces[" + tet.colorspaceid + "]/colorantname");
        System.out.println(type);
        if (StringUtils.equalsIgnoreCase("name", type)) {
            System.out.println(tet.pcos_get_string(doc, "colorspaces[" + tet.colorspaceid + "]/colorantname"));
        }
    }

不幸的是 tet.colorspaceid 总是 0。

但正确的 colorspaceid 是 6(“正确”= 文本实际使用的颜色索引)。我知道索引,因为我像这样遍历了所有颜色空间,对于 i=6,系统打印了预期颜色的名称:

    String type = tet.pcos_get_string(doc, "type:colorspaces[" + i + "]/colorantname");
    if (StringUtils.equalsIgnoreCase("name", type)) {
        System.out.println(tet.pcos_get_string(doc, "colorspaces[" + i + "]/colorantname"));
    }

tet.colorspaceid是当前找到的分词的colorspace的id,怎么办?

或者我完全错了,TET 以其他方式读取颜色?

找到了 - 在本例中,解决方案是方法 print_color_valuehttps://www.pdflib.com/tet-cookbook/text/glyphinfo/

只需复制方法 print_color_value、return csname(或 if 块中的 colorantname)并将方法重命名为例如getColorValue.

如果需要,请丢弃格式化程序。