每个操作系统的 MPDF 文件大小不同
MPDF different file sizes per operating system
我正在使用 mPDF 和 Ghostscript 作为一个更大的应用程序的一部分,其中的工作流程是这样的:
- PDF 由第 3 方软件上传
- 检测到文件并将其转换为 PDF 1.4(通过 GhostScript 包装器:https://github.com/xthiago/pdf-version-converter)
- 基于转换后的文件生成一个新的 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);
最后不是 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
我正在使用 mPDF 和 Ghostscript 作为一个更大的应用程序的一部分,其中的工作流程是这样的:
- PDF 由第 3 方软件上传
- 检测到文件并将其转换为 PDF 1.4(通过 GhostScript 包装器:https://github.com/xthiago/pdf-version-converter)
- 基于转换后的文件生成一个新的 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);
最后不是 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