【问题标题】:How Generate Dynamic PDF file in PHP?如何在 PHP 中生成动态 PDF 文件?
【发布时间】:2012-05-21 16:37:42
【问题描述】:

大家好,

我有一个包含 5 个步骤的表单,在最后一步用户点击提交比所有 数据将存储在数据库中。

现在我想在第一步之后生成 pdf,在我的表单第一步中有个人详细信息字段。因此,在第二步中,用户可以下载这些具有第一步数据的动态 pdf。 我知道如何生成 PDF,只是想用动态变量来做到这一点。

但这里的问题是我没有数据可以从 db 获取这些所有字段存储在所有 sep 结束时。如何获取生成 PDF 文件的第一步数据。

提前致谢!

【问题讨论】:

  • 我可以建议您在提问时说明您进行了哪些研究? StackOverflow 上的读者几乎总是想知道您已经尝试过什么。

标签: php pdf pdf-generation


【解决方案1】:

如果您需要使用 Word 或 ODT 模板生成复杂的动态 PDF 文档,您可以尝试Docxpresso

【讨论】:

    【解决方案2】:

    我认为TCPDF FLOSS PHP class 可能会对您有所帮助。

    【讨论】:

      【解决方案3】:

      我认为 cookie 是最好的主意

      <SCRIPT TYPE="text/javascript">
      set_cookie( "name", "ajay", 1 );
      set_cookie( "id", "101", 1 );
      set_cookie( "gender", "male", 1 );
      
      
      function set_cookie ( cookie_name, cookie_value,
          lifespan_in_days, valid_domain )
      {
          // http://www.thesitewizard.com/javascripts/cookies.shtml
          var domain_string = valid_domain ?
                             ("; domain=" + valid_domain) : '' ;
          document.cookie = cookie_name +
                             "=" + encodeURIComponent( cookie_value ) +
                             "; max-age=" + 60 * 60 *
                             24 * lifespan_in_days +
                             "; path=/" + domain_string ;
      }
      
      
      </SCRIPT>
      

      现在使用 FPDF

      <?php
      require('../fpdf.php');
      
      $pdf = new FPDF();
      $pdf->AddPage();
      $pdf->SetFont('Arial','B',16);
      $pdf->Cell(40,10,'Hello World!');
      
      $pdf->Cell(80,10,$_COOKIE['name']);
      $pdf->Cell(80,10,$_COOKIE['id']);
      
      $pdf->Output();
      ?>
      

      【讨论】:

      • 那行得通,但我不会为此使用 JS,因为它可以被用户禁用,并且某些(移动)平台不使用它。
      • @halfer 哦,是的,你的建议期待 AJAX
      • 如果您将整个表单提交到服务器,则无需使用 AJAX - 只需在 PHP 中的 POST 处理部分中进行。如果您仍然通过 AJAX 提交表单值,则只需要使用 AJAX。
      • 我写的问题是我在最后一步存储数据,所以它不是解决方案。
      • Ha :) - 你的问题不清楚(因此投反对票)。我的理解是,在您的五个阶段中的每一个阶段,您都将数据提交到服务器并将其存储在会话中 - 但是现在看来,在您的每个阶段之后,您都没有向服务器发送任何内容。您如何在各个阶段之间存储这些信息?一个阶段和下一个阶段之间的过渡是什么?您是否使用 JavaScript 隐藏表单的一部分并显示另一部分?还是全部都在一个页面上,每个阶段只是页面上的不同部分?
      【解决方案4】:

      您可以使用FPDF 类。使用起来非常简单,如下例所示:

      <?php
      require('fpdf.php');
      
      $pdf = new FPDF();
      $pdf->AddPage();
      $pdf->SetFont('Arial','B',16);
      $pdf->Cell(40,10,'Hello World!');
      $pdf->Output();
      ?>
      

      【讨论】:

      • 请阅读问题一次,我知道 FPDF,我想动态生成它
      • @AjayPatel - 在我看来,这个答案显然来自已经阅读过这个问题的人。将表单值存储在会话变量中,然后使用 FPDF 的功能创建文档。上面的“Hello Word”可以来自数据库、会话变量、直接用户输入——事实上,来自任何地方。
      • @halfer 我问的是那个,而不是如何生成 pdf,我只是在问题中写道,我知道如何生成 pdf
      • 在会话中存储值的方法如下:调用session_start();,然后使用$_SESSION['var'] = 'value';。我建议围绕“PHP 会话”进行网络搜索 - 有 数千 个预先存在的资源。
      【解决方案5】:

      您可以在第一步中使用 session 来存储数据,然后使用TCPDF 等多个库来生成 pdf。

      【讨论】:

      • 是否可以使用 AJAX req 和任何示例链接
      • 只需制作一个基于表单数据生成pdf的php脚本,当用户单击“下一步”按钮时使用jquery ajax函数调用它。 jquery ajax 示例 - stackoverflow.com/questions/5004233/…
      猜你喜欢
      • 1970-01-01
      • 2010-11-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-17
      • 2010-10-03
      • 2012-02-17
      相关资源
      最近更新 更多