单击时以 pdf 格式显示 iTextSharp 字母

iTextSharp letter show in pdf on click

用 itextsharp 填充现有的 pdf 文件字段。

一切正常,除了由于某种原因字母“ć”在文本框中不可见。

预览和打印时是这样的

但是当我点击字段时,我看到了隐藏的字母“ć”

我试过的。

字体变小 字体风格不同

这是编辑该字段的完整代码

If IIf(IsDBNull(_row("II")), 0, _row("II")) = 0 Then
    pdfFormFields.SetField("II", "Prvo izvješće")
ElseIf IIf(IsDBNull(_row("II")), 0, _row("II")) = 1
    pdfFormFields.SetField("II", "Ispravak")
Else
    pdfFormFields.SetField("II", "Dopuna")
End If

我在这里做错了什么:(。

PDF : Entire PDF document

编辑:添加替换字体后结果如下

字段 II 具有默认外观 /Calibri 8 Tf 0 g。 PDF 中的字体 Calibri 是使用 WinAnsiEncoding 编码定义的。此编码中不存在字母“ć”。因此,PDF 制作者有意或无意地试图阻止您输入该字母。但是,如果您提供识别该字符的替换字体,则可以根据需要填写该字段。

重现问题

using (PdfReader reader = new PdfReader(@"JOPPD.pdf"))
using (PdfStamper stamper = new PdfStamper(reader, File.Create(@"JOPPD-FilledLikeProgramerAnel.pdf")))
{
    stamper.AcroFields.SetField("II", "Prvo izvješće");
}

结果

用替换字体修复它

using (PdfReader reader = new PdfReader(@"JOPPD.pdf"))
using (PdfStamper stamper = new PdfStamper(reader, File.Create(@"JOPPD-FilledLikeProgramerAnelImproved.pdf")))
{
    BaseFont baseFont = BaseFont.CreateFont(@"c:\Windows\Fonts\arial.ttf", BaseFont.IDENTITY_H, true);
    stamper.AcroFields.AddSubstitutionFont(baseFont);
    stamper.AcroFields.SetField("II", "Prvo izvješće");
}

结果