【问题标题】:iTextSharp letter show in pdf on click点击时以 pdf 格式显示 iTextSharp 字母
【发布时间】:2019-10-05 19:13:55
【问题描述】:

用 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

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

【问题讨论】:

  • Cam 你分享有问题的 pdf 文件吗?
  • @mkl 我刚刚附上了pdf
  • 字段 II 具有默认外观 /Calibri 8 Tf 0 g。 PDF 中的字体 Calibri 使用编码 WinAnsiEncoding 定义。此编码中不存在字母“ć”。因此,PDF 制作者有意或无意地试图阻止您输入该信件。但是,如果您为预设字体中不存在的字母提供替换字体,则应该可以使用 iTextSharp 填充它。我稍后会调查。

标签: vb.net pdf itext pdf-generation


【解决方案1】:

字段 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");
}

结果

【讨论】:

  • 感谢您的努力,但现在我错过了另一封信。查看已编辑的问题
  • @ProgramerAnel 您使用哪个查看器?我使用 Adob​​e Reader 在我的答案中制作了屏幕截图,它显示了所有带有替换字体的字符。您使用哪个 itextsharp 版本?我用的是最新的 5.5.x 版本。
  • 您在问题中提到了 preview。预览器因错误地显示 pdf 而臭名昭著。
  • @mki iTextSharp 版本是 5.5.10,你是对的。在 chrome 中打开 pdf 文件给了我想要的输出。但是在 Acrobat Reader 2019.12 中打开相同的 pdf 并不好。不知道读者可能有什么问题,但无论如何感谢您的帮助
  • “但是在 Acrobat Reader 2019.12 中打开相同的 pdf 并不好。” - 这很有趣,我使用的是 2019.012.20040,它看起来不错。我还使用了我的旧 Acrobat Pro 9.5,它看起来也不错。请按原样尝试我的答案中的第二段代码。如果其结果比您的结果 PDF 更好,那么您的代码中可能还有其他需要改进的地方。
猜你喜欢
  • 2011-01-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-06-08
  • 2022-06-10
  • 2012-06-15
  • 2013-01-03
  • 1970-01-01
相关资源
最近更新 更多