检测 PDF 中丢失/损坏的 Unicode 映射

Mag*_*es3 4 java pdf unicode fonts pdfbox

从某些 PDF 中提取文本时,PDFBox 会返回乱码。这是因为 Unicode 映射丢失或损坏。我可以在控制台上看到以下警告。我希望能够检测到这一点,以便能够将这些 PDF 标记为已损坏。

我正在寻找比解析日志更好的解决方案。

谢谢你的帮助!

示例控制台日志:

WARNING: No Unicode mapping for CID+32 (32) in font F6
WARNING: Failed to find a character mapping for 32 in TimesNewRoman,Bold
Run Code Online (Sandbox Code Playgroud)

下面提到的帖子也讨论了同样的问题,但没有讨论能够在代码端检测到这一点并处理相同问题的方法:使用 PDFBox 从 PDF 中读取一些 unicode 字符的问题

Til*_*err 5

第四种可能性(在 Aaron Digulla 答案中给出的三种可能性旁边)是showGlyph()在扩展PDFTextStripper类时覆盖:

protected void showGlyph(Matrix textRenderingMatrix, PDFont font, int code, String unicode, Vector displacement) throws IOException
{
    super.showGlyph(textRenderingMatrix, font, code, unicode, displacement);
    if (unicode == null || unicode.isEmpty())
    {
        // do stuff
    }
}
Run Code Online (Sandbox Code Playgroud)