【问题标题】:How to generate pdf with 'to Unicode' map using wkhtmltopdf?如何使用 wkhtmltopdf 生成带有“to Unicode”映射的 pdf?
【发布时间】:2016-11-24 09:58:52
【问题描述】:

我目前正在使用 wicked_pdf(wkhtmltopdf) 从 html 创建 pdf 文件。但是,我无法正确复制/粘贴 pdf 中的内容。浏览网页后,我猜这个问题可能是 pdf 不包含用于将字形匹配回 unicode 的“to unicode”映射。

示例 pdf:https://github.com/wkhtmltopdf/wkhtmltopdf/files/611265/sample.pdf

pdf 的第一行:वे ब चे कूल नह जाते थे। पूरा दन मैदान म घूमते थे।

许多变体在复制时会丢失。这可能是什么问题?

另外,有没有办法检查 'to unicode' 映射是否存在于 pdf 文件中?

另外,如何使用 wkhtmltopdf 正确生成带有“to unicode”映射的 pdf 文件?

【问题讨论】:

    标签: pdf unicode pdf-generation wkhtmltopdf wicked-pdf


    【解决方案1】:

    很遗憾,我无法告诉您如何解决您的问题,但是..

    示例 PDF 确实具有如源代码中所示的 ToUnicode 属性

    << /Type /Font
    /Subtype /TrueType
    /BaseFont /WHROBO+NotoSansDevanagari
    /FirstChar 32
    /LastChar 51
    /FontDescriptor 14 0 R
    /Encoding /WinAnsiEncoding
    /Widths [ 259 0 0 0 0 0 0 0 0 0 0 0 0 0 268 0 0 0 0 550 ]
    /ToUnicode 12 0 R
    >>
    

    ToUnicode 指向:

    12 0 obj
    << /Length 13 0 R
       /Filter /FlateDecode
    >>
    stream
      ...
    endstream
    endobj
    

    这个流似乎不够长,并且宽度没有在字体定义的 Widths 属性中设置(或者只是不包括字符)。当我运行您通过 docca.io 提供的单行示例时,我得到:

    << /Type /Font
    /Subtype /TrueType
    /Name /F1
    /BaseFont /DOCCAA+NotoSansDevanagari
    /Encoding /MacRomanEncoding
    /FontDescriptor 7 0 R
    /FirstChar 32
    /LastChar 62
    /Widths [260 551 551 551 551 551 551 551 551 551 551 762 591 634 742 570 642 520 555 568 571 598 409 678 556 531 259 488 488 488 379]
    /ToUnicode 8 0 R
    >>
    
    8 0 obj
    << /Length 347
    /Filter /FlateDecode
    /Length1 667 >>
    stream
      ...
    endstream
    endobj
    

    所以字符映射要长得多,尽管它的字符要少得多。

    出于兴趣,这是否正确呈现?您的示例文本对我来说看起来有点不同,但我不阅读梵文 8)。

    【讨论】:

      猜你喜欢
      • 2014-07-03
      • 2015-07-14
      • 2014-07-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-13
      • 2012-08-25
      相关资源
      最近更新 更多