MPDF разных размеров файлов для каждой операционной системы - PullRequest
0 голосов
/ 30 августа 2018

Я использую mPDF и Ghostscript как часть более крупного приложения, где рабочий процесс выглядит так:

  1. PDF загружается сторонним программным обеспечением
  2. Файл обнаружен и преобразован в PDF 1.4 (с помощью оболочки GhostScript: https://github.com/xthiago/pdf-version-converter)
  3. На основе преобразованного файла создается новый файл PDF

В локальной среде env (MacOS), поскольку загруженные файлы имеют версию 1.6, преобразованный файл имеет более или менее половину исходного размера, и то же самое относится к вновь созданному файлу, но на рабочем сервере (Ubuntu), даже если конвертированный имеет тот же размер, что и его локальный эквивалент, новый имеет в 10 раз больший размер: (например, 48 МБ против 480 МБ)

В чем может быть причина такой разницы?

Используемый код выглядит так:

$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 Ответ

0 голосов
/ 31 августа 2018

Наконец, это не 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
...