使用 GhostScript 从 PDF 创建图像时如何使图像居中
How to center image when creating images from PDF using GhostScript
我有几个不同大小和不同宽高比的pdf文件。现在我想从这些文件的第一页创建固定大小的缩略图。
我使用以下命令执行此操作:
gs -dNOPAUSE -sDEVICE=jpeg -dFirstPage=1 -dLastPage=1 -sOutputFile=d:\test\a.jpeg -dJPEGQ=100 -g509x750 -dUseCropBox=true -dPDFFitPage=true -q d:\test\a.pdf -c quit
由于原始文件的宽度和高度不同,但缩略图应具有相同的大小,因此右侧或顶部会有白边 个缩略图。但我希望缩略图的顶部和底部(或右侧和左侧)具有 等边距 (就像 windows 资源管理器中显示的缩略图一样)。
有什么方法可以使用 GhostScript 实现吗?
是的,但不能使用单个开关,而且在使用 -dPDFFitPage 时不能。
PDFFitPage 将同构缩放内容(即在每个方向上相同),因此您将或者在顶部或[=24=有白边距]右边输出.
为了使内容居中,您需要复制 PDFFitPage 的功能,并在 x 或 y 方向上平移原点,将 'excess' 的一半平移到 space 剩下的。
您可以在 /ghostpdl/gs/Resource/Init/pdf_main.ps 中找到执行缩放的代码,查找 /pdf_PDF2PS_matrix 然后:
//systemdict /PDFFitPage known {
PDFDEBUG { (Fiting PDF to imageable area of the page.) = flush } if
currentpagedevice /.HWMargins get aload pop
currentpagedevice /PageSize get aload pop
% Adjust PageSize and .HWMargins for the page portrait/landscape orientation
请注意,据我所知,当前的实现已经将输出居中:
% stack: savedCTM <pdfpagedict> [Box] scale XImageable YImageable XBox YBox
3 index 2 index 6 index mul sub 2 div 3 index 2 index 7 index mul sub 2 div
PDFDEBUG { ( Centering translate by [ ) print 1 index =print (, ) print dup =print ( ]) = flush } if
translate pop pop pop pop
我有几个不同大小和不同宽高比的pdf文件。现在我想从这些文件的第一页创建固定大小的缩略图。 我使用以下命令执行此操作:
gs -dNOPAUSE -sDEVICE=jpeg -dFirstPage=1 -dLastPage=1 -sOutputFile=d:\test\a.jpeg -dJPEGQ=100 -g509x750 -dUseCropBox=true -dPDFFitPage=true -q d:\test\a.pdf -c quit
由于原始文件的宽度和高度不同,但缩略图应具有相同的大小,因此右侧或顶部会有白边 个缩略图。但我希望缩略图的顶部和底部(或右侧和左侧)具有 等边距 (就像 windows 资源管理器中显示的缩略图一样)。
有什么方法可以使用 GhostScript 实现吗?
是的,但不能使用单个开关,而且在使用 -dPDFFitPage 时不能。
PDFFitPage 将同构缩放内容(即在每个方向上相同),因此您将或者在顶部或[=24=有白边距]右边输出.
为了使内容居中,您需要复制 PDFFitPage 的功能,并在 x 或 y 方向上平移原点,将 'excess' 的一半平移到 space 剩下的。
您可以在 /ghostpdl/gs/Resource/Init/pdf_main.ps 中找到执行缩放的代码,查找 /pdf_PDF2PS_matrix 然后:
//systemdict /PDFFitPage known {
PDFDEBUG { (Fiting PDF to imageable area of the page.) = flush } if
currentpagedevice /.HWMargins get aload pop
currentpagedevice /PageSize get aload pop
% Adjust PageSize and .HWMargins for the page portrait/landscape orientation
请注意,据我所知,当前的实现已经将输出居中:
% stack: savedCTM <pdfpagedict> [Box] scale XImageable YImageable XBox YBox
3 index 2 index 6 index mul sub 2 div 3 index 2 index 7 index mul sub 2 div
PDFDEBUG { ( Centering translate by [ ) print 1 index =print (, ) print dup =print ( ]) = flush } if
translate pop pop pop pop