MPDF每个操作系统的文件大小不同

问题描述 投票:0回答:1

我使用mPDF和Ghostscript作为更大的应用程序的一部分,其中工作流程如下:

  1. PDF由第三方软件上传
  2. 检测到文件并将其转换为PDF 1.4(通过GhostScript包装器:https://github.com/xthiago/pdf-version-converter
  3. 根据转换后的文件生成新的PDF文件

在本地环境(MacOS)中,由于上传的文件是版本1.6,因此转换后的文件大小与原始文件大小相同,而新创建的文件大小相同,但在生产服务器(Ubuntu)中,即使转换后也是如此一个具有与其本地等效的相同的大小,新的大小是其大小的10倍:(例如48MB对480MB)

这种差异可能是什么情况?

使用的代码如下:

$mPdf = new \Mpdf\Mpdf(array(
'dpi' => 300
));

$mPdf -> SetImportUse();
$pageCount = $mPdf -> SetSourceFile($productFileToCopy);

for ($i = 1; $i <= $pageCount; $i++) {
   $importPage = $mPdf -> ImportPage($i);
   $wh = $mPdf -> getTemplateSize($importPage);
   $orientation = $wh['w'] > $wh['h'] ? 'L' : 'P';
   $mPdf -> AddPageByArray(array(
     'orientation' => $orientation,
     'sheet-size' => array(
       $orientation === 'L' ? $wh['h'] : $wh['w'],
       $orientation === 'L' ? $wh['w'] : $wh['h'],
      ),
      'margin-left' => 0,
      'margin-right' => 0,
      'margin-top' => 0,
      'margin-bottom' => 0,
      'margin-header' => 0,
      'margin-footer' => 0,
    ));

    $mPdf -> UseTemplate($importPage);
 }

 $mPdf -> Output($productFileFinal);
php linux macos ghostscript mpdf
1个回答
0
投票

最后它不是mPDF,而是Ghostscript。

略有不同的版本(9.22 vs 9.23)在此命令下生成10倍大的文件

gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/screen -dNOPAUSE  -dBATCH -dColorConversionStrategy=/LeaveColorUnchanged -dEncodeColorImages=false -dEncodeGrayImages=false -dEncodeMonoImages=false -dDownsampleMonoImages=false -dDownsampleGrayImages=false -dDownsampleColorImages=false -dAutoFilterColorImages=false -dAutoFilterGrayImages=false -dColorImageFilter=/FlateEncode -dGrayImageFilter=/FlateEncode
© www.soinside.com 2019 - 2024. All rights reserved.