【问题标题】:How to embed font into pdf/a using iText7如何使用 iText7 将字体嵌入 pdf/a
【发布时间】:2018-09-05 19:21:27
【问题描述】:

我正在尝试了解如何将字体嵌入到我的 pdf/a 中。
我找到了很多答案,但使用 iTextSharp。
在我的案例中,我使用 iText7,但我尝试的所有方法都给了我错误:
“所有字体都必须嵌入...”

我的字体有一个 ttf 文件,但我没有找到将其嵌入到我的 pdf 中以使用它的方法...

有人可以帮我吗?
提前致谢

kor6k

【问题讨论】:

  • 你读过tutorial吗?您是否尝试过该教程中的 PDF/A 示例?如果是这样,什么不起作用?如果没有,您为什么在提问前不阅读教程?
  • 怎么样!!!有点惭愧。。。很久以前看教程了,字体部分没看到。。。现在看到了,不明白为什么没成功;这很容易...感谢您的帮助!!!!!!

标签: pdf fonts itext7


【解决方案1】:

正如tutorial 中所述以及您提到的错误(“必须嵌入所有字体”)所示,您需要嵌入字体。

您可能没有定义字体,在这种情况下将使用 标准 Type 1 字体 Helvetica。这些标准 Type 1 字体从不嵌入,因此您需要选择另一种字体。

教程中的示例使用免费字体 FreeSans:

public const String FONT = "resources/font/FreeSans.ttf";

字体对象是这样定义的:

PdfFont font = PdfFontFactory.CreateFont(FONT, PdfEncodings.WINANSI, true);

这种字体在Paragraph 中使用如下:

Paragraph p = new Paragraph();
p.SetFont(font);
p.Add(new Text("Font is embedded"));
document.Add(p);

这是 C# 版本。需要Java版的可以看Java version of the tutorial

public static final String FONT = "src/main/resources/font/FreeSans.ttf";
PdfFont font = PdfFontFactory.createFont(FONT, PdfEncodings.WINANSI, true);
Paragraph p = new Paragraph();
p.setFont(font);
p.add(new Text("Font is embedded"));
document.add(p);

如果您已经使用此方法,但仍然出现错误,则可能是您在某处未定义嵌入字体的某些内容。

【讨论】:

  • 谢谢,就像我说的,我很惭愧没有看过它......然而,我很久以前就读过这个教程......
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-07-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-19
  • 2010-10-18
相关资源
最近更新 更多