Implementando tela de página inteira e somente impressão em PDF

Implementando tela de página inteira e somente impressão em PDF

Estou interessado em exibir algumas coisas (por exemplo: página de título) em cores na tela, enquanto exibe o mesmo objeto/página em um formato amigável em preto e branco quando impresso.

De acordo comesta pergunta SO, há funcionalidade integrada na especificação PDF para objetos somente tela e objetos tela e impressão. Também pode haver uma maneira de adicionar uma camada no topo da página em preto e branco que exibe apenas a página colorida na tela por meio do PDF 1.5Grupos de conteúdo opcionaisrecurso.

De forma similar,essa questãodemonstra a impressão seletiva de texto via ocg-p. Mas não está claro como posso usar este pacote da maneira que preciso.

Meu cenário é agravado pelo fato de que o texto da minha página colorida é branco sobre um fundo escuro.

MWE:

Este código apresenta a maneira como estou alternando entre cores e preto e branco. Eu mudo a printincolorvariável bool para fazer a alteração.

\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}

Como posso colocar em camadas (ou exibir) duas versões da página de título de forma que as cores sejam exibidas na tela, mas em preto e branco sejam impressas?

Responder1

A solução que encontrei (com muitos agradecimentos acfreSteven B. Segletespor suas respostas às minhaspergunta relacionada) usa tikzpara estabelecer uma camada de cores e, em seguida, sobrepô-la com uma versão monocromática que só é exibida durante a impressão.

Porém, como a solução utiliza Grupos de Conteúdo Opcionais (pacote ocg-p), ela não possui suporte completo em todos os visualizadores de PDF. Especificamente, o Adobe Reader é o único visualizador que suporta totalmente OCG, enquanto muitos outros (Preview da Apple, Skim e outros) irão recorrer à versão monocromática (eles simplesmente mostram todas as camadas na tela por padrão, não respeitando o "somente impressão" ou sinalizadores de "estado inicial"). Alguns visualizadores (aqueles baseados em poppler, ou seja, principalmente aqueles em Linux) irão degradar mostrando apenas a camada de cores na tela e na impressão (respeitando o sinalizador de "estado inicial", mas não habilitando a camada monocromática para impressão). Portanto, o resultado final é que sua milhagem pode variar.

Mas aqui está a solução:

\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}

No Acrobat, isso é exibido na tela em cores:

cor

E imprimirá no monocromático:

monocromático

Ao escolher a guia de camadas na barra lateral (o posicionamento pode variar dependendo do visualizador; algumas versões mais antigas de visualizadores não têm suporte para camadas), você também pode alternar opcionalmente para a visualização monocromática na tela:

guia de camadas

informação relacionada