pdfx 和 crop 包如何在一个文档中协同工作?

pdfx 和 crop 包如何在一个文档中协同工作?

这仍然是与要出版的书有关的问题。打印机需要 PDF/X-4 格式的 PDF,因此我尝试将其包含pdfx在内。但是,由于我们还需要包含裁切标记,crop因此这也是游戏的一部分。

但是,无论我尝试以何种顺序将这些内容添加到包中,页面大小始终默认为 中设置的原始大小scrbook。我发现的唯一相关内容是使用 pdfx 时更改纸张尺寸但这在这里没有帮助。

\pdfcompresslevel0
\pdfobjcompresslevel0
\documentclass[numbers=noenddot,10pt,paper=155mm:230mm]{scrbook}

\usepackage[frame,width=169.8truemm,height=247.4truemm,cam,pdftex,cross]{crop}
\setlength{\voffset}{7.4mm}
\setlength{\hoffset}{7.4mm}

\usepackage[x-4]{pdfx}

\usepackage{atbegshi}
\AtBeginShipout
{\ifodd\value{page}
    \pdfpageattr{%
        /BleedBox [20.976 19.843 468.850 688.819]
        /TrimBox [20.976 28.346 460.346 680.315]
        /MediaBox [0.000 0.000 481.323 701.291]
    }
    \else 
    \pdfpageattr{%
        /BleedBox [12.472 19.843 460.346 688.819]
        /TrimBox [20.976 28.346 460.346 680.315]
        /MediaBox [0.000 0.000 481.323 701.291]
    }
    \fi
}

\begin{document}
It seems, that pdfx and crop don't work well together, no matter in which order they are called, because:

This page is too small
\newpage
And this page is too small, too
\end{document}

如果您检查生成的 PDF,则其末尾包含以下部分:

<<
/Type /Pages
/Count 2
/Kids [5 0 R 10 0 R]
/MediaBox[0 0 439.369 651.9669]
 /BleedBox[0 0 439.369 651.9669]
 /CropBox[0 0 439.369 651.9669]
 /TrimBox[25 20 414.369 631.9669]
>>

如果您手动删除所有框,那么页面在 Adob​​e Reader 中的外观将与我希望的完全一样。我该怎么做才能实现这种开箱即用/自动行为,而无需手动操作?

问题似乎出在 pdfx.sty 的第 496-502 行:

  \edef\next{\endgroup\pdfpagesattr{%
    /MediaBox[0 0 \pdfx@mwidth\space \pdfx@mheight]^^J
%%    /ArtBox[0 0 \pdfx@mwidth\space \pdfx@mheight]^^J
    /BleedBox[0 0 \pdfx@mwidth\space \pdfx@mheight]^^J
    /CropBox[0 0 \pdfx@mwidth\space \pdfx@mheight]^^J
    /TrimBox[25 20 \pdfx@twidth\space \pdfx@theight]}
  }\next

但我不知道在这里该做什么才能防止这种写出并且仍然获得有效的 PDF/X-4?

答案1

我很久以前就遇到过类似的问题,最后终于找到了一个似乎有效的简单方法。就在\begin{document}添加之前

\pdfpagesattr{}

我的理解是,standalone类或其他机制会添加/MediaBox我们想要的第一个,然后pdfx添加其余的/MediaBox/BleedBox等等。\pdfpagesattr正如您所指出的,这样做是不正确的。幸运的是,\pdfpagesattr可以重复使用该命令来清除那些不必要的语句。

相关内容