FPDF, FPDI - использование шрифтов, встроенных в исходный документ

Я использую FPDF / FPDI для создания системы шаблонов PDF. Один PDF-файл используется в качестве фона и имеет ряд редактируемых областей, определенных в нем (хранящихся в базе данных). Редактируемая область может быть изображением, текстом или и тем, и другим, но это не мой вопрос, это просто немного фона.

Некоторые из фонов (исходный PDF-файл FPDI) PDF-файлы или «шаблоны» содержат встроенные шрифты. Я хочу добиться двух вещей, и мне было интересно, возможно ли это.

  1. Я хочу иметь возможность использовать любые шрифты, встроенные в исходный документ, в выходном документе.
  2. Мне нужно перечислить эти шрифты, чтобы их можно было включить в список шрифтов пользовательского интерфейса.

Для ясности, я хочу повторно использовать эти шрифты, а не просто применить их к импортированной странице, но предложить возможность отображать новый текст в одном из встроенных шрифтов.

Приветствуются любые указатели.


person Community    schedule 22.07.2009    source источник


Ответы (3)


Сначала о шрифтах и ​​PDF. Если я правильно помню, когда шрифт включается в PDF-файл, может быть включен весь шрифт или может быть встроено только подмножество шрифта, покрывающее фактически используемые лица символов. Некоторые инструменты «сжатия» PDF могут удалять неиспользуемые глифы шрифтов из файла PDF. (Может кто-нибудь подтвердить / опровергнуть это?)

Что касается FPDF (это библиотека, которую я использую), я не думаю, что он может открыть PDF-файл в режиме «редактирования». Он может просто открыть PDF-файл и использовать его в качестве фона - по сути, изображения документа. Быстрый просмотр предоставленных сценариев, кажется, не показывает сценариев, которые реально открывали бы файл PDF (кроме одного, который может просто получить метаинформацию о документе).

Есть и другие варианты для библиотек PDF. Демонстрация TCPDF, которую я видел на следующей презентации, показала, что TCPDF может иметь больше встроенных возможностей, чем FPDF. Может стоит заглянуть в ту библиотеку? http://suburbanchicagophp.org/archives/75

person creuzerm    schedule 22.07.2009

Я задаю первоначальный вопрос, но я потерял свою временную учетную запись, поэтому не могу комментировать (администратор, пожалуйста, слейте, если можете).

Просто для ясности.

Мы решили использовать FPDF вместо TCPDF из-за проблем совместимости, подробно описанных на веб-сайте FPDI, поскольку FPDI является основным компонентом в этом, отказ от FPDI не был вариантом.

Мы используем FPDI для извлечения страниц из шаблона документа, а затем размещаем текст и изображения (как определено в базе данных с помощью веб-интерфейса) поверх каждой страницы, так что использование точно такое, как позволяет FPDI.

Я нашел еще один вопрос на этой доске, касающийся извлечения встроенных шрифтов из файлов pdf, спрашивающий был намечен за действия, нарушающие авторские права, что является огромным предположением.

Как извлечь шрифты из файла PDF с помощью Perl?

Наши шаблоны будут исходить от наших дизайнеров, мы хотим повторно использовать (а не извлекать) шрифты в шаблоне pdf.

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

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

Теперь мне нужно проверить, переносятся ли шрифты, встроенные в исходный (шаблон) PDF-файл, в новый PDF-файл, я полагаю, что они должны быть, поэтому должен быть разумный способ их повторного использования.

Я отправлю ответ для полноты картины, когда буду знать наверняка, но если у кого-то есть какие-либо отзывы или знания по этому поводу, я буду очень признателен.

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

person Gavin    schedule 23.07.2009

Чтобы еще больше прояснить это, Zend_PDF будет обеспечивать эту точную функциональность, перечисляя и затем повторно используя шрифты, встроенные в PDF, но он не будет работать с PDF более поздней версии, чем v1.4, с v1.4 pdf, однако Zend работает очень хорошо:

например, в Zend_PDF возможно следующее, и тогда шрифт можно будет повторно использовать по имени:

public static function GetFontList($background)
{
     $pdf = Zend_Pdf::load($background);
     $fonts = array(); 
     // Get all document fonts
     $fontList = $pdf->extractFonts();

    foreach ($fontList as $font) 
    {
        $fontName = $font->getFontName(Zend_Pdf_Font::NAME_POSTSCRIPT, 'en', 'UTF-8');
        $fonts[] = $fontName;
    }

    return $fonts;
}

Надеюсь, это будет полезно для кого-то, однако мне нужны более высокие версии pdf, чем 1.4, поэтому я думаю, что хочу изменить FPDI.

person Gavin    schedule 27.07.2009