我正在使用TCPDF生成PDF文档。我的要求是在动态生成的PDF的最后一页合并现有的PDF内容。
答案 0 :(得分:2)
到目前为止,解决您问题的最佳方法是使用public class Person {
private String id;
private String lName;
private String fName;
private String height;
public Person(String id, String fName, String lName, String height) {
this.id = id;
this.fName = fName;
this.lName = lName;
this.height = height;
}
public String toString() {
return "Person[" + id + ": " + lName + ", " + fName + ", " + height + "]";
}
}
。
https://github.com/Setasign/FPDI
它的工作方式是FPDI
扩展FPDI
,因此您可以使用TCPDF
使用的所有方法使用FPDI
对象,但使用从现有PDF文件(TCPDF
,setSourceFile
和getTemplateSize
)导入页面所需的其他方法。
设置看起来有点令人生畏,但如果您使用的是Composer,那实际上非常容易。只需将useTemplate
和setasign/fpdi
添加到setasign/fpdi-tcpdf
文件中,然后使用composer.json
的实例代替您的FPDI
实例。我发现我甚至不必像github页面上提到的那样调用TCPDF
。将其他条目添加到class_exists('TCPDF', true)
并运行composer.json
之后,它就运行了。
答案 1 :(得分:1)
这仍在为TCPDF开发:http://www.tcpdf.org/doc/code/classTCPDF__IMPORT.html#a5a9effc936e8fa461c0f6717c2d10d93
如果可能,您可以使用ZEND:
require_once 'Zend/Pdf.php';
$pdf1 = Zend_Pdf::load("1.pdf");
$pdf2 = Zend_Pdf::load("2.pdf");
foreach ($pdf2->pages as $page){
$pdf1->pages[] = $page;
}
$pdf1->save('3.pdf');
如果您在Linux上运行,还可以运行shell命令。
<?php
exec('pdfjam 1.pdf 2.pdf -o 3.pdf'); // -o = output
您可以从此处安装pdfjam:http://www2.warwick.ac.uk/fac/sci/statistics/staff/academic/firth/software/pdfjam/pdfjam_latest.tgz
答案 2 :(得分:0)
我尝试了FPDI的免费版本,但不支持PDF版本1.5或更高版本。
如果其他人正在寻找免费解决方案,那么我已经使用TCPDI。您可以在github上找到它。
我的项目不使用作曲家,因此我使用了https://github.com/pauln/tcpdi中的master分支 如果您使用的是作曲家,那么您也可以为作曲家找到一些叉子。只需在github上搜索tcpdi。
将其添加到项目中后,代码非常简单。
这是我的代码的摘录。我用它来保存隐私策略的副本(静态pdf),并将用户名和协议日期保存在页脚中。
// Create new PDF document
$pdf = new TCPDI(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false);
...
// Add the pages from the source file.
$pagecount = $pdf->setSourceFile($localPrivacy);
for ($i = 1; $i <= $pagecount; $i++) {
$tplidx = $pdf->importPage($i);
$pdf->AddPage();
$pdf->useTemplate($tplidx);
// Add agreement text in document footer
$pdf->SetXY(15,282);
$pdf->Cell(180, 5, "Documento approvato da {$fullName} il {$date}", 0, 0, 'C');
}
// Send PDF on output
$pdf->Output(FOLDER_PATH . DIRECTORY_SEPARATOR . "{$userId}.pdf", 'F');