在我们公司中,我们正在使用tcpdf创建pdf。这些pdf将通过使用最新pdfbox的Java应用程序下载和打印。
通常将它们打印出来没有问题,但有时我们会在其中包含中文/日语字符的文档。
对于这些字符,将使用字体(类型)cid0ct。
如果我在pdf查看器中打开此类pdf,则查看它没有问题。原生窗口,原生macOS,Chrome pdf查看器,一切正常。
如果我尝试打印(或转换为图像)这样的pdf文件,由于使用后备字体,我只会收到一些警告,但它始终使用错误的字体,因此会丢失许多字形。
用于转换的命令行命令:
java -jar pdfbox-app-2.0.12.jar PDFToImage invoice_1001606.pdf
结果(缩短):
Okt 17, 2018 10:29:59 AM org.apache.pdfbox.pdmodel.font.PDCIDFontType0 <init>
WARNUNG: Using fallback BrushScriptMT for CID-keyed font cid0ct
Okt 17, 2018 10:29:59 AM org.apache.pdfbox.rendering.CIDType0Glyph2D getPathForCharacterCode
WARNUNG: No glyph for 20013 (CID 0295) in font cid0ct
Okt 17, 2018 10:29:59 AM org.apache.pdfbox.rendering.CIDType0Glyph2D getPathForCharacterCode
WARNUNG: No glyph for 38920 (CID 0db2) in font cid0ct
Okt 17, 2018 10:29:59 AM org.apache.pdfbox.rendering.CIDType0Glyph2D getPathForCharacterCode
我安装了完整的google fonts软件包进行测试,但pdfbox再次选择了错误的字体:
Okt 18, 2018 8:09:19 AM org.apache.pdfbox.pdmodel.font.PDCIDFontType0 <init>
WARNUNG: Using fallback Jua-Regular for CID-keyed font cid0ct
将字体嵌入到pdf中是不可行的,因为我们(或我们的客户)每天都会生成数千个文档,这会增加pdf的大小。
我创建了一个示例pdf文件,其中包含一些中文/日语字符: Google Drive - invoice_12.pdf
也许您对如何设置正确的后备字体有一些想法,或者您知道要使用/安装正确的字体。
我唯一的想法是向tcpdf添加自定义字体,我也可以在操作系统上安装它。