![¿Cómo invertir un PDF usando OCG/Capas?](https://rvso.com/image/281467/%C2%BFC%C3%B3mo%20invertir%20un%20PDF%20usando%20OCG%2FCapas%3F.png)
Estoy creando un PDF diseñado para visualizarse en pantallas/tabletas y utiliza texto blanco sobre fondo negro. Dado que es posible que algunos lectores quieran imprimirlo y yo quiero evitar crear un segundo PDF, me gustaría incluir una Vista de impresión como capa en el PDF.
¿Cómo puedo hacer que (xe)latex represente el mismo texto dos veces uno encima del otro, con una imagen de fondo en el medio, para poder usar la capa de texto superior y la imagen como una capa de PDF para desactivarlo?
Entonces, en el PDF, sería el siguiente orden de capas (léalo de abajo hacia arriba):
WHITE TEXT \
> OCG Layer #1
BLACK BACKGROUND /
BLACK TEXT \
> regular PDF
WHITE BACKGROUND /
Ahora, si el lector oculta la Capa n.° 1 en el lector de PDF, la versión para imprimir que se encuentra debajo se vuelve visible.
Respuesta1
Este ejemplo produce dos versiones diferentes del cuadro de página fácilmente compuesto y los coloca en capas OCG separadas.
Ambas capas se agregan al grupo de botones de opción "video inverso" para garantizar que solo se pueda habilitar una de ellas a la vez.
Además, prohibimos la impresión de la versión blanco sobre negro para evitar que el usuario desperdicie accidentalmente tinta preciosa. (Aunque sólo AcroRead y el visor de PDF integrado de Chrome/Chromium lo garantizan).
Este ejemplo requiere una instalación TeX bastante nueva y actualizada, por ejemplo, TeXLive-2020:
\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}