我使用 pdfium 查看 pdf 文件并与之交互(C++ 与 Qt 项目)。当我尝试获取在 Adobe Acrobat Reader 中创建的突出显示文本的颜色时,我没有得到有效的颜色。我得到了这个突出显示的文本的评论,还有位置。
当我使用 Foxit Reader 创建这个亮点时,一切正常。
这就是我尝试获取颜色的方式:
unsigned int R, G, B, A;
if (FPDFAnnot_GetColor(oAnnot, FPDFANNOT_COLORTYPE_Color, &R, &G, &B, &A))
{
oColor = QColor(R, G, B, A);
return true;
}
if (FPDFAnnot_GetColor(oAnnot, FPDFANNOT_COLORTYPE_InteriorColor, &R, &G, &B, &A))
{
oColor = QColor(R, G, B, A);
return true;
}
int objects = FPDFAnnot_GetObjectCount(oAnnot);
for (int i = 0; i < objects; i++)
{
FPDF_PAGEOBJECT object = FPDFAnnot_GetObject(oAnnot, i);
if (FPDFPageObj_GetFillColor(object, &R, &G, &B, &A))
{
oColor = QColor(R, G, B, A);
return true;
}
if (FPDFPageObj_GetStrokeColor(object, &R, &G, &B, &A))
{
oColor = QColor(R, G, B, A);
return true;
}
}
在pdfium注解的头文件中注明:
在已定义外观流的注释上调用时失败;而是使用 FPDFPath_Get{Stroke|Fill}Color()。
但它不起作用。也许我需要直接访问外观流?