![OCG/レイヤーを使用して PDF を反転する方法は?](https://rvso.com/image/281467/OCG%2F%E3%83%AC%E3%82%A4%E3%83%A4%E3%83%BC%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%97%E3%81%A6%20PDF%20%E3%82%92%E5%8F%8D%E8%BB%A2%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95%E3%81%AF%3F.png)
画面/タブレットで表示するために設計され、黒の背景に白のテキストを使用する PDF を作成しています。一部の読者が印刷したい場合があり、2 つ目の PDF を作成したくないため、PDF にレイヤーとして印刷ビューを含めたいと思います。
(xe)latex で、背景画像を間に挟んで同じテキストを 2 回重ねてレンダリングし、上のテキスト レイヤーと画像を 1 つの PDF レイヤーとして使用して無効にするにはどうすればよいでしょうか。
したがって、PDF では、レイヤーの順序は次のようになります (下から上に読んでください)。
WHITE TEXT \
> OCG Layer #1
BLACK BACKGROUND /
BLACK TEXT \
> regular PDF
WHITE BACKGROUND /
これで、リーダーが PDF リーダーでレイヤー #1 を非表示にすると、その下のプリンターフレンドリー バージョンが表示されるようになります。
答え1
この例では、簡単にタイプセットできるページ ボックスの 2 つの異なるバージョンを作成し、それらを別々の OCG レイヤーに配置します。
両方のレイヤーがラジオ ボタン グループ「反転ビデオ」に追加され、一度に有効にできるのはそのうちの 1 つだけになります。
さらに、ユーザーが誤って貴重なインクを無駄にすることを防ぐため、白黒バージョンの印刷を禁止しています。(ただし、これを保証するのは AcroRead と Chrome/Chromium 組み込みの PDF ビューアのみです。)
この例では、TeXLive-2020 など、比較的新しく最新の TeX インストールが必要です。
\documentclass{article}
\usepackage[a5paper]{geometry}
\usepackage{kantlipsum}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\usepackage{ocgx2} %pdf layers
\usepackage{color}
\makeatletter
%make a copy from each ready page and repeat it with white
%textcolour on black background, put both versions on different layers
\AddToHook{shipout/before}{%
\setbox\ShipoutBox=\hbox{%
%normal & print layer
\begin{ocg}[
radiobtngrp=reverse video,
printocg=always,
]{normal and print}{normal}{off}%
\makebox[0pt][l]{%
\raisebox{1in}{\copy\ShipoutBox}%
}%
\end{ocg}%
%layer for tablets & screens
\begin{ocg}[
radiobtngrp=reverse video,
printocg=never,
]{for screens/tablets}{tablets}{on}%
\makebox[0pt][l]{%
\hspace{-1in}%
\raisebox{0pt}[\dimexpr\height-1in\relax]{%
\rule{\paperwidth}{\paperheight}}}%
\raisebox{1in}{{\color{white}\box\ShipoutBox}}%
\end{ocg}%
}%
}
\def\redefFooterAndHeader{%
%proof of concept: --> repeat the following with
%\@evenfoot, \@oddhead, \@evenhead
\let\@oddfootOrig\@oddfoot%
\gdef\@oddfoot{%
\makebox[\textwidth][c]{%
\begin{ocg}[
radiobtngrp=reverse video,
printocg=always,
]{normal and print}{normal}{off}%
\makebox[0pt][c]{\@oddfootOrig}%
\end{ocg}%
\begin{ocg}[
radiobtngrp=reverse video,
printocg=never,
]{for screens/tablets}{tablets}{on}%
\makebox[0pt][c]{{\color{white}\@oddfootOrig}}%
\end{ocg}%
}%
}%
}
\let\pagestyleOrig\pagestyle
\def\pagestyle#1{\pagestyleOrig{#1}\redefFooterAndHeader}%
\makeatother
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{document}\pagestyle{plain}
\kant[1-6]
\end{document}