这仍然是与要出版的书有关的问题。打印机需要 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]
>>
如果您手动删除所有框,那么页面在 Adobe 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
可以重复使用该命令来清除那些不必要的语句。