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_value
:https://www.pdflib.com/tet-cookbook/text/glyphinfo/
只需复制方法 print_color_value
、return csname
(或 if 块中的 colorantname
)并将方法重命名为例如getColorValue
.
如果需要,请丢弃格式化程序。
我的需求是用 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_value
:https://www.pdflib.com/tet-cookbook/text/glyphinfo/
只需复制方法 print_color_value
、return csname
(或 if 块中的 colorantname
)并将方法重命名为例如getColorValue
.
如果需要,请丢弃格式化程序。