Встраивание пользовательского шрифта в PDF-файл, созданный приложением iPad

обзор

Я создаю четырехстраничный PDF-документ в приложении iPad, в котором используется пользовательский шрифт Trade Gothic. Он правильно внедряется в приложение и отлично выглядит.

Тем не менее, часть приложения заключается в отправке PDF-файла по электронной почте. Этот отправленный файл отображает весь шрифт как тип по умолчанию sans и в нескольких системах, я получил ошибку. Не удается найти или создать шрифт «RVYPRT + TradeGothicLTStd-Light». Некоторые символы могут не отображаться или печататься правильно.

Я создаю PDF, используя UIKit Framework. Вот учебник, который использует тот же процесс: http://www.ioslearner.com/generate-pdf-programmatically-iphoneipad/

Мой вопрос

Как вставлять шрифт в вывод PDF так, чтобы он отображался корректно как пользовательский шрифт, а не тип по умолчанию после его отправки.

Заранее спасибо!

Обновление 1: Подобные неотвеченные вопросы, которые я нашел

Встроенный шрифт IOS в формате PDF

iOS Quartz встроенный шрифт в формате pdf

Обновление 2: Дополнительная информация о шрифтах

Шрифт, http://store1.adobe.com/cfusion/store/html/index.cfm?store=OLS-US&event=displayFont&code=TRDQ10003000 , является шрифтом OpenType и разрешает встраивание по лицензии.

Кроме того, стандартный шрифт по умолчанию является стандартным.

Если в файле PDF отсутствуют определенные шрифты, Adobe Acrobat и Adobe Reader автоматически попытаются эмулировать недостающий шрифт, используя один из нескольких шрифтов Master Master, встроенных в эти программы. Таким образом, документ не будет представлен точно так, как хотел бы его разработчик, но, по крайней мере, текст не будет перепланироваться. Шрифты Multiple Master, которые используются для этого: Adobe Serif MM и Adobe Sans MM

источник: http://www.prepressure.com/pdf/basics/fonts

Обновление 3: Шрифты указаны в PDF, но не встроены

Похоже, что приложение пытается внедрить шрифты, но они неправильно внедряются. Вот скриншот встроенных шрифтов в меню Файл -> Свойства документа:

введите описание изображения здесь

Первая проблема, которую я вижу, заключается в том, что шрифт отображается как Тип 1, когда он фактически является шрифтом OpenType. И, как и ожидалось, «Фактический шрифт» – это Sans MM (шрифт, используемый, когда встроенный шрифт не найден).

Обновление 4: В другом PDF-файле (сгенерированном с использованием приложения Adobe, а не iPad) необходимые шрифты встраиваются как подмножества . Я не уверен, но это заставляет меня думать, что можно сделать то же самое программно.

введите описание изображения здесь

Шрифт, который вы используете и который «отлично смотрится», TradeGothic , не позволяет встраивать в PDF (или другие) документы в соответствии с его лицензией.

(Почему дизайнер шрифтов хотел бы сделать это за пределами моего маленького мозга. В конце концов, они продали лицензию, чтобы использовать его для документов, нет? – И почему [как я недавно испытал из первых рук] большая корпорация создавала бы их фирменный стиль вокруг одного такого шрифта, но затем «слишком дешев» и покупает только лицензии на шрифты, которые не позволяют встраивать, поэтому принуждение своих сотрудников посылать дрянные PDF-файлы своим клиентам добавляет в эту историю только больше безумия …)

Как видно из вашего второго обновления, вы уже обнаружили этот факт.

Что вы неправильно понимаете, это скриншот «Свойства документа»:

  1. Шрифты OpenType бывают разных вкусов. Некоторые используют (внутренне) технологию формирования TrueType, некоторые используют метод Type1 / PostScript. Это объясняет, почему вы видите его как Type1.
  2. Нет, приложение НЕ «пытается внедрить шрифт (но делает это неправильно)» . Скорее всего, HONOR кажется «не вставлять» флага в файл шрифта, который устанавливает это ограничение.
  3. Эти системы приема PDF- кода, которые дают это предупреждение о «Невозможно найти или создать шрифт« RVYPRT + TradeGothicLTStd-Light ». Некоторые символы могут не отображаться или печататься правильно« не виноваты ». Они просто …

    • … не имеют этого шрифта, установленного локально, или
    • … нет доступной технологии шрифтов Adobe Multiple Master или
    • … не используйте Adobe Reader или Acrobat (в которые будет включен MM-файл).

Мой простой совет, повторяемый сотни раз перед моими клиентами на протяжении многих лет:

  1. Всегда вставляйте все шрифты в свои PDF-файлы. (Если у вас нет веских оснований не знать и знать последствия).
  2. Никогда не покупайте (или не используйте) шрифт, который не позволяет встраивать. (И если вы не знаете, как проверить свои текущие шрифты для этого, получите себе несколько профессиональных советов по этой проблеме.)

Обновить:

В принципе, «флаг внедрения» может выражать четыре (важных) разных уровня ограничений. (С практической точки зрения, этот флаг применяется только к TrueType и OpenTypes, а не к более старомодным шрифтам PostScript Type1. Технически говоря: имя этого флага является fsType , оно является битовой маской и содержится в OS / 2 таблица шрифтов TrueType и OpenType ….)

Эти уровни определяют, где и когда и для каких целей тип литейщика позволяет встраивать шрифт в документы (не только PDF, но также Word, OpenOffice или любой другой тип документа:

  1. Встраивание не допускается.
    Вы можете создать электронный документ в системе с установленным шрифтом, вы можете отредактировать его, и вы можете его просмотреть. Ах, вы также можете распечатать его: драйверы Adobe PostScript будут содержать все элементы шрифта, необходимые для печати в файле PostScript. Но все.
  2. Предварительный просмотр и печать.
    Документ имеет встроенный шрифт, а документ можно просмотреть с помощью исходного шрифта (даже в системе приема документов). Но вы не можете сделать больше с ним (например, без редактирования документа). Он делает весь документ доступным только для чтения + только для печати. Возможно копирование и вставка содержимого в другой документ, но он НЕ будет использовать (или даже передавать) ограниченный шрифт.
  3. Редактируемое вложение.
    Документ можно редактировать (в принимающей системе). Однако точный успех этой операции зависит от того, был ли встроен полный шрифт или подмножество . Если ваше подмножество случайно не содержит «i», вы не можете добавить комментарий «идиоты!» к документу, и вам может потребоваться ограничить себя «дураками!» ….
  4. Устанавливаемое внедрение.
    Здесь нет ограничений. Встроенный шрифт можно даже извлечь и установить в принимающей системе. (Было время, когда Microsoft автоматически установила любой шрифт, встроенный в документ, из документа Word на машинах-получателях, если он еще не был там.) Между тем, однако, этот параметр является спорным: НЕТ «обычного» приложения предоставляет средства для извлечения или установки встроенных шрифтов документов.

Есть еще два (менее важные) ограничения, которые может указывать на флаг «встраивания» шрифта:

  • Запрещено подмножество (другое ограничение, как указано выше, может применяться независимо.)
  • Только встраивание растровых изображений (данные контура не могут быть встроены).

Программное обеспечение Adobe во многих случаях, когда флаг fsType вообще не содержится в самом шрифте, будет рассматривать этот шрифт как способ, который позволяет использовать печать + предварительный просмотр .

Подробности об этой теме можно узнать из Adobe Whitepaper о «Руководстве по внедрению шрифтов для сторонних разработчиков» .

Невозможно ли изменить встроенный шрифт на другой, который позволяет встраивать?

  • Создание многостраничного PDF-файла в объекте-c
  • Объединить 2 pdf-файла в iOS
  • ios - создание PDF, заполненного из CoreData
  • CGPDFObject получает идентификатор
  • как открыть pdf-разметку программно в ios 11
  • Как «аннотировать» CGPDFDictionary «Rect» переводят на объективный c Rect
  • Создание аннотаций PDF в iOS
  • Как я могу сделать PDF-файл, используя base64 string? стриж
  • Как сохранить локально PDF или другие файлы в iOS
  • Векторное искусство на iOS
  • Как вы создаете PDF-файл с помощью Annots?
  • Interesting Posts

    Как заставить iOS MapKit использовать HTTPS для всех своих коммуникаций?

    Как создать глобальный экземпляр UIManagedDocument для каждого документа на диске, общий для всего моего приложения, используя блоки?

    Существующее соединение было принудительно закрыто удаленным хостом

    iOS Game Center – загрузка игровых матчей игрока

    Неопределенные символы для архитектуры armv7s:

    UIWebView: Отменить открытие ссылки, когда «коснуться» находится за пределами ссылки?

    NSNumberFormatter отображают скобки на отрицательных значениях

    Сжатие видео при записи фильма с помощью UIImagePickerController?

    Преобразование .caf в .mp3 на iPhone

    Как настроить этот макет в iPhone нужно Некоторая помощь

    Как исправить фреймворк с конфликтующими именами в Cocoapods?

    пользовательский красивый ползунок времени

    Предоставляет ли ALAsset только эскиз размера 150×90? Его там какой-либо способ увеличить размер миниатюры, скажем 320×320 или 640×640?

    Получение определенных строк текста из строковых проблем управления памятью

    iOS IAP не работает только с сетью ipv6

    Давайте будем гением компьютера.