OCG/レイヤーを使用して PDF を反転する方法は?

OCG/レイヤーを使用して PDF を反転する方法は?

画面/タブレットで表示するために設計され、黒の背景に白のテキストを使用する 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}

ここに画像の説明を入力してください

関連情報