PoDoFo 润色字符和 PdfContentsTokenizer 错误

PoDoFo polish characters & PdfContentsTokenizer error

1.

如何从 pdf 文件中获取波兰语字符?我能以某种方式告诉

PdfVariant::getString()

它会处理抛光字符吗? 因为我得到的是 0 而不是 ł,有趣的是,只有当 ł 作为第一个 "nonbase" 字符出现时才会这样。因此,如果 pdf 文件以 aaaałęąaaaa 开头,ł 编码为 0ę1ą 为 [=22] =] 如果pdf文件以aaaaąęłaaaa开头,ł编码为2ę编码为1ą 喜欢 0 我怎样才能在任何系统中获得这些字符?

2.

当我尝试从 pdf 文件中提取文本时,我会这样做:

string input_name = "example.pdf";
PdfMemDocument pdf(input_name.c_str());
    for (int pn = 0; pn < pdf.GetPageCount(); ++pn) {
        PdfPage* page = pdf.GetPage(pn); 
        PdfContentsTokenizer tok(page);
        const char* token = nullptr;
        PdfVariant var;
        EPdfContentsType type;
        while (tok.ReadNext(type, token, var)) {
           //etc.

但我遇到了问题 PdfContentsTokenizer tok(page); 它不能正常工作。对于某些 pdf 文件,它运行顺利,而对于其他文件,它会在 inffas32.asm 文件 669 行:

中抛出 Access violation reading location 错误
L_get_length_code_mmx:
pand mm4,mm0
movd eax,mm4
movq mm4,mm3
mov  eax, [ebx+eax*4]//this is the error line

顺便说一句,我注意到并不是每个 pdf 文件都以相同的方式编码。例如,使用 podofobrowser 我无法从官方的 podofo helloworld 示例中看到 Hello World! 文本。对于其他 pdf 文件,podofobrowser 以不同的方式显示文本或根本不显示。

广告 1. The link to patch files 允许使用 TextExtractor.

从 pdf 中提取润色文本

这是从 pdf 中提取非 unicode 文本时最重要的一行:

PdfString unicode = pCurFont->GetEncoding()->ConvertToUnicode( rString, pCurFont );

广告 2. 问题是构建错误的 zlib 库。我rebuit它,重建podofo,问题消失了。