代码之家  ›  专栏  ›  技术社区  ›  Chris Athanasiadis

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

  •  0
  • Chris Athanasiadis  · 技术社区  · 6 年前

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

    在local env(MacOS)中,因为上传的文件是1.6版本,所以转换后的文件大小差不多是原始文件的一半,新创建的文件大小也一样,但是在production server(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);
    
    1 回复  |  直到 6 年前
        1
  •  0
  •   Chris Athanasiadis    6 年前

    最后不是mPDF,而是Ghostscript。

    稍有不同的版本(9.22和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