HTML2PDF: слова обрезаются / удаляются в PDF

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

Мой вывод выглядит так:

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

Вот фрагмент моего кода:

            <table>
<tr align=''>
<td colspan='5' class='heading'>Corporate URC Use Only</td>
</tr>
<tr>
<td>Consult Determination<span class='required'></span>:</td>
<td><strong>";
if(isset($updated_history) && !is_null($updated_history)){
$html .= $data['original_decision'];
}
else{
$html .= $data['final_decision'];
}

$html .="</strong></td>

</tr>
</table>
<table>
<tr>
<td>Notes:</td>
<td><strong>" . $data['notes'] . "</strong></td>
</tr>
</table>

Моя реализация html2pdf довольно проста:

require_once("../include/html2pdf/html2pdf.class.php");
$html2pdf = new HTML2PDF('P','A4','en');
$html2pdf->pdf->SetDisplayMode('real');

$html2pdf->WriteHTML($html);
$html2pdf->Output($c_file, "F");

РЕДАКТИРОВАТЬ: Вот ссылка на образец PDF, демонстрирующий это поведение.
https://www.dropbox.com/s/h91g40bo4b2cmlw/Test_T_2312321.pdf?dl=0

3

Решение

Это выглядит как…

  1. …либо ваши PDF /MediaBox более узкий, чем А4 (что составляет 595 баллов),
  2. …или ваш PDF чертеж / написание /Contents Код не учитывает ширину А4 и рисует / пишет за ее пределами.

Вы должны проверить, использует ли ваш код (возможно скрытый) параметр, который устанавливает ширину страницы (или полный размер страницы) в букву (которая будет 612×792 точек).

Чтобы проверить мое предположение, вы можете заменить A4 в вашей реализации html2pdf letter или же Letter


(Если вы предоставите [ссылку на] PDF, созданный вашим кодом, было бы намного легче отлаживать. То, что я написал выше, — это [почти] чистая спекуляция.)


Обновить

Посмотрев исходный код PDF, указанный в ссылке на обновление к OP, я могу сказать следующее:

  1. Я распаковал /Content потоки файла, чтобы увидеть операторы рисования страниц PDF как ASCII, используя эту команду:

    qpdf --qdf --object-streams=disable document.pdf q.pdf
    
  2. Теперь вновь созданный q.pdf легко открывается в хорошем текстовом редакторе (например, VIm, Emacs или Notepad ++).

  3. Следующая строка печатает текст на странице:

     BT                     \
    /F2 10.00 Tf         \
    ET                     \
    [....]                 \
    q                      \
    0.000 0.000 0.000 rg \
    BT                 \
    0    Tr          \
    0.00 w           \
    ET                 \
    BT                 \
    50.00 359.19 Td  \
    [(Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore)] TJ \
    ET                 \
    Q
    

Этот фрагмент кода печатает очень длинную строку текста со шрифтом, внутренне названным как /F2 (который, в свою очередь, отображается на /Helvetica-Bold в другом месте в файле), размер 10 точки, начиная с координат x=50, y=359.19,

Однако эта длинная текстовая строка не вписывается в ширину страницы, заданную /MediaBox, определяется как [0 0 595 842] (который находится в точках PostScript и представляет А4).

Это будет вписываться в ширину 635 (даже оставляя небольшой край на правом краю).

(Вы также можете сделать текст подходящим для текущей ширины страницы, уменьшив размер текста, например. /F2 9.00 Tf, Но это все равно оставит длинные горизонтальные линии ваших нарисованных прямоугольников за границей правой страницы …)

Общий исходный код этого PDF, кстати, в некоторых местах очень неэффективен (например, он содержит BT /F1 10.00 Tf ET 1.000 g более 1000 раз, но этот код делает точно … ничего! Он определяет только шрифт, который будет использоваться как внутреннее имя /F1 и размер шрифта в 10 баллов).

Вы можете легко редактировать оригинальный PDF с помощью текстового редактора:

  1. Поиск строки /MediaBox, Он появляется дважды в PDF, один раз для каждой страницы.

  2. Заменить его текущее значение [0 0 595.28 841.89] новым значением [0 0 635.00 841.89],

  3. Сохраните отредактированный файл.

  4. Откройте его в вашем любимом средстве просмотра PDF.

Теперь вы увидите, что содержимое страницы также вписывается в ширину страницы (которая сейчас 635 баллы (== 22.4 см; первоначальная стоимость 595 очки эквивалентны 21.0 см).

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

Вот скриншот отредактированного файла PDF, показывающий, как новый /MediaBox Теперь можно удерживать весь контент страницы в своих границах:

# так 29217840.png

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]