简体中文

文件·自由发票工具

为什么货币符号在生成的发票中需要正确的字体 PDF

· 工作原理

发票 pdf 字符编码

字符行显示受支持的字形和缺失的 PDF 字形
原始 ToolAcre 矢量图

A PDF 仅显示其字体包含的字符,因此货币符号或带重音的客户名称可能会变成方框或空白。这篇文章解释了文本和字体在 PDF 中的工作原理以及在导出的发票中检查的内容。

发票上有一个方框,其中应该有卢比符号 — 一个小字形问题,但可信度成本很高

缺失的货币字形可能会将明确的价格变成关于钱的用途的问题。同样的故障可能会损坏客户名称或地址。这就是为什么必须打开并读取最后的 PDF 的原因,特别是当文档包含普通西欧文本之外的脚本或符号时。

文本如何存储在 PDF 中 — 通过字体映射的字符代码,而不是自由浮动的 Unicode

PDF 文本是通过字体和编码编写的,而不是作为不受限制的视觉 Unicode 进行传输。该存储库的作者将字符串转换为拉丁语-1字节,音译一小部分记录的字符,并用问号替换不支持的字符,同时记录发生的有损转换。

标准字体与嵌入字体 — 为什么经典的内置字体缺少许多货币符号和非拉丁字母

作者使用标准 Helvetica 和 Helvetica-Bold 字体,不需要嵌入字体文件,但不覆盖现代 Unicode。这使得 PDF 实现保持较小且可预测,同时创建了严格的指令集边界。当首选符号无法读取时,货币代码可以保持可读。

一般的嵌入和子集化——以及为什么这个工具两者都不做

嵌入字体可以在文档中携带字形数据,而子集化可以将该数据限制为使用的字形。这些是通用的 PDF 技术,而不是该工具的功能。其限制页面指出生成的 PDF 不嵌入任何字体,因此此导出路径无法使用嵌入来拯救另一个脚本。

客户名称、地址和注释 - 为什么同样的问题会影响重音字母和其他脚本,而不仅仅是符号

边界影响所有文本:卖家和客户姓名、关注线、地址、注释和付款说明。智能标点符号和选定的符号具有显式替换,但不受支持的字符会变成问号。一个成功的货币符号并不能证明文档的其余部分幸存下来。

工作示例 — 在查看器的属性对话框中检查导出发票的字体并搜索符号

导出包含无害测试字符的发票并检查可见的 PDF,然后从查看器中搜索并复制相同的文本。字体属性面板可能会将 Helvetica 显示为标准字体而不是嵌入的子集。该应用程序还会报告其转换何时检测到有损文本。

该工具经过验证的 Helvetica 和西欧文本边界

存储库确实指定了工具的字体选择:没有嵌入字体,仅覆盖西欧字体。对于其他脚本,限制页面将用户引导至浏览器的另存为 PDF 路径,该路径的字体处理属于浏览器和打印机工作流程,而不是此自定义编写器。

要点 — 在发送之前打开导出并查看,并依靠自由发票工具的国家/地区和货币设置来使用正确的约定

选择明确的货币代码并检查导出文件中的每个人名和指令。国家和货币设置选择标签和金额元数据;他们无法向 Helvetica 添加字形。干净的预览是该特定文档呈现可接受的证据。