如何解决“...在此字体编码中不可用”?
How to resolve "...is not available in this font's encoding"?
所以我正在使用 PDFBox 来填写一些 pdf。到目前为止一切都很好——我用 Avenir Light 字体创建了一个 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
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);
更新
Do you know why it also displays a warning if form of: OpenType Layout
tables used in font Avenir-Light are not implemented in PDFBox and
will be ignored?
Avenir-light 字体使用 PDFBox 尚不支持的 OpenType 布局表(高级排版)。此高级排版将被忽略
所以我正在使用 PDFBox 来填写一些 pdf。到目前为止一切都很好——我用 Avenir Light 字体创建了一个 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
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);
更新
Do you know why it also displays a warning if form of: OpenType Layout tables used in font Avenir-Light are not implemented in PDFBox and will be ignored?
Avenir-light 字体使用 PDFBox 尚不支持的 OpenType 布局表(高级排版)。此高级排版将被忽略