haa*_*kym 1 php pdf ghostscript fpdf fpdi
我正在向现有 Web 应用程序添加一项新功能,该功能将验证上传的 PDF 文件的大小以确保其不小于 A4。Web 应用程序是使用 PHP/Laravel 构建的。
\n我考虑了两种方法来解决这个问题:
\n至于 Ghostscript,我在 SO 上找到了这个答案,建议使用一个名为的附加脚本pdf_info.ps(我确实按照评论建议首先下载了这个脚本)。但是,我无法让它正常工作。在将其添加到任何 PHP 脚本之前,我尝试运行以下命令:
\xce\xbb .\\gswin64c -dNODISPLAY -q -sFile=c:\\test.pdf [-dDumpMediaSizes=false] [-dDumpFontsNeeded=false] [-dDumpXML] [-dDumpFontsUsed [-dShowEmbeddedFonts] ] ..\\toolbin\\pdf_info.ps\nError: /undefinedfilename in ([-dDumpMediaSizes=false])\nOperand stack:\n\nExecution stack:\n %interp_exit .runexec2 --nostringval-- --nostringval-- --nostringval-- 2 %stopped_push --nostringval-- --nostringval-- --nostringval-- false 1 %stopped_push\nDictionary stack:\n --dict:1196/1684(ro)(G)-- --dict:0/20(G)-- --dict:78/200(L)--\nCurrent allocation mode is local\nLast OS error: No such file or directory\nGPL Ghostscript 9.19: Unrecoverable error, exit code 1\nRun Code Online (Sandbox Code Playgroud)\n当我尝试不同的方法(例如添加完整文件路径)时,我似乎收到错误的不同变体:“错误:/undefinedfilename in ([-dDumpMediaSizes=false])”。我在 Windows 上,所以我尝试添加像这样的完整文件路径“C:/Program Files/gs/gs9.19/toolbin/pdf_info.ps”并得到相同的错误。
\n通过 FPDF/FDPI,我使用 Composer 设置了一个小项目,并引入了这个包https://github.com/Setasign/FPDI-FPDF。我目前正在使用以下代码来读取现有文件:
\n<?php\nuse setasign\\Fpdi;\n\n// setup the autoload function\nrequire_once(\'vendor/autoload.php\');\n\n// initiate FPDI\n$pdf = new Fpdi\\Fpdi();\n\n// add a page\n$pdf->AddPage();\n\n// set the source file\n$pdf->setSourceFile("test.pdf");\n\n// import page 1\n$tplId = $pdf->importPage(1);\n\n// use the imported page and place it at point 10,10 with a width of 100 mm\n$pdf->useTemplate($tplId, 10, 10, 100);\n\n// output page dimensions\necho $pdf->GetPageWidth(); \necho \'<br>\';\necho $pdf->GetPageHeight();\nRun Code Online (Sandbox Code Playgroud)\n我得到以下输出
\n\n\n210.00155555556
\n297.00008333333
\n
所以我想问以下问题:
\nuseTemplate()?我欢迎任何替代方法的建议。
\n非常感谢任何帮助,谢谢!
\n导入页面的大小例如通过getTemplateSize()FPDI 方法返回:
$pdf = new FPDI('P','mm'); // change the snd parameter to change the units
$pdf->setSourceFile('test.pdf');
$pageId = $pdf->importPage(1);
$size = $pdf->getTemplateSize($pageId);
Run Code Online (Sandbox Code Playgroud)
$size 将是一个具有以下键的数组:宽度、高度、0(=宽度)、1(=高度)和方向(L 或 P)。
| 归档时间: |
|
| 查看次数: |
4019 次 |
| 最近记录: |