![在 PDF 中实现全页仅屏幕和仅打印](https://linux22.com/image/287063/%E5%9C%A8%20PDF%20%E4%B8%AD%E5%AE%9E%E7%8E%B0%E5%85%A8%E9%A1%B5%E4%BB%85%E5%B1%8F%E5%B9%95%E5%92%8C%E4%BB%85%E6%89%93%E5%8D%B0.png)
我感兴趣的是在屏幕上以全彩色显示某些内容(例如:标题页),而在打印时以黑白友好形式显示相同的对象/页面。
根据这个问题,PDF 规范中内置了屏幕专用对象和屏幕和打印对象的功能。也可能有一种方法可以在黑白页面顶部添加一个层,仅通过 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
我找到的解决方案(非常感谢成本加运费和史蒂文·B·塞格莱特斯感谢他们回答我的相关问题) 用于tikz
铺设一个彩色层,然后将该彩色层与仅在打印时显示的单色版本叠加。
但是,由于该解决方案使用可选内容组(包ocg-p
),因此并非所有 PDF 查看器都完全支持它。具体来说,Adobe Reader 是唯一完全支持 OCG 的查看器,而许多其他查看器(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 中,屏幕上会以彩色显示:
并将以单色打印:
通过选择侧栏中的图层选项卡(位置可能因查看器而异;某些旧版本的查看器根本不支持图层),您也可以选择切换到屏幕上的单色视图: