我有PDF模板文件与字段 . 客户创建的模板 . 它有一些文本,字段标签和字段本身 . 文本和标签使用嵌入在模板中的某些字体 .
当我尝试用西里尔值填充字段时出现问题 - 结果文档中没有西里尔符号 .
我看到很多类似的问题都是通过使用AcroFields的替换字体来解决的 . 但是在这里我不能使用一种特定的字体进行替换,因为我无法在模板中定义字段字体 .
我试图为Acrobat Editor中的字段设置不同的字体 - Times New Roman,Arial和其他众所周知的Windows字体,但对结果pdf没有影响 .
代码示例:
FontFactory.RegisterDirectory(Environment.GetFolderPath(Environment.SpecialFolder.Fonts));
using (var dest = File.Create(@"result.pdf"))
{
using (var stamper = new PdfStamper(reader, dest))
{
var fields = stamper.AcroFields;
fields.SetField("ClientName", "Имя клиента");
stamper.FormFlattening = true;
stamper.Close();
}
}
我甚至在FontFactory中注册了所有可用的字体,但没有效果 .
所以问题是:1 . 如果我可以在仅用于字段的Adobe Acrobat中嵌入字体,那么该怎么做呢? 2.如果我可以使用iTextSharp为现有字段定义字体系列,那么该怎么做?
1 回答
好吧,我写了适合我的解决方案 .
在FontFactory中注册所有现有系统字体 .
读取文档元数据以提取文档中所有使用的字体 .
读取字段元数据并尝试创建适合字段字体的BaseFont . 如果没有合适的字体 - 请使用后备字体(带编码IDENTITY_H的arial) .
所以完整的代码看起来像:
如果您发现任何错误,欢迎您发表评论 .