Fonts 如何为PDF格式的AcroForm字段使用自定义字体,这些字段是通过XHTML、飞碟和openpdf生成的

Fonts 如何为PDF格式的AcroForm字段使用自定义字体,这些字段是通过XHTML、飞碟和openpdf生成的,fonts,pdf-generation,flying-saucer,acrofields,openpdf,Fonts,Pdf Generation,Flying Saucer,Acrofields,Openpdf,所以,我似乎有一个自己无法解决的问题。 我使用FlyingSacer-9.1.20和openpdf-1.3.22从xhtml源代码生成PDF 我的客户CI要求Verdana作为他们所有文档的字体。因此,我嵌入字体并创建pdf,如以下简单示例所示: ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); ITextRenderer renderer = new ITextRenderer(); renderer.setDo

所以,我似乎有一个自己无法解决的问题。 我使用FlyingSacer-9.1.20和openpdf-1.3.22从xhtml源代码生成PDF

我的客户CI要求Verdana作为他们所有文档的字体。因此,我嵌入字体并创建pdf,如以下简单示例所示:

ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
ITextRenderer renderer = new ITextRenderer();
renderer.setDocumentFromString(xhtmlDoc);
renderer.getFontResolver().addFont(fontDir + "verdana.ttf", BaseFont.IDENTITY_H, BaseFont.EMBEDDED);  
renderer.layout();
renderer.createPDF(outputStream);
下面是一个简单的XHTML源:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<style type="text/css">     
  body {
    font-size: 7.5pt;
    font-family: Verdana;
  }
  input {
    font-size: 7.5pt;
    width: 500px;
    height: 15px;
    font-family: Verdana;
  }  
</style>
</head>
<body>
  TestField: <input type="text" value="Test"></input>
  <p>This is an example Text</p>
</body>
</html>


身体{
字号:7.5pt;
字体系列:Verdana;
}
输入{
字号:7.5pt;
宽度:500px;
高度:15px;
字体系列:Verdana;
}  
测试字段:
这是一个示例文本

到目前为止还不错,它使用了我的嵌入式字体,但只要我单击输入字段,字体就会发生变化,编辑后,它就保持不变

当我在Chrome中打开pdf并单击输入字段时,它看起来像。
大部分是空白,有时是一些随机字母,如图所示

看起来好像存在某种编码问题,Adobe Acrobat Reader会退回到默认字体。
当我使用openpdf中的一种标准字体时,效果很好

我已经为这个问题苦苦挣扎了好几天了,我简直无法控制它。
我是不是错过了什么


感谢您的帮助。

我通过更改

renderer.getFontResolver().addFont(fontDir + "verdana.ttf", BaseFont.IDENTITY_H, BaseFont.EMBEDDED);

renderer.getFontResolver().addFont(fontDir + "verdana.ttf", BaseFont.CP1257, BaseFont.EMBEDDED);