如何解决“ ...此字体的编码中不可用”?

乌兹

所以我正在使用PDFBox填写一些pdf。到目前为止,一切是伟大的-我创建了一个形式的PDF与艾文莉光字体,我可以填满它。然而,这只是现在出现了,问题是,当我试图如填写使用字母PDF格式。łąć...我收到以下错误:

U+0142 is not available in this font's encoding: MacRomanEncoding with differences

用不同的数字。

现在,我的问题是-如何解决此问题,以便可以自动填写表格?当我在Acrobat Reader中打开pdf时,我可以插入这些字母,并且不会出现任何错误。这是我设置字段的方式:

public void setField(PDDocument document, PDField field, String value ) throws IOException {
    if( field != null && value != null) {
        try{
            field.setValue(value);
        } catch (Exception e){
            e.printStackTrace();
        }
    }
    else {
        System.err.println( "No field found with name:" + field.getPartialName() );
    }
}

更新

我一直在尝试像这样上传自己的Avenir-Light.tff:

PDFont font = PDType1Font.HELVETICA;
PDResources res = new PDResources();
COSName fontName = res.add(font);
acroForm.setDefaultResources(res);
String da = "/" + fontName.getName() + " 12 Tf 0 g";
acroForm.setDefaultAppearance(da);

但是,这似乎对打印字段没有任何影响,并引发几乎相同的消息:

U+0104 ('Aogonek') is not available in this font Helvetica (generic: ArialMT) encoding: WinAnsiEncoding
伊萨姆·埃拉蒂夫(Issam El-atif)

PDFBox在PDType1Font中定义了14种标准字体:

PDType1Font.TIMES_ROMAN
PDType1Font.TIMES_BOLD
PDType1Font.TIMES_ITALI
PDType1Font.TIMES_BOLD_ITALIC
PDType1Font.HELVETICA
PDType1Font.HELVETICA_BOLD
PDType1Font.HELVETICA_OBLIQUE
PDType1Font.HELVETICA_BOLD_OBLIQUE
PDType1Font.COURIER
PDType1Font.COURIER_BOLD
PDType1Font.COURIER_OBLIQUE
PDType1Font.COURIER_BOLD_OBLIQUE
PDType1Font.SYMBOL
PDType1Font.ZAPF_DINGBATS

因此,如果要使用Avenir-Light,则必须从.ttf文件中加载它。您可以按照@TilmanHausherr的建议进行操作PDType0Font.load(doc, new File("path/Avenir-Light.ttf"), false).

PDFont font = PDType0Font.load(doc, new File("path/Avenir-Light.ttf"), false);
PDResources res = new PDResources();
COSName fontName = res.add(font);
acroForm.setDefaultResources(res);
String da = "/" + fontName.getName() + " 12 Tf 0 g";
acroForm.setDefaultAppearance(da);

更新资料

您知道为什么以下形式还会显示警告吗:字体Avenir-Light中使用的OpenType布局表未在PDFBox中实现,将被忽略吗?

Avenir-light字体使用PDFBox尚不支持的OpenType布局表(高级印刷)。先进的版式将被忽略

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章