当前位置: 首页 > 知识库问答 >
问题:

如何通过FPDI将外部pdf文件作为附加页面添加到TCPF

严修诚
2023-03-14

我正在使用TCPDF从php文件创建PDF文件。一切正常。现在,我想使用现有页面添加一个附加页面。来自服务器的pdf文件。

最好的方法是使用FPDI afaik。

但我找不到任何关于如何在TCPDF中设置FPDI以添加页面的文档或工作示例。我所看到的只是如何使用外部pdf作为标题或背景等。

像这个https://www.setasign.com/products/fpdi/about/

我在TCPDF有什么:

use setasign\Fpdi\Tcpdf\Fpdi;

// require_once('tcpdf/config/lang/eng.php');
require_once('TCPDF-main/tcpdf.php');
require_once('FPDI/src/autoload.php');

// Extend the TCPDF class to create custom Footer
class MYPDF extends TCPDF {

    // Page footer
    public function Footer() {
        // Position at 15 mm from bottom
        $this->SetY(-15);
        // Set font
        $this->SetFont('helvetica', 'I', 8);
        // Page number
        $this->Cell(0, 10, 'Page '.$this->getAliasNumPage().'/'.$this->getAliasNbPages(), 0, false, 'C', 0, '', 0, false, 'T', 'M');
    }
}

// add external PDF with FPDI (not working)

$pdf = new MYPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', true);

$pageCount = $pdf->setSourceFile("hiking.pdf");
$tplIdx = $pdf->importPage(1, '/flyer');

$pdf->addPage();
$pdf->useTemplate($tplIdx, 10, 10, 90);

$pdf->Output();


// create new PDF document with TCPDF (working)

$pdf = new MYPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', true);

$pdf->setPrintHeader(false);
$pdf->setPrintFooter(true);

$pdf->AddPage();
ob_start(); //Start new output buffer

//Write page 1
$html = include('mytour.php');

$html = ob_get_contents();

$pdf->writeHTML($html, true, 0, true, 0);

// reset pointer to the last page
$pdf->lastPage();
ob_end_clean();

// ---------------------------------------------------------

$cdate = date("y-d-m");
$ctime = date("H-i-s");

//Close and output PDF document
$output1 = "mytour.pdf";
$pdf->Output($output1, 'I');

错误我收到:PHP致命错误:未捕获错误:调用未定义的方法MYPDF::setSourceFile()

感谢任何关于如何做的提示。

共有1个答案

吕衡
2023-03-14

只需扩展正确的类,如下所示:

class MYPDF extends \setasign\Fpdi\Tcpdf\Fpdi {
...
}
 类似资料:
  • 问题内容: 我正在尝试使用最新的REST API发布JIRA附件。这是我的代码: 但是,我得到以下回应: 我的本地JIRA实例中确实存在密钥TEST-2的问题,我可以在Jira应用程序本身中“手动”添加附件。我知道我必须添加类型为“ X-Atlassian- Token:nocheck”的标头以防止XSRF,但是从输出来看,我必须做错了什么。令我更加困惑的是,在XSRF检查失败。 我已经在Goog

  • 我想从外部源向fullcalendar jquery插件添加一个事件。我需要事件标题;开始日期和结束日期。我读到回调函数是在您将外部源放到日历上时调用的。这将报告警报中的开始日期。选项显示事件的标题。此警报在回调后显示。这是代码: 如何从函数的回调中获取开始日期值?

  • 问题内容: 我正在使用Apache PDFBox(http://pdfbox.apache.org/)从任意数量的文件(包括图像和其他PDF)中创建PDF。现在,我需要将MS Office文档(Word,Excel和Outlook MSG)添加到PDF。这些文件几乎可以具有每个Office版本,因此不能认为该文件是新的Office文件(例如docx)还是旧的办公室文件(例如doc)。 有什么办法只

  • 我有一个Hadoop作业,其中映射器必须使用外部jar。 我试图将这个jar传递给映射器的JVM 通过hadoop命令上的-libjars参数 via作业。addFileToClassPath HADOOP_CLASSPATH。 这些方法都不起作用。这是我得到的堆栈跟踪。它抱怨的缺失类是SparseDoubleMatrix1D在colt.jar. 如果我需要提供任何其他调试信息,请告诉我。谢谢

  • 问题内容: 我正在尝试将文件附加到通知邮件中的管道。 我怎样才能做到这一点?一个例子会很好。 问题答案: email-ext使用Ant文件语法 例如用法:

  • 问题内容: 我有一个电子应用程序。我尝试使该应用程序打开一个.exe文件。我在根文件夹中创建了一个目录,并将.exe文件放置在该目录中。在开发中,使用可以打开文件没有问题,但是当我打包应用程序(使用)时,它不会打开exe文件,并且该文件夹上也没有文件夹。 我尝试编写使用来控制台默认位置的脚本,并输出(文件)。 打包应用程序后,如何添加可以访问的外部文件? 问题答案: 通过使用extraResour