我目前正在使用wicked_pdf(wkhtmltopdf)从html创建pdf文件。但是,我无法正确复制/粘贴pdf中的内容。浏览网页后,我猜测问题可能是pdf不包含'to unicode'地图,用于将字形匹配回unicode。
示例pdf:https://github.com/wkhtmltopdf/wkhtmltopdf/files/611265/sample.pdf
pdf中的第一行:वेबबेकूलनहजातेथे。 पूरादनमैदानमघूमतेथे。
复制时会丢失许多变体。这可能是什么问题?
另外,无论如何都要检查pdf文件中是否存在“unicode”地图?
另外,如何使用wkhtmltopdf使用'to unicode'映射正确生成pdf文件?
答案 0 :(得分:0)
不幸的是我不能告诉你如何解决你的问题,但是......
示例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
这是一个更长的char地图,即使它的字符少得多。