如何使用 OCG/圖層反轉 PDF?

如何使用 OCG/圖層反轉 PDF?

我正在創建一個 PDF,專為在螢幕/平板電腦上查看而設計,並在黑色背景上使用白色文字。由於有些讀者可能想要列印它,並且我想避免創建第二個 PDF,因此我想在 PDF 中包含一個列印視圖作為圖層。

我怎麼才能使(xe)乳膠渲染相同的文字兩次,中間有一個背景圖像,這樣我就可以使用上面的文字圖層和圖像作為一個PDF層來禁用它?

因此,在 PDF 中,圖層順序如下(從下到上閱讀):

WHITE TEXT       \
                  > OCG Layer #1
BLACK BACKGROUND /

BLACK TEXT       \
                  > regular PDF
WHITE BACKGROUND /

現在,如果閱讀器在 PDF 閱讀器中隱藏第 1 層,則其下方的列印友善版本將變得可見。

答案1

此範例產生兩個不同版本的易於排版的頁面框,並將它們放置在單獨的 OCG 層上。

這兩層都會新增到「反向影片」單選按鈕組中,以確保一次只能啟用其中一層。

此外,我們禁止列印黑白版本,以防止用戶意外浪費寶貴的墨水。 (儘管只有 AcroRead 和 Chrome/Chromium 內建 PDF 檢視器可以保證這一點。)

此範例需要相當新且最新的 TeX 安裝,例如 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}

在此輸入影像描述

相關內容