如何在PHP TCPDI/TCPDF中展平/合并所有层

  • 本文关键字:合并 TCPDF PHP TCPDI php tcpdf
  • 更新时间 :
  • 英文 :


我试图使用TCPDF/TCPDI生成PDF,但随后将PDF压平,使其成为基于图像的PDF。结果是PDF将无法选择,理想情况下将停止Adobe允许文本编辑。

从我所读到的内容来看,仅仅使用TCPDF是不可能的,然而,我最近看到一个网站正是这样做的,并表示它是由FPDF生成的。

我已经设法通过TCPDF获得了结果,然后使用Ghostscript pdfimage24。

$pdf = new MYPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false);
$pdfdata = file_get_contents('docs/original.pdf');
$pagecount = $pdf->setSourceData($pdfdata);
for ($i = 1; $i <= $pagecount; $i++) {
$tplidx = $pdf->importPage($i);
$pdf->AddPage();
$pdf->useTemplate($tplidx);
// PDF INFO TO MERGE HERE
}
$pdf_out = $pdf->Output($before, 'F');
exec('gs -q -dNOPAUSE -sDEVICE=pdfimage24 -r300 -dDownScaleFactor=3 -sOutputFile=docs/after.pdf docs/before.pdf -c quit');

由于我是PHP的新手,我的问题是,这是否是立即进行的,这种方式会对性能造成影响吗?有没有任何方法可以在基于FPDF的TCPDF中获得结果,以这种方式压平图像。

提前谢谢。

我不清楚你为什么用Ghostscript标记它,GS似乎完全按照你的要求行事。

您可以通过选择pdfwrite设备和-dNoOutputFonts而不是渲染到图像来防止复制文本(如果这是您的真正目标(。它仍然会比使用带有字体的原始文件更大,但你肯定无法复制/编辑文本,因为不会有任何文本(所有的"文本"都被绘制为矢量路径(

将PDF文件转换为图像会产生一个很大的文件,而且不能很好地缩放,或者如果你保持低分辨率以保持小文件,则无法辨认。除非出于某种原因,你特别希望PDF只包含位图,否则我不会这么做。

最新更新