如何全局设置奇数页和偶数页不同的 PDF 页面框?
我尝试使用该everypage
包,但它似乎并没有真正将 PDF 页面框插入到当前页面对象中。
我可以\pdfpageattr
直接在页面上使用,并且页面框设置正确。
平均能量损失
\documentclass{article}
\usepackage{ifoddpage}
\usepackage{everypage}
\AddEverypageHook{
\checkoddpage
\ifoddpage
\pdfpageattr{/ArtBox [72 72 216 216]}
\else
\pdfpageattr{/ArtBox [216 216 360 360]}
\fi
}
\begin{document}
\null
%\pdfpageattr{/ArtBox [72 72 216 216]}% directly inserting on each page works
\clearpage
\null
%\pdfpageattr{/ArtBox [216 216 360 360]}% directly inserting on each page works
\end{document}
上述文件提供的 PDF 包含以下内容(无 ArtBox):
2 0 obj
<<
/Type /Page
/Contents 3 0 R
/Resources 1 0 R
/MediaBox [0 0 595.276 841.89]
/Parent 4 0 R
>>
endobj
1 0 obj
<<
/ProcSet [ /PDF ]
>>
endobj
7 0 obj
<<
/Length 0
>>
stream
endstream
endobj
6 0 obj
<<
/Type /Page
/Contents 7 0 R
/Resources 5 0 R
/MediaBox [0 0 595.276 841.89]
/Parent 4 0 R
>>
endobj
如果我取消注释\pdfpageattr
文档正文中的行,我就会得到我想要的结果:
2 0 obj
<<
/Type /Page
/Contents 3 0 R
/Resources 1 0 R
/MediaBox [0 0 595.276 841.89]
/ArtBox [72 72 216 216]
/Parent 4 0 R
>>
endobj
1 0 obj
<<
/ProcSet [ /PDF ]
>>
endobj
7 0 obj
<<
/Length 0
>>
stream
endstream
endobj
6 0 obj
<<
/Type /Page
/Contents 7 0 R
/Resources 5 0 R
/MediaBox [0 0 595.276 841.89]
/ArtBox [216 216 360 360]
/Parent 4 0 R
>>
endobj
答案1
请注意,您在此处覆盖了 \pdfpageattr 的其他用途,例如 hyperref、tagpdf、fancytoolstips、pdflscape、pdfx。
everypage 将其钩子放在一个组中,因此您需要将设置设为全局。我认为没有必要使用 ifoddpage。
\documentclass{article}
\pdfcompresslevel0
\pdfobjcompresslevel0
\usepackage{everypage}
\makeatletter
\AddEverypageHook{
\ifodd\c@page
\global\pdfpageattr{/ArtBox [72 72 216 216]}
\else
\global\pdfpageattr{/ArtBox [216 216 360 360]}
\fi
}
\begin{document}
\null
%\pdfpageattr{/ArtBox [72 72 216 216]}% directly inserting on each page works
\clearpage
\null
%\pdfpageattr{/ArtBox [216 216 360 360]}% directly inserting on each page works
\end{document}
替代方案是 atbegshi:
\documentclass{article}
\pdfcompresslevel0
\pdfobjcompresslevel0
\usepackage{atbegshi}
\makeatletter
\AtBeginShipout{
\ifodd\c@page
\global\pdfpageattr{/ArtBox [72 72 216 216]}
\else
\global\pdfpageattr{/ArtBox [216 216 360 360]}
\fi
}
\begin{document}
\null
%\pdfpageattr{/ArtBox [72 72 216 216]}% directly inserting on each page works
\clearpage
\null
%\pdfpageattr{/ArtBox [216 216 360 360]}% directly inserting on each page works
\end{document}