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

问题描述 投票:0回答:1

我正在尝试使用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中获得结果以扁平化图像?这样。

提前感谢。

php imagemagick tcpdf ghostscript
1个回答
0
投票

我不清楚您为什么用Ghostscript对此进行了标记,GS的行为完全符合您的要求。

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

将PDF文件转换为图像会产生一个较大的文件,缩放比例不佳,或者如果您将分辨率降低而保留较小的文件,则不会清晰。除非出于某种原因,除非您特别希望PDF仅由位图组成,否则我不会这样做。

© www.soinside.com 2019 - 2024. All rights reserved.