我正在为我们在路上的人制作报价系统原型。
基本上我要做的是从网络表单中获取详细信息,这将用于填充PDF模板。
目前我认为最好的方法是使用占位符创建PDF模板,例如[[clientname]],在PDF中找到该引用,然后将其与表单中的内容进行交换。
我正在使用codeigniter为应用程序提供经验,以便进行快速原型设计。有没有人知道库或其他这样的功能,这将允许我以这种方式轻松修改PDF文档?
谢谢你的时间!
答案 0 :(得分:3)
PDF是由页面渲染器呈现的对象集合;通过"替换占位符来修改块" 可能工作,但另一方面,它可能不会。例如,如果你写" [[zip_code]]"在一个文档中,很可能会将它变成三个或更多块,并且PDF(一旦可读 - 它可能不是)将不包含ASCII序列" [[zip_code] ]"一点都不。
您最好的选择是使用PDFLib或CPDF从模板生成空白pdf ,您将在其中存储每个文本块的坐标。实际上你可以在一个PHP文件like this中执行此操作:
$tokens = array(
'zip' => array( 2500, 1730, ... ),
'address' => array( 2600, 1234, ... ),
...
);
foreach ($tokens as $token => $info) {
list ($x, $y /*, ..font... size...*/) = $info;
PDF_show_XY ($pdf, $record[$token], $x, $y );
}
PDF_end_document($pdf);
然后当你有页面到" overlay"在您选择的背景下,您可以使用pdftk
:
pdftk foreground.pdf background background.pdf output merged.pdf
使用适当的分辨率单位(例如十分之一毫米),您可以打印背景并使用普通标尺测量您想要字段的位置。
PDF比你从头开始生成它们有点笨重,但它们将打印完美 - 两层将被"合并"在印刷品上,并且不会互相干扰。
答案 1 :(得分:1)
您可以使用类似https://code.google.com/p/dompdf/的内容,它会根据网页生成PDF。应该让事情变得简单 - 只需让页面看起来如你所愿,让用户填写相关信息,然后生成pdf。
就编辑现有PDF而言,请参阅PDF Editing in PHP?。
http://www.setasign.com/products/fpdi/about/和Zend看起来是最好的选择。然而,鉴于你的约束,Zend似乎很难处理。如果预算是一个问题,可能至少值得测试dompdf。