我有一个docx文档文件,其中包含格式化和布局,我将其另存为PDF文件。 我想使用这个pdf文件作为模板来创建预填充用户数据的新pdf文件。
我见过FPDF,FPDI,tcPDF,domPDF,Zend PDF,http://koivi.com/fill-pdf-form-fields/(Justin Koivisto),一些转换工具像HTML2PDF和stackoverflow上提到的一些命令行工具。除FPDI外,其中没有一个使用PDF模板提供示例来搜索和替换包含实际数据的自定义标记(通常来自数据库)或添加数据而不指定一堆值,如x,y,postion,font,font-formating等。
从头开始创建PDF似乎太多了。 我还没有考虑使用HTML2PDF转换器,因为结果看起来变化很大,然后存在样式问题。有些工具允许使用CSS,但通常有限制,例如没有浮动支持。
是不是像使用PHPExcel的Excel一样使用模板的简单方法?
我的需求是:
答案 0 :(得分:14)
我真的推荐MPDF:
唯一不好的是它有点重量,但你可以删除你不需要的东西。
答案 1 :(得分:6)
使用TCPDF您可以使用HTML标签创建PDF模板原则它创建快速,易于使用,易于集成我用它来生成律师事务所的详细发票(多页不同格式),生产信封珠宝工作室(包括照片),库存单和发票。
答案 2 :(得分:5)
尝试FPDI它支持编辑现有模板并在该模板文件中进行更改
使用非常紧张:
<?php
require_once('fpdf.php');
require_once('fpdi.php');
$pdf = new FPDI();
$pagecount = $pdf->setSourceFile('TestDoc.pdf');
$tplidx = $pdf->importPage(1, '/MediaBox');
$pdf->addPage();
$pdf->useTemplate($tplidx, 10, 10, 90);
$pdf->Output('newpdf.pdf', 'D');
答案 3 :(得分:2)
LiveDocx是一个基于模板的文档创建平台。
http://www.phplivedocx.org/articles/getting-started-with-phplivedocx/
答案 4 :(得分:1)
尝试将PDF用作“模板”的问题是PDF是排版文档格式。例如。它是一个固定的布局,你不应该过多地混淆布局。
如果您想对此做更多的事情,使用XSL-FO之类的东西从XML“模板”生成文档会更简单。您所需要做的就是使用正确的字段生成XML,然后XSL-FO渲染器可以为您创建PDF。
最好的(唯一的?)免费XSL-FO渲染器是Apache FOP。
答案 5 :(得分:1)
您可以使用https://github.com/applicius/dhek/releases跳过使用现有PDF定义模板的所有痛苦。它在PDF页面/坐标上创建一个JSON映射区域,以便您可以使用您喜欢的PDF API填充它。
答案 6 :(得分:1)
您可以使用Word或OpenOffice邮件合并功能创建模板并将数据导入标记,而不是使用PHP执行此操作。然后你可以打印&#34;但导出为pdf而不是实际打印。如果您不需要定期更新模板,这可能是一种更快的解决方案。我为大约150种产品做了这个,花了不到30分钟,包括创建模板和上传pdf。只是一个想法,希望这有助于其他人!
答案 7 :(得分:0)
看看http://template2pdf.com/ 它提供了一个API,允许您使用OpenOffice或LibreOffice模板并替换文本或图像。
答案 8 :(得分:0)
以下是如何使用一个PDF模板和内容作为HTML创建多个页面的示例。基于MPDF
库。
$mpdf = new mPDF('utf-8', $format_size, 0, '', $margin_left, $margin_right, $margin_top, $margin_bottom, 0, 0, $orientation);
if ( $bg_template ) {
// is a PDF template file
$mpdf->SetImportUse();
$pagecount = $mpdf->SetSourceFile( $bg_template );
$tplIdx = $mpdf->ImportPage( $pagecount );
}
foreach ( $html as $one_letter_text ) {
$mpdf->addPage();
if ( $bg_template ) {
$mpdf->useTemplate( $tplIdx, 0, 0);
}
$mpdf->WriteHTML( $one_letter_text );
}
$title = 'my-letter.pdf';
$pdf_path = $this->created_pdf_upload_dir.'/'.$title;
$mpdf->Output( $pdf_path, 'F');
答案 9 :(得分:0)
我在一个项目中需要它,因此我为此创建了一个快速工具。您可以检查它,随时贡献here
答案 10 :(得分:0)
如果服务器已安装OpenOffice,则可以在无头模式下使用soffice将RTF文件(富文本格式)转换为PDF。
在模板中创建带有模板括号的RTF,例如“亲爱的{{{name}}},你好吗?”
打开文件并使用$content=file_get_contents('path_to_file');
根据需要替换文本:$content=str_replace('{{{name}}}', 'Bruce Wanye', $content);
将内容保存到新文件:file_put_contents('path_to_file2', $content);
现在转换为PDF:excec("soffice --headless --convert-to pdf 'path_to_file2' --outdir 'target_directory'");