【问题标题】:FPDF behaviour when not adding font不添加字体时的 FPDF 行为
【发布时间】:2015-05-27 09:39:28
【问题描述】:

我注意到使用 FPDF/FPDI 等使用 PHP 生成的 PDF 文件在添加/嵌入字体时会变得非常大。因此,如果我使用像 arial 这样的知名字体系列,我会尽量避免这样做。

假设我只使用 Arial/Arial-bold 并且我在构造函数中像这样注释掉以下部分:

// $this->AddFont('Arial', '', 'arial.php');
// $this->AddFont('Arial', 'B', 'arialbd.php');

在各种计算机上打开的 pdf 的预期行为是什么?

这样做的原因如下:

  1. 我的 PDF 的大小是 10Kb 而不是 1Mb
  2. 我假设几乎任何机器上都存在 arial,如果没有,机器应该用类似的字体替换 arial 字体。使用的字体对我的文档来说不是那么重要。

这是一种智能方法还是使用非嵌入字体有风险?

另外请告诉我在这种情况下使用什么字符集。我之前嵌入的字体是 ISO-8859-15 以便能够使用欧元符号。如果我注释掉嵌入的字体,除欧元符号外,我的 Windows 机器上的所有内容都以 arial 显示。我怀疑 windows 使用 windows 字符集而不是欧元符号在不同的字符上。

请给我一个提示,在使用常用字体系列时,在不嵌入字体的情况下使用 FPDF 创建 PDF 文件的最佳做法是什么。在这种情况下,解释器使用什么字符集?

【问题讨论】:

  • 如果生成的文档包含嵌入字体,那么它肯定会更小。但是请记住,虽然它很可能可以显示(pdf 解释器会选择一些合适的本地安装字体),但它的外观可能因系统而异。尤其是在依赖像 Arial 这样并非随处可用的专有字体时。

标签: php pdf fonts fpdf font-embedding


【解决方案1】:

一般来说,生成没有嵌入字体的 PDF 文件是一个非常糟糕的主意 - 在这种情况下,任何查看器都有自己的策略来显示您的 PDF,而您根本无法控制 PDF 文件。

话虽如此,如果您确实想生成不带字体的 PDF 文件(请不要 :-)),PDF 有一个标准字体的概念。这些是任何查看器都应该拥有的字体(您仍然不确定字体是否会呈现相同并且您仍然可能遇到编码问题,但您有更好的战斗机会)。

这些字体是:helvetica(常规、粗体、斜体、粗斜体)、times(常规、粗体、斜体、粗斜体)、courier(常规、粗体、斜体、粗斜体)、符号和 zapfdingbats。总共有 14 种字体。

是的,Arial 相对常见,但在这种情况下,Helvetica(非常相似)仍然是一个更好的主意。

【讨论】:

  • 我可以确认。我找到了这个文档:fpdf.org/en/doc/setfont.htm 文档说:Helvetica 或 Arial(同义词;无衬线)。我真的不知道它是什么意思,但它是 arial、helvetica 还是其他无衬线字体对我来说并不重要。我注意到标准字体使用 Windows 编码 cp1252(西欧),所以我使用 chr(0x80) 解决了欧元符号问题。这样做最坏的情况是什么?我相信在最坏的情况下,用户系统会用随机的无衬线字体替换字体,不是吗?
  • 真正的印刷师不会对同义词感到满意 :-) 但他们非常接近。最坏的情况是您让查看器“模拟”字体,结果字体看起来会有所不同。如果文档的外观不是您最关心的问题,这可能是可以接受的(确保您不必遵守 PDF 标准,所有 PDF 标准都要求嵌入字体)。
猜你喜欢
  • 2013-07-03
  • 1970-01-01
  • 1970-01-01
  • 2014-01-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-18
相关资源
最近更新 更多