![打印文档时隐藏某些元素](https://linux22.com/image/417713/%E6%89%93%E5%8D%B0%E6%96%87%E6%A1%A3%E6%97%B6%E9%9A%90%E8%97%8F%E6%9F%90%E4%BA%9B%E5%85%83%E7%B4%A0.png)
出于某种原因,我想插入一条通知,告知用户可以单击我的 PDF 文档中的某些元素。但是,当文档打印在纸上时,该通知不应出现,因为它不再可单击。
我用过ocg-p
按建议打包这里和这里。我打印了文件——包括纸质通知。根据包文档,交换机printocg=always
应该做这样的工作:
always
表示始终打印,与文档中的当前可见性状态无关,并且never
表示从不打印。
M(不)WE(使用 pdfLaTeX 编译)
\documentclass[a4paper]{article}
\usepackage{ocg-p}
\usepackage{hyperref}
\begin{document}
Some text to be printed and viewed.
\begin{ocg}[printocg=always,exportocg=never,listintoolbar=never]{Paper}{block0}{0}
This \textit{should be} visible on paper but not in a PDF viewer.\\
Even if it contains \href{https://stackexchange.com}{hyperlinks}.
\end{ocg}
\begin{ocg}[printocg=never,exportocg=never,listintoolbar=always]{Digital}{block1}{1}
This \textit{should be} visible in any PDF viewer but not on a printed paper.\\
And the \href{https://stackexchange.com}{hyperlink} is clickable.
\end{ocg}
Some other stuff later.
\end{document}
因此,基本上它应该像网页上的 CSS 一样工作:
@media print {
.web-only {
display: none !important;
}
}
问题
- 在某些 PDF 查看器(例如 Evince、GIMP、Xournal)中,您会看到两行空白行和一个彩色框。
- 在 Chromium 中,您只有空白行而没有框(但看起来不支持框)。
- 在 Firefox ESR 中,您可以看到一切。
- 但在打印出来的纸上,仍然请参阅 PDF 阅读器的第二部分,但不是打印文档的部分。所以,它基本上就像上面的 Chromium 一样。
目标
第一个框不应该出现在支持 PDF 1.5 的 PDF 查看器中(甚至没有空行!)。第二个框不应该出现在打印纸上(但第一个框应该出现)。当然,超链接框很容易被禁用,但它们证明其他东西不起作用。