Edit PDF en PHP?[已关闭]

2022-08-30 08:01:05

有谁知道在PHP中编辑PDF的好方法吗?最好是开源/零许可证成本方法。:)

我正在考虑打开PDF文件,替换PDF中的文本,然后写出PDF的修改版本?

在前端


答案 1

如果您采用“填空”方法,则可以在页面上精确定位文本。因此,将缺少的文本添加到文档中相对容易(如果不是有点乏味的话)。例如,使用Zend Framework:

<?php
require_once 'Zend/Pdf.php';

$pdf = Zend_Pdf::load('blank.pdf');
$page = $pdf->pages[0];
$font = Zend_Pdf_Font::fontWithName(Zend_Pdf_Font::FONT_HELVETICA);
$page->setFont($font, 12);
$page->drawText('Hello world!', 72, 720);
$pdf->save('zend.pdf');

如果您尝试替换内联内容,例如“[占位符字符串]”,则会变得更加复杂。虽然从技术上讲可以做到这一点,但您可能会弄乱页面的布局。

PDF文档由一组原始绘图操作组成:此处的线条,此处的图像,此处的文本块等。它不包含有关这些基元的布局意图的任何信息。


答案 2

有一个免费且易于使用的PDF类来创建PDF文档。它被称为FPDF。结合FPDI(http://www.setasign.de/products/pdf-php-solutions/fpdi),甚至可以编辑PDF文档。下面的代码演示如何使用 FPDF 和 FPDI 用用户数据填充现有礼品券。

require_once('fpdf.php'); 
require_once('fpdi.php'); 
$pdf = new FPDI();

$pdf->AddPage(); 

$pdf->setSourceFile('gift_coupon.pdf'); 
// import page 1 
$tplIdx = $this->pdf->importPage(1); 
//use the imported page and place it at point 0,0; calculate width and height
//automaticallay and ajust the page size to the size of the imported page 
$this->pdf->useTemplate($tplIdx, 0, 0, 0, 0, true); 

// now write some text above the imported page 
$this->pdf->SetFont('Arial', '', '13'); 
$this->pdf->SetTextColor(0,0,0);
//set position in pdf document
$this->pdf->SetXY(20, 20);
//first parameter defines the line height
$this->pdf->Write(0, 'gift code');
//force the browser to download the output
$this->pdf->Output('gift_coupon_generated.pdf', 'D');

推荐