在PDF中更改占位符

时间:2013-12-18 18:48:14

标签: php codeigniter pdf

我正在为我们在路上的人制作报价系统原型。

基本上我要做的是从网络表单中获取详细信息,这将用于填充PDF模板。

目前我认为最好的方法是使用占位符创建PDF模板,例如[[clientname]],在PDF中找到该引用,然后将其与表单中的内容进行交换。

我正在使用codeigniter为应用程序提供经验,以便进行快速原型设计。有没有人知道库或其他这样的功能,这将允许我以这种方式轻松修改PDF文档?

谢谢你的时间!

2 个答案:

答案 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。