gpt4 book ai didi

ios - 将自定义字体嵌入从iPad应用程序生成的PDF中

转载 作者:可可西里 更新时间:2023-11-01 04:27:42 25 4
gpt4 key购买 nike

概述

我正在使用自定义字体Trade Gothic的iPad应用程序中生成四页PDF文档。它正确地嵌入到应用程序中,看起来很棒。

但是,该应用程序的一部分是通过电子邮件发送PDF,以免被抛弃。此发送的文件将所有字体显示为默认的sans类型,在一些系统上,我收到错误消息“找不到或创建字体'RVYPRT + TradeGothicLTStd-Light”。某些字符可能无法正确显示或打印。

我正在使用UIKit框架生成PDF。这是使用相同过程的教程:http://www.ioslearner.com/generate-pdf-programmatically-iphoneipad/

我的问题

如何将字体嵌入PDF输出中,以便在发送后将其正确显示为自定义字体,而不是默认字体。

提前致谢!

更新1:我发现了类似的未解决问题

IOS embed font in PDF

iOS Quartz embed font in pdf

更新2:有关字体的更多信息

字体http://store1.adobe.com/cfusion/store/html/index.cfm?store=OLS-US&event=displayFont&code=TRDQ10003000是一种OpenType字体,并且确实允许通过许可证进行嵌入。

另外,使用的默认字体是标准字体。

如果PDF文件中缺少某些字体,则Adobe Acrobat和Adobe Reader将自动尝试使用这些程序中内置的多主字体来模拟缺少的字体。这样,文档将无法完全按照设计者的意愿来表示,但是至少文本不会重排。为此使用的多个主字体是: Adob​​e Serif MM Adob​​e Sans MM

资料来源:http://www.prepressure.com/pdf/basics/fonts

更新3:字体在PDF中被引用,但未嵌入

该应用似乎正在尝试嵌入字体,但未正确嵌入它们。这是"file"->“文档属性”下嵌入字体的屏幕截图:

我看到的第一个问题是该字体实际上是OpenType字体时被列为Type 1。并且,正如预期的那样,“实际字体”是Sans MM(找不到嵌入式字体时使用的字体。)

更新4:在另一个PDF(使用Adobe而不是iPad应用程序生成)中,所需的字体作为子集嵌入。我不确定,但这使我相信可以以编程方式执行相同的操作。

最佳答案

根据其许可,使用的字体“看起来很棒”,TradeGothic,不允许嵌入PDF(或其他)文档中。

(为什么字体设计师会想做到这一点超出了我的头脑。毕竟,他们出售了将其用于文档的许可证,不是吗?-为什么[正如我最近亲身经历的那样]一家大公司会设计他们的企业标识围绕一种这样的字体,但随后变得“太便宜了”,只购买不允许嵌入的字体许可证,因此迫使员工向客户发送糟糕的PDF只会使这个故事更加疯狂。

从第二次更新中可以看出,您已经发现了这一事实。

您似乎会误解的是“文档属性”屏幕截图:

  • OpenType字体具有不同的风格。有些使用(内部)TrueType成形技术,有些使用Type1/PostScript方法。这就解释了为什么您看到它声明为Type1。
  • 不,应用程序执行而不是“试图嵌入字体(但这样做不正确)”。宁愿荣誉字体文件中的“请勿嵌入”标志,这也设置了很大的限制。
  • 那些发出有关“无法找到或创建字体'RVYPRT + TradeGothicLTStd-Light”的警告的PDF接收系统,没有错误。他们只是...
  • ...没有在本地安装该字体,或者
  • ...没有可用的Adobe Multiple Master字体技术,或者
  • ...请勿使用Adobe Reader或Acrobat(其中包含MM素材)。

  • 我的简单建议,多年来在客户面前屡屡重复:
  • 始终将所有字体嵌入到PDF中。 (除非您有充分的理由不这样做,并且不知道后果如何。)
  • 切勿购买(或使用)不允许嵌入的字体。 (并且,如果您不知道如何为此检查当前字体,请向您自己寻求有关此问题的专业建议。)


  • 更新:

    基本上,“嵌入标志”可以表示四个(重要)不同级别的限制。 (实际上,此标志仅适用于TrueType和OpenTypes,不适用于较老式的PostScript Type1字体。从技术上来讲:此标志的名称为fsType,是位掩码,包含在 OS/TrueType和OpenType字体的2个表...。)

    这些级别指定了类型类型转换厂在何时何地以及出于何种目的将字体嵌入到文档中(不仅是PDF,而且还嵌入了Word,OpenOffice或任何其他文档类型:
  • 不允许嵌入。
    您可以在安装了字体的系统上创建电子文档,可以对其进行编辑和查看。嗯,您也可以打印它:Adobe PostScript打印机驱动程序将在PostScript文件中包括打印所需的所有字体元素。就是这样。
  • 预览和仅打印嵌入。
    文档已嵌入字体,并且可以使用原始字体查看文档(即使在文档接收系统上也可以)。但是您不能做很多其他事情(例如,不进行文档编辑),这会使整个文档变为只读+仅打印。可以将内容复制并粘贴到另一个文档中,但是不会使用(甚至传输)受限制的字体。
  • 可编辑的嵌入。
    可以编辑文档(在接收系统上)。但是,此操作的确切成功取决于嵌入的是完整字体还是子集。如果您的子集偶然不包含“i”,则无法添加注释“白痴!”。到文档,您可能需要将自己限制为“愚弄!” ....
  • 可安装的嵌入。
    这里没有限制。甚至可以提取嵌入的字体并将其安装在接收系统上。 (曾经有一段时间,Microsoft会自动在收件人计算机上的Word文档中自动安装任何嵌入文档的字体(如果尚不存在)。)但是,此选项没有意义:'常规'应用程序提供了以下方法:任何一个
    提取或安装嵌入式文档字体。

  • 字体的“嵌入”标志可能还指示了另外两个(不太重要)的限制:
  • 不允许子集(上面概述的其他限制可能会独立适用。)
  • 位图仅嵌入(不能嵌入轮廓数据。)

  • 在许多情况下,Adobe软件在字体本身中根本不包含 fsType 标志的情况下,会将这种字体视为允许仅打印+预览嵌入的字体。

    可以从 Adobe Whitepaper about 'Font Embedding Guidelines for Third-party Developers了解有关此主题的详细信息。

    关于ios - 将自定义字体嵌入从iPad应用程序生成的PDF中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11364359/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com