使用 php 修改现有的 pdf 文档

Modify existing pdf document with php

所以我想做的很简单,我想修改现有的 pdf 文档。

它不会写入我添加的现有 pdf,而是写入一个空白文件。

这是代码。

<?php

require('vendor/autoload.php');

$mpdf = new mPDF();

$mpdf->AddPage();
// set the sourcefile
$mpdf->setSourceFile('hs.pdf');
// import page 1
$tplIdx = $mpdf->importPage(1);
// use the imported page and place it at point 10,10 with a width of 200 mm   (This is the image of the included pdf)
$mpdf->useTemplate($tplIdx, 10, 10, 200);
// now write some text above the imported page
$mpdf->SetTextColor(0,0,255);

$mpdf->SetFont('Arial','B',8);
$mpdf->SetXY(95, 16);
$mpdf->Write(0, "Mindfire");
$mpdf->Output('newpdf.pdf');

这是我要写入的图像。 enter image description here

添加这是它输出的图像 enter image description here

如您所见,它似乎每次都只是写入一个空白文档,而不是写入第一个 pdf。

有什么想法吗?

更新:

这是我的 composer.json 文件

 {
  "require": {
    "mpdf/mpdf": "v5.5.1"
  }
}

我已经尝试了所有不同版本的 mpdf,但同样的错误仍然存​​在。

Uncaught Error: Class 'Mpdf\Mpdf' not found in

似乎围绕 mPDF 版本语法和作曲家的使用存在一些混淆。
由于您尝试了一些不明智的解决方法,我建议您重置作曲家环境和 Reinstalling mPDF

设置项目目录为你的CWD

cd /path/to/project

删除作曲家管理的文件

Linux OS

rm -rf ./vendor
rm ./composer.json
rm ./composer.lock

Windows OS 命令

rmdir /Q /S .\vendor
del .\composer.json
del .\composer.lock

Windows OS PowerShell

Remove-Item -Recurse -Force .\vendor
Remove-Item .\composer.json
Remove-Item .\composer.lock

重新安装 mPDF 库文件

composer require mpdf/mpdf

您的项目目录应包含以下内容:
其中 pdf_creator.php 是用于生成 PDF 的脚本。

project/
   composer.json
   hs.pdf
   pdf_creator.php
   vendor/
      mpdf/
      autoload.php
      ...

检查 composer.json 文件中的 mPDF 版本
根据版本使用以下示例之一。

{
    "require": {
        "mpdf/mpdf": "^8.0"
    }
}

mPDF 4.3 到 6.x

方法名称使用 pascal-cased 模式
没有命名空间
类名是 mPDF()

示例:example41_MPDFI_template.php

<?php
/* pdf_creator.php */

require_once __DIR__ . '/vendor/autoload.php';

$mpdf = new mPDF();

// set the sourcefile
$mpdf->SetImportUse(); // <--- required for mPDF versions < 8.0
$mpdf->SetSourceFile(__DIR__ . '/hs.pdf'); // absolute path to pdf file

// import page 1
$tplIdx = $mpdf->ImportPage(1);

// use the imported page and place it at point 10,10 with a width of 200 mm   (This is the image of the included pdf)
$mpdf->UseTemplate($tplIdx, 10, 10, 200);

// now write some text above the imported page
$mpdf->SetTextColor(0, 0, 255);
$mpdf->SetFont('Arial', 'B', 8);
$mpdf->SetXY(95, 16);
$mpdf->Write(0, 'Mindfire');
$mpdf->Output('newpdf.pdf');

mPDF 7.x

方法名称使用 pascal-cased 模式
引入了 \Mpdf 命名空间
类名是 Mpdf()

示例Importing Files & Templates

<?php
/* pdf_creator.php */

require_once __DIR__ . '/vendor/autoload.php';

$mpdf = new \Mpdf\Mpdf();

// set the sourcefile
$mpdf->SetImportUse(); // <--- required for mPDF versions < 8.0
$mpdf->SetSourceFile(__DIR__ . '/hs.pdf'); // absolute path to pdf file

// import page 1
$tplIdx = $mpdf->ImportPage(1);

// use the imported page and place it at point 10,10 with a width of 200 mm   (This is the image of the included pdf)
$mpdf->UseTemplate($tplIdx, 10, 10, 200);

// now write some text above the imported page
$mpdf->SetTextColor(0, 0, 255);
$mpdf->SetFont('Arial', 'B', 8);
$mpdf->SetXY(95, 16);
$mpdf->Write(0, 'Mindfire');
$mpdf->Output('newpdf.pdf');

mPDF 8.x

方法名称使用 驼峰式 模式
引入了 \Mpdf 命名空间
类名是 Mpdf()
方法 Mpdf::SetImportUse() 已删除

示例Importing Files & Templates

<?php
/* pdf_creator.php */

require_once __DIR__ . '/vendor/autoload.php';

$mpdf = new \Mpdf\Mpdf();

// set the sourcefile
// $mpdf->SetImportUse(); // <--- not needed for mPDF version 8.0+
$mpdf->setSourceFile(__DIR__ . '/hs.pdf'); // absolute path to pdf file

// import page 1
$tplIdx = $mpdf->importPage(1);

// use the imported page and place it at point 10,10 with a width of 200 mm   (This is the image of the included pdf)
$mpdf->useTemplate($tplIdx, 10, 10, 200);

// now write some text above the imported page
$mpdf->SetTextColor(0, 0, 255);
$mpdf->SetFont('Arial', 'B', 8);
$mpdf->SetXY(95, 16);
$mpdf->Write(0, 'Mindfire');
$mpdf->Output('newpdf.pdf');

现在 运行 从 CLI 中查看您的脚本是否发出任何错误。

cd /path/to/project
php pdf_creator.php

备注

    编辑 PDF 文件不需要
  • $mpdf->AddPage();,除非 向生成的输出 PDF 添加另一页。