Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/235.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP中的PDF编辑?_Php_Pdf - Fatal编程技术网

PHP中的PDF编辑?

PHP中的PDF编辑?,php,pdf,Php,Pdf,有人知道用PHP编辑PDF的好方法吗?最好是开源/零许可证成本方法。:) 我正在考虑打开一个PDF文件,替换PDF中的文本,然后写出PDF的修改版本 我过去曾使用FPDF以编程方式创建PDF文件,但有时觉得有点笨拙。我们使用rails应用程序创建PDF文件。它有PHP和大量其他语言的绑定 我们使用商业版,但他们也有一个有一些限制的版本 不幸的是,这只允许创建PDF 如果您想打开和“编辑”现有文件,pdflib确实提供了,但成本较低,Zend Framework可以加载和编辑现有的PDF文件。我认

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

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

我过去曾使用FPDF以编程方式创建PDF文件,但有时觉得有点笨拙。

我们使用rails应用程序创建PDF文件。它有PHP和大量其他语言的绑定

我们使用商业版,但他们也有一个有一些限制的版本

不幸的是,这只允许创建PDF


如果您想打开和“编辑”现有文件,pdflib确实提供了,但成本较低,Zend Framework可以加载和编辑现有的PDF文件。我认为它也支持修订

我用它在项目中创建文档,效果很好。但从未编辑过


查看文档

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

<?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');

PHP中的PDF/pdflib扩展文档非常稀少(bugs.PHP.net中已经提到了这一点)-我建议您使用Zend库。

如果您需要非常简单的PDF,那么Zend或就可以了。然而,我发现与他们共事既困难又令人沮丧。此外,由于API的工作方式,没有很好的方法将内容、表示和业务逻辑分开


因此,我使用了,它会自动将HTML和CSS转换为PDF文档。您可以像布局HTML页面一样布局模板,并使用标准HTML语法。您甚至可以包含一个外部CSS文件。该库并不完美,而且非常复杂的标记或css有时会被破坏,但我还没有找到其他同样有效的库。

不知道这是否是一个选项,但它的工作原理与Zend的pdf库非常相似,但您不需要加载大量额外的代码(Zend框架)。它只是扩展了FPDF

在这里,你基本上可以做同样的事情。加载PDF,在其上方写入,然后保存为新的PDF。在FPDI中,基本上是将PDF作为图像插入,这样就可以在上面放置任何想要的内容


但同样,它使用FPDF,因此如果您不想使用它,那么它将无法工作。

我确实对dompdf寄予厚望(这是一个很酷的想法),但定位问题是我使用FPDF的一个主要因素。虽然它是乏味的,因为每个元素都必须设置;它是强大的,因为所有人都出来了

我在文档中的工作区下方放置了一个图像,以便将我的布局放在上面以适应需要。即使对于列,它也总是足够了(需要一点php字符串计算,但没有什么太令人兴奋的)

祝你好运。


<?php

//getting new instance
$pdfFile = new_pdf();

PDF_open_file($pdfFile, " ");

//document info
pdf_set_info($pdfFile, "Auther", "Ahmed Elbshry");
pdf_set_info($pdfFile, "Creator", "Ahmed Elbshry");
pdf_set_info($pdfFile, "Title", "PDFlib");
pdf_set_info($pdfFile, "Subject", "Using PDFlib");

//starting our page and define the width and highet of the document
pdf_begin_page($pdfFile, 595, 842);

//check if Arial font is found, or exit
if($font = PDF_findfont($pdfFile, "Arial", "winansi", 1)) {
    PDF_setfont($pdfFile, $font, 12);
} else {
    echo ("Font Not Found!");
    PDF_end_page($pdfFile);
    PDF_close($pdfFile);
    PDF_delete($pdfFile);
    exit();
}

//start writing from the point 50,780
PDF_show_xy($pdfFile, "This Text In Arial Font", 50, 780);
PDF_end_page($pdfFile);
PDF_close($pdfFile);

//store the pdf document in $pdf
$pdf = PDF_get_buffer($pdfFile);
//get  the len to tell the browser about it
$pdflen = strlen($pdfFile);

//telling the browser about the pdf document
header("Content-type: application/pdf");
header("Content-length: $pdflen");
header("Content-Disposition: inline; filename=phpMade.pdf");
//output the document
print($pdf);
//delete the object
PDF_delete($pdfFile);
?>

有一个免费且易于使用的PDF类来创建PDF文档。它叫。与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');

Tcpdf也是在php中生成pdf的好工具

这太棒了!我不知道Zend框架是免费的,我被Zend Studio搞糊涂了,Zend Studio是专有的。对于任何试图使用Zend框架的人来说,这只是一个警告:它只适用于Acrobat版本4及之前创建的PDF。在第4版之后,Adobe开始对文件进行编码,使得在PDF上执行编辑(或导入其他PDF)变得更加困难。PDF 1.4支持。没有Zend,这现在可以工作吗?如果我想替换像[占位符字符串]这样的内容,有什么解决方案吗?您使用的是什么库?
PDF\u set\u info($pdfFile,“Title”,“PDFlib”)仍然不清楚这个isI认为他指的是内置php pdflib扩展的库。我只使用过FPDF,觉得它很棒。真是太棒了。我也在试着找到一个快速的解决办法。我希望我的每个产品页面都有相同的pdf,但每个pdf上都替换了产品编号和产品名称。我发现使用邮件合并(Word或OpenOffice)实际上是最简单的方法。然后我导出了所有的PDF并上传了它们。希望这对某人有所帮助。为什么它被认为不够集中?-1因为它没有回答问题。海报想要编辑现有的PDF,而不是从头开始创建。我来到这个页面是因为我想编辑一个PDF,但这个答案似乎对我更有用,因为我知道为什么用html从头开始比编辑现有的PDF更容易。优秀的库-正是我想要的,感谢您的推荐这很好,但在某些pdf中会出现此错误。
“FPDF错误:此文档(testcopy.pdf)可能使用了FPDI附带的免费解析器不支持的压缩技术。”
有任何解决方案吗?您需要将pdf转换为旧版本(pdf 1.4)或使用FPDI商业版。我们将解析器替换为一个单独的商业插件,使FPDI能够处理使用这些压缩特性的文档。是否可以从其他网页设置源文件?Ex:example.com/file.pdf?对于搜索如何轻松添加页眉和页脚的每个人,TCPDF有一个非常简单有效的示例: