我正在尝试使用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仅由位图组成,否则我不会这样做。