【问题标题】:FPDI : Call to undefined method FPDI::_getrawstream() on DrupalFPDI:在 Drupal 上调用未定义的方法 FPDI::_getrawstream()
【发布时间】:2014-11-26 21:12:26
【问题描述】:

我尝试使用带有 Drupal 的 FPDI 库将 pdf 连接在一起。 我创建了一个类来向 fpdi 添加一个新的 pdf :

class PdfGenerator
{
public function importPDF(&$fpdi, $file)
  {
      $pageCount = $fpdi->setSourceFile($file);
      for ($p = 1; $p <= $pageCount; $p++) {
          $tplidx = $fpdi->importPage($p);
          $size = $fpdi->getTemplatesize($tplidx);

          if ($size['w'] > $size['h']) {
              $format = 'L';
          } else {
              $format = 'P';
          }

          $fpdi->addPage($format, array($size['w'], $size['h']));
          $fpdi->useTemplate($tplidx);
      }
  }
}

我这样调用 importPDF 方法:

$pdf = new FPDI();
$pdf_path = 'path/to/pdf.pdf';
$pdfGenerator->importPDF($pdf,$pdf_path);
$pdf->Output('test.pdf','I');

但不幸的是我有这个错误:

Fatal error: Call to undefined method FPDI::_getrawstream() in [..]sites/all/libraries/fpdi/fpdi.php on line 473

你知道这个错误的原因吗?

提前谢谢你:)

【问题讨论】:

    标签: drupal fpdi


    【解决方案1】:

    确保将FPDIFPDF 更新到最新版本。

    【讨论】:

    • 我使用 FPDI v1.5.2 和 FPDF v1.7。我在没有 Drupal 的全新安装上尝试了相同的代码,它可以工作。我仍然没有任何 Drupal 的解决方案。
    • 在您的 Drupal 设置中,似乎在加载 FPDI 之前加载了过时版本的 TCPDF。
    • 其实我之前是用html2pdf生成动态pdf的。在 html2pdf 中,TCPDF 的版本是 5.0.002。
    【解决方案2】:

    我找到了解决方案: 我实际上在 FPDI 之前使用 HTML2PDF 来生成 PDF。

    • HTML2PDF 包含过时版本的 TCPDF (5.0.002)

    所以当我使用 FPDI 时,fpdi 对象实例化的类型是 TCPDF 而不是 FPDF。而FPDI调用了TCPDF的一个函数,该函数出现在TCPDF v6上。

    解决方案: 我将 FPDI 降级到版本 1.3.3 以匹配 html2pdf (v5.0.002) 我把 fpdf_tpl 版本 1.2.2 与 fpdi lib v1.3.3 匹配

    这行得通!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-04-27
      • 2012-08-24
      • 1970-01-01
      • 2018-01-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-13
      相关资源
      最近更新 更多