使用 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()
<?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()
已删除
<?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 添加另一页。
所以我想做的很简单,我想修改现有的 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()
<?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()
已删除
<?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 添加另一页。