2

我正在使用 php pdftk 从 mysql 数据库中取出数据并将其放入 PDF 上的一堆不同字段中。我的问题是一些字段可能有很长的文本,但不是显示向上/向下滚动条,甚至能够向上或向下滚动以阅读似乎只是被截断的所有文本。我想知道是否有特定的 pdftk 标签或我应该使用的东西来确保该字段是否有多行,我可以看到一个滚动条上下滚动以准备好所有将要输入的内容。

这是pdf的外观。当我通过浏览器中的 iframe 加载它时,请注意标记为 HPI 的文本区域为多行文本,但没有滚动条或指示您可以向上或向下滚动。 在此处输入图像描述 但是,如果我在 adobe 中打开模板 pdf 文件并在该字段中键入一堆,请参阅下面的屏幕截图,然后您可以在标记为 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();
              }
  

         }
     }
4

1 回答 1

0

我假设您的textarea是交互式表单的文本字段。交互式表单的内容可以使用pdftk的fill_form操作进行更新。

交互式表单在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内容流描述,其中包含要在页面上绘制的一系列图形对象。这种外观是完全指定的;生成内容流的应用程序已经做出了所有布局和格式决定。

这意味着 PDF 中没有自动换行(又名自动换行)。我也找不到在文档中包含滚动条的功能。毕竟,PDF 的目标是在所有设备上实现一致的外观。

于 2020-06-29T23:54:27.043 回答