pdftk заполненный тексреа не прокручивается - PullRequest
2 голосов
/ 20 июня 2020

Я использую php pdftk, чтобы извлечь данные из базы данных mysql и поместить их в кучу разных полей в PDF. Моя проблема заключается в том, что некоторые поля потенциально имеют длинный текст, однако вместо того, чтобы показывать полосу прокрутки вверх / вниз или даже иметь возможность прокручивать вверх или вниз, чтобы прочитать весь текст, кажется, что он просто обрезается. Мне интересно, есть ли специальный тег c pdftk или что-то, что я должен использовать, чтобы убедиться, что в поле есть несколько строк, в которых я вижу полосу прокрутки для прокрутки вверх и вниз, чтобы подготовить все, что будет введено.

Вот как выглядит pdf. когда я загружаю его через iframe в браузере, замечаю, что текстовое поле с надписью HPI представляет собой несколько строк текста, но без полосы прокрутки или индикации, которую вы можете прокручивать вверх или вниз. enter image description here However if I open the template pdf file in adobe and type a bunch into that field see screenshot below you can then see a up/down scroll bar in the field labeled HPI введите описание изображения здесь

Вот код

   namespace Classes;
   use mikehaertl\pdftk\Pdf;

   class GeneratePDF {


       public function generate($data, $patientid)
       {      

              try {

                    $filename = "$patientid.pdf";

                    $pdf = new Pdf('./imports/the_template.pdf');
                    $pdf->fillForm($data)
                    ->saveAs( './imports/generated_consults/' . $filename);
                    //->send( $filename . '.pdf');

                    return $filename;

              }
              catch(Exception $e)
              {
                    return $e->getMessage();
              }
  

         }
     }

1 Ответ

0 голосов
/ 30 июня 2020

Я предполагаю, что ваше textarea - это текстовое поле интерактивной формы. Содержимое интерактивных форм может быть обновлено с помощью операции fill_form из pdftk .

Интерактивные формы описаны в PDF-справке , версия 1.7 в разделе 8.6 - Интерактивные формы . Доступные параметры и флаги для текстовых полей описаны в таблицах 8.69, 8.70, 8.71 и 8.77.

Насколько я понимаю из справки, вы должны установить флаг Multiline (битовая позиция 13) и сбросьте флаг DoNotScroll (битовая позиция 24). Кроме того, другого варианта для этого, похоже, нет. Однако я бы также попробовал, имеет ли значение использование RichText (битовая позиция 26).

Если вы не изменяете значения полей в форме, а напрямую вставляете текстовые объекты в PDF (я не уверен, что pdftk может даже это сделать), тогда может быть нелегко решение. Из справочника PDF, версия 1.7, глава 2:

Внешний вид страницы описывается потоком содержимого PDF , который содержит последовательность графических объектов быть нарисованным на странице. Этот внешний вид полностью определен; все решения по макету и форматированию уже приняты приложением, генерирующим поток контента.

Это означает, что нет c разрыва строки (также известного как word упаковка ) в PDF. Я также не смог найти возможность включать полосы прокрутки в документ. В конце концов, цель PDF - обеспечить единообразный внешний вид на всех устройствах.

...