我想使用模板自动生成一些中文PDF文档,这就是我所做的:
AcroField
设置在正确的位置。AcroField
的字体设置为STXiHei
。代码如下:
BaseFont STXiHei = BaseFont.createFont(getResource("STXiHei.ttf"), BaseFont.IDENTITY_H, BaseFont.EMBEDDED);
PdfReader reader = new PdfReader(getResource("template.pdf"));
FileOutputStream stream = new FileOutputStream("doc.pdf");
PdfStamper stamper = new PdfStamper(reader, stream);
AcroFields form = stamper.getAcroFields();
form.setField("Buyer_Name", "购货方");
stamper.setFormFlattening(true);
form.setFieldProperty("Buyer_Name", "textfont", STXiHei, null);
form.addSubstitutionFont(STXiHei);
stamper.close();
我必须使用字体STXiHei
,我的模板中的中文文字是这个字体。
问题是:我无法完全控制输入文本的字体。一些应用程序可以正确呈现(Adobe Reader),其中一些使用替换字体(Chrome),其中最糟糕的是崩溃(某些Android PDF呈现库)。
我认为这是因为我没有为输入文本嵌入STXiHei
,这可以从字体页面确认:
你可以看到最后一个与其他的不同,编码与我输入的不同。那么我该如何解决这个问题?