1

我以为我可以为此找到一个插件,但似乎没有。

这是必需的过程:

用户在网站上填写表格(最好是 cforms!)表格中的数据填充服务器上 pdf 的空单元格

然后,一旦我走到那一步,我就会担心接下来的步骤!

生成 pdf 不是一种选择,因为它是法律文件。

谢谢。

4

1 回答 1

1

好的,我已经想出了如何做到这一点,它似乎有点乱,可惜没有更简单的方法!

我使用的两个插件是 cforms (www.deliciousdays.com/cforms-plugin) 和一个加载 Zend 框架的插件 (h6e.net/wordpress/plugins/zend-framework) pdf写作能力。

激活两个插件后,在 cforms 插件目录中找到名为 my-functions.php 的文件并下载到您的计算机。该文件的大部分内容已被注释掉,因此您需要取消注释该功能

function my_cforms_action($cformsdata) {

}

按下提交按钮时,此函数中的任何内容都会运行(有关详细信息,请参阅 cforms API 文档)。您可以测试它是否有效,但会在 this 函数中回显某些内容。您还可以测试 Zend 框架是否已加载使用

if (defined('WP_ZEND_FRAMEWORK') && constant('WP_ZEND_FRAMEWORK')) {
      echo 'Zend is working!';
  }

表单字段以数组形式出现,因此我们需要先将其打印出来以计算字段名称(将“5”替换为您使用的任何表单):

$formID = $cformsdata['id'];
$form   = $cformsdata['data'];

if ( $formID == '5' ) {
    print_r($form);
}

一旦你有了你的字段名称,这就是写入 pdf 的完整代码

//Get the ID of the current form and all the data that's been submitted
$formID = $cformsdata['id'];
$form   = $cformsdata['data'];

//run this code only if it's the form with this ID
if ( $formID == '5' ) {

        //Loads the Zend pdf code
    require_once 'Zend/Pdf.php';

    //Set the path of the pdf (in the root of my wordpress installation)
    $fileName = 'c100-eng2.pdf';

    //loads the pdf 
    $pdf = Zend_Pdf::load($fileName);

        //Selects the page to write to
    $page = $pdf->pages[0];
       //Selects which font to use
    $font = Zend_Pdf_Font::fontWithName(Zend_Pdf_Font::FONT_HELVETICA);
    $page->setFont($font, 12);


    //Writes the text from the field 'Your name' 210 points from the left and 420 points from the bottom of the selected page
    $page->drawText($form['cf_form5_Your name'], 210, 420);


    //for some reason there is no way to wrap text using Zend_pdf so we have to do it ourselves for any paragraphs...
    //starting 600 points from the bottom of the page
    $startPos = 600;
    //we're using the form field "About you"
    $paragraph = $form['cf_form5_About you'];
    //sets the width of the paragraph to 30 characters 
    $paragraph = wordwrap( $paragraph, 30, '\n');
    //breaks paragraph into lines
        $paragraphArray = explode('\n', $paragraph);
    //writes out the lines starting 200 points from the left with a line height of 12 points
        foreach ($paragraphArray as $line) {
            $line = ltrim($line);
            $page->drawText($line, 200, $startPos);
            $startPos = $startPos - 12;
        }

 //saves the pdf
$pdf->save('new.pdf');

我一开始就遇到了问题,因为我使用的 pdf 类型不正确,您可以通过使用 Zend pdf 创建一个 pdf 来检查您的代码是否正确,因为这应该始终有效(在此处了解如何做到这一点:framework.pdf)。 zend.com/manual/1.12/en/zend.pdf.html)。

我使用 Photoshop 通过将标尺设置为“点”来计算出我想要书写的确切位置

于 2013-01-02T11:59:15.510 回答