Изменение PDF и повторное использование встроенного шрифта

Я хочу изменить PDF-документ с помощью PHP. Я нашел библиотеки FPDF и FPDI, который позволяет создавать и изменять файлы PDF. Вот мой очень простой код:

<?php
require_once('include/fpdf.php');
require_once('include/fpdi.php');

// initiate FPDI
$pdf = new FPDI();
// add a page
$pdf->AddPage();
// set the sourcefile
$pdf->setSourceFile('input.pdf');
// import page 1
$page1 = $pdf->importPage(1);
// insert the page
$pdf->useTemplate($page1);

// now write some text above the imported page
$pdf->AddFont('calibri');
$pdf->SetFont('calibri','',11);
$pdf->Write(0, "This is just a simple text");

header("Content-Type: application/pdf");
$pdf->Output();

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

Если это невозможно с этой библиотекой, не стесняйтесь указать мне на третью бесплатную библиотеку.


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


person rekire    schedule 23.05.2012    source источник


Ответы (2)


Готов поспорить, ваш встроенный шрифт из импортированной страницы PDF не называется calibri. (Написание имен шрифтов в PDF-файлах только строчными буквами встречается очень редко.)

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

 AXBTZV+Calibri

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

person Kurt Pfeifle    schedule 05.07.2012
comment
Это интересно. Теперь мне нужно проверить, какие это случайные символы. +1 за подсказку пока. - person rekire; 06.07.2012
comment
Вы правы, шрифт называется QQASDX + Calibri. Завтра проверю, как его использовать повторно. - person rekire; 06.07.2012

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

Это не отвечает на ваш вопрос, а скорее говорит вам не пробовать вообще.

person cweiske    schedule 23.05.2012
comment
Я знаю это, но в моем случае это не проблема. Мне просто нужно добавить несколько цифр, которые уже есть где-то в тексте. - person rekire; 23.05.2012
comment
Поскольку это не ответ, это должен был быть комментарий. Если бы ваш ответ содержал инструкции о том, как переработать символы, существующие в этом шрифте, конечно, все было бы иначе. К вашему сведению: я согласен с вами лишь частично, так как можно встроить весь шрифт, а не только использованные буквы. В конце концов, вы дали совет, а не решение, которое должно было быть комментарием вместо ответа. Хорошие детали, но неполные. ПО МОЕМУ МНЕНИЮ ;) - person TheSatinKnight; 29.08.2017