Реализация полностраничных экранных и печатных версий в формате PDF

Реализация полностраничных экранных и печатных версий в формате PDF

Мне интересно отображать некоторые вещи (например, титульный лист) в полноцветном виде на экране, а при печати тот же объект/страницу отображать в черно-белом удобном виде.

В соответствии сэтот ТАК вопрос, в спецификации PDF есть встроенная функциональность для объектов Screen-Only и объектов Screen-And-Print. Также может быть способ добавить слой поверх черно-белой страницы, который отображает только полноцветную страницу на экране через PDF 1.5Дополнительные группы контентаособенность.

Сходным образом,этот вопросдемонстрирует выборочную печать текста через ocg-p. Но не совсем понятно, как я могу использовать этот пакет так, как мне нужно.

Моя ситуация усугубляется тем фактом, что текст на моей цветной странице белый на темном фоне.

МВЭ:

Этот код показывает, как я в данный момент переключаюсь между цветным и черно-белым режимами. Я изменяю 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}

Как можно наложить друг на друга (или иным образом отобразить) две версии титульного листа таким образом, чтобы на экране отображался цветной вариант, а на печати он был черно-белым?

решение1

Решение, к которому я пришел (с большой благодарностью)cfrиСтивен Б. Сеглетеcза их ответы на моисвязанный вопрос) используется tikzдля наложения цветного слоя, а затем наложения на него монохромной версии, которая отображается только при печати.

Однако, поскольку решение использует Optional Content Groups (package ocg-p), оно не имеет полной поддержки во всех просмотрщиках PDF. В частности, Adobe Reader является единственным просмотрщиком, который полностью поддерживает OCG, в то время как многие другие (Apple Preview, Skim и другие) будут откатываться к монохромной версии (они просто показывают все слои на экране по умолчанию, не учитывая флаги «только для печати» или «исходное состояние»). Несколько просмотрщиков (те, что основаны на poppler, т. е. в первую очередь те, что в Linux) будут деградировать, показывая только цветной слой на экране и на печати (соблюдая флаг «исходное состояние», но не включая монохромный слой для печати). Итак, суть в том, что ваш Milage может отличаться.

Но вот решение:

\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 это отображается на экране в цвете:

цвет

И напечатает в монохромном режиме:

монохромный

Выбрав вкладку «Слои» на боковой панели (расположение может различаться в зависимости от средства просмотра; некоторые старые версии средств просмотра вообще не поддерживают слои), вы также можете при желании переключиться на монохромный вид на экране:

слойtab

Связанный контент