1

我有一个横向的pdf,是一个“页面展开”。

  1. 我需要在中间垂直将页面分成两半。

    我使用此设置将 pdf 切成两半:这个获取页面的左侧

    "C:\Program Files (x86)\gs\gs9.10\bin\gswin32c.exe" -o output.pdf 
    -sDEVICE=pdfwrite -dNOPAUSE -dBATCH -dSAFER -dSubsetFonts=true -dEmbedAllFonts=true -g 750x1085 -c  
    "<</BeginPage{0.95 0.96 scale 20 22 translate}>> setpagedevice" "<</PageOffset [0 0]>> setpagedevice"  -f input.pdf
    
  2. 上面的命令工作正常。我现在的问题是我需要将 Mediabox、Cropbox、Bleedbox、Trimbox 和 artbox 设置为类似于拆分页面的大小。在上面的例子中;它应该是 750x1085。

    在 GS 上运行的正确命令/设置应该是什么,以便 Mediabox、Cropbox、Bleedbox、Trimbox 和 artbox 具有相同的大小?

更新
这是我试图将其切成两半的 PDF 文件示例: PDF FILE TO SPLIT

我现在正在使用 /PAGE pdfmark,这是我正在尝试使用的命令:

     "C:\Program Files (x86)\gs\gs9.10\bin\gswin32c.exe" -o output.pdf -sDEVICE=pdfwrite -dNOPAUSE -dBATCH 
    -dSAFER -dUseCropbox -dSubsetFonts=true -dEmbedAllFonts=true -g7500x10850 
    -c "[/CropBox [0 0 750 1085] /PAGES pdfmark" 
    "[/MediaBox [0 0 750 1085] /PAGES pdfmark" 
    "[/TrimBox [0 0 750 1085] /PAGES pdfmark" 
    "[/BleedBox [0 0 750 1085] /PAGES pdfmark"
    "[/ArtBox [0 0 750 1085] /PAGES pdfmark" 
    "<</BeginPage{0.95 0.96 scale 20 22 translate}>> setpagedevice" 
    "<</PageOffset [0 0]>> setpagedevice" 
    -f input.pdf

我仍然无法将 Cropbox、MediaBox、TrimBox、BleedBox、ArtBox 设置为相同大小。

该命令的正确设置应该是什么?

4

1 回答 1

0

转到此处的答案,评论太少了。

您的基本问题是原始 PDF 文件已经包含您尝试修改的所有 Box 参数。对于某些类型的输出设备,Ghostscript PDF 解释器将通过将其自己的 pdfmark 版本写入设备来保留这些框。因为这发生您的 pdfmark 之后,它会取代您的。

不幸的是,没有机制可以禁用此功能。此外,由于您使用的是 Windows,因此您拥有内置在 ROM 文件系统中的资源,因此您不能轻易修改它们。

所以在这一点上,你真的无能为力。如果您愿意下载源代码并处理一些 PostScript,请告诉我,我想我可以给您一个解决方案(您不需要重新构建 GS,但 PostScript 资源不能单独获得)。

编辑以包括一些建议的解决方法

在 pdf_main.ps 中:

% Test whether the current output device handles pdfmark.
/.writepdfmarkdict 1 dict dup /pdfmark //null put readonly def
/.writepdfmarks {   % - .writepdfmarks <bool>
  currentdevice //.writepdfmarkdict .getdeviceparams
  mark eq { //false } { pop pop //true } ifelse
  systemdict /DOPDFMARKS known or
} bind def

您可以将 /.writepdmarks 更改为:

/.writepdfmarks {   % - .writepdfmarks <bool>
    false
} bind def

但请注意,输出 PDF 文件中将停止发出许多其他内容。

相反,您可以查看 pdf_showpage_finish 中的代码:

/pdfshowpage_finish {   % <pagedict> pdfshowpage_finish -
   save /PDFSave exch store
...
...
  .writepdfmarks {

        % Copy the boxes.
    { /CropBox /BleedBox /TrimBox /ArtBox } {
      2 copy pget {
        % .pdfshowpage_Install transforms the user space do same here with the boxes
        oforce_elems
        2 { Page pdf_cached_PDF2PS_matrix transform 4 2 roll } repeat
        normrect_elems 4 index 5 1 roll fix_empty_rect_elems 4 array astore
        mark 3 1 roll {/PAGE pdfmark} stopped {cleartomark} if
      } {
        pop
      } ifelse
    } forall

您可以修改“{ /CropBox /BleedBox /TrimBox /ArtBox }”行,您不想保留的任何框都可以从该行中删除。

如果您想防止它们中的任何一个覆盖您的规范,请从“% Copy the box”到“% Copy annotations and links”中删除这些行

请注意,这只适用于资源未内置到 ROM 文件系统中的系统,或者资源至少在磁盘上可用,并且使用 -I 开关指定资源文件的路径的系统。

于 2014-01-07T08:28:38.607 回答