PDF で全ページの画面のみと印刷のみを実装する

PDF で全ページの画面のみと印刷のみを実装する

いくつかの項目(例:タイトル ページ)を画面上でフルカラーで表示し、印刷時には同じオブジェクト/ページを白黒でわかりやすい形式で表示することに興味があります。

によるとこのSOの質問PDF仕様には、スクリーンのみのオブジェクトとスクリーンと印刷のオブジェクトのための機能が組み込まれています。また、PDF 1.5を介して、白黒ページの上にレイヤーを追加して、フルカラーページのみを画面に表示する方法もあるかもしれません。オプションのコンテンツグループ特徴。

同様に、この質問は、 を介してテキストを選択的に印刷する方法を示していますocg-p。ただし、このパッケージを必要な方法で使用する方法が明確ではありません。

私のシナリオは、カラー ページのテキストが暗い背景に白で表示されるという事実によってさらに複雑になっています。

MWE:

このコードは、現在カラーと白黒を切り替える方法を示しています。printincolor変更を行うには、bool 変数を変更します。

\documentclass[11pt]{article}

\usepackage[demo]{graphicx}
\usepackage{etoolbox}

\providebool{printincolor}
% Will set color title page and section headings
\setbool{printincolor}{false}

% Setup color if needed
\ifbool{printincolor}{%
\usepackage[pagecolor=none]{pagecolor}%
\definecolor{MyBlue}{HTML}{1b3667}%
\usepackage{afterpage}}{}

\begin{document}

% Begin Title Page
{
 \thispagestyle{empty}
  \ifbool{printincolor}{%
  \pagecolor{MyBlue}%
  \afterpage{\nopagecolor}}{}
  \begin{center}
  {\ifbool{printincolor}{\color{white}\sffamily}{\sffamily}%  Set text color white or leave [default] black
  \ifbool{printincolor}{\includegraphics[width=1.5in]{logo-gold}}{\includegraphics{logo-blue}}% put logo gold or blue
  \\ \vskip 1in
  \begin{huge}
        \textbf{Title}
        \vskip 0.1ex\rule{0.5\textwidth}{0.8pt}\vskip 1ex
        Subtitle
        \\
        \end{huge}
  \vfill\vfill
  \begin{large}

  Authors:\\
  John Doe and Jane Doe\\
  \end{large}
  }
  \end{center}
}

\end{document}

画面にはカラーで表示され、印刷では白黒になるように、タイトル ページの 2 つのバージョンを重ねて表示するにはどうすればよいですか?

答え1

私がたどり着いた解決策は(cfrそしてスティーブン・B・セグレテス私の質問に答えてくれた関連する質問) はtikz、カラー レイヤーを配置し、その上に印刷時にのみ表示されるモノクロ バージョンを重ねるために使用されます。

ただし、このソリューションは Optional Content Groups (パッケージocg-p) を使用するため、すべての PDF ビューアで完全にサポートされているわけではありません。具体的には、OCG を完全にサポートするビューアは Adob​​e Reader のみですが、他の多くのビューア (Apple の Preview、Skim など) はモノクロ バージョンにフォールバックします (これらのビューアは、デフォルトですべてのレイヤーを画面に表示し、「印刷専用」または「初期状態」フラグは考慮しません)。一部のビューア (poppler ベースのビューア、つまり主に Linux のビューア) は、画面と印刷にカラー レイヤーのみを表示することで機能が低下します (「初期状態」フラグは考慮しますが、モノクロ レイヤーを印刷用に有効にしません)。つまり、結果は状況によって異なります。

しかし、それでも解決策はあります:

\documentclass[11pt]{article}

\usepackage[demo]{graphicx}
\usepackage{tikz} % Needed to draw titlepage elements
\usepackage{ocg-p} % For optional content groups

% Things to typeset on titlepage (since they are repeated twice
\newcommand{\titlematter}{%
    \node [font={\huge\bfseries\sffamily}] at (.5\linewidth,-7) {Title};
    \node [font={\huge\sffamily}] at (.5\linewidth,-10.625) {Subtitle};
    \node [font={\large\sffamily}] at (.5\linewidth,-17) {Authors:\\ John Doe and Jane Doe};
    \node (p) at (.25\linewidth,-9.00) {}; % nodes for line to connect later
    \node (q) at (.75\linewidth,-9.00) {};
}

% Setup color if needed
\usepackage[pagecolor=none]{pagecolor}%
\definecolor{MyBlue}{HTML}{1b3667}%
\usepackage{afterpage}

\begin{document}

% Begin Title Page
{\thispagestyle{empty}%
  \noindent
  %% Color Version
  \begin{tikzpicture}[overlay, remember picture, text=white, align=center]
    \fill [fill=MyBlue] (current page.south west) rectangle (\paperwidth,\paperheight);
    \node at (.5\linewidth,-2.125) {\includegraphics[width=1.5in]{logo-color}};
    \titlematter
    \draw [color=white](p) -- (q);
  \end{tikzpicture}
  %% Monochrome Version
  \begin{ocg}[printocg=always]{MonochromeVersion}{monochrome}{0}
    \begin{tikzpicture}[overlay, remember picture, text=black, align=center]
      \fill [fill=white] (current page.south west) rectangle (\paperwidth,\paperheight);
      \node at (.5\linewidth,-2.125) {\includegraphics[width=1.5in]{logo-monochrome}};
      \titlematter
      \draw (p) -- (q);
    \end{tikzpicture}
  \end{ocg}
  %% Reset page color
  \afterpage{\nopagecolor}% 
\newpage
}

\end{document}

Acrobat では、画面に次のようにカラーで表示されます。

色

モノクロで印刷します:

モノクロ

サイドバーのレイヤー タブを選択すると (配置はビューアによって異なる場合があります。一部の古いバージョンのビューアではレイヤーがまったくサポートされていません)、オプションで画面上のモノクロ表示に切り替えることもできます。

レイヤータブ

関連情報