如何添加特定页面的打印链接动作?

如何添加特定页面的打印链接动作?

我认为预期视图(图 2)是必要的,因为我在有许多打印机的环境中工作。我知道线程如何添加打印链接答案会打开一个通用的打印窗口,但无法通过激活按钮来指定要打印哪些页面等详细信息。 此处复制代码,并添加此线程的目标 - 打印按钮的自定义操作

% https://tex.stackexchange.com/a/30534/13173
\documentclass{scrbook}
\usepackage{hyperref}
\usepackage{pdfpages}
\usepackage{lipsum}

\begin{document}
\Acrobatmenu{Print}{Print doc}
\lipsum

% TODO include a link here which will print out the included pdf from the document
\includepdf[page={1-3}]{leo.pdf} % choose any multipage pdf file here 

\end{document}

目的

  1. 在页面上添加Print按钮以打印文档的特定页面
  2. 包含Print打印文档当前页面的按钮。

图 1 AlexG 按钮操作的输出,其中弹出两次,图 2 按下 GUI 的打印按钮时的视图

在此处输入图片描述 在此处输入图片描述

预期输出 GUI:GUI 中所需的设置(图 2)

测试 AlexG 的提议

图1中的输出。

引擎:pdfTeX、XeLaTeX、...
操作系统:Debian 8.7
PDF 查看器:Adobe Acrobat 9.x (acroread)按说明安装这里

答案1

这需要 JavaScript 和 A-Reader。按钮本身不会被打印。所有引擎。

使用带参数方法的基本示例print():指定页面范围时无法出现打印对话框;print()多个页面范围需要多次调用方法:

\documentclass{article}

\usepackage{media9} % non-printable push buttons with JS actions
\usepackage{pgffor}

\begin{document}

Page \thepage

% print two page ranges
% Note: nStart/nEnd are zero-based
\mediabutton[
  jsaction={
    this.print({
      bUI: false, %no print dialog; mandatory if page range is specified
      nStart: 0,
      nEnd: 3,
    });
    this.print({
      bUI: false,
      nStart: 6,
      nEnd: 8,
    });
  }
]{\fbox{Print pp. 1--4 and 7--9}}

\foreach \i in {2,...,10} {
  \newpage
  Page \thepage

  % print current page
  \mediabutton[
    jsaction={
      this.print({
        bUI: false,
        nStart: this.pageNum,
        nEnd: this.pageNum,
      })
    }
  ]{\fbox{Print current page}}
}

\end{document}

例如高级设置使用PrintParams对象(仅限 Windows 和 OSX 上的最新 AR 版本):现在,设置(目标打印机和其他参数)可以在打印对话框中进行修改。

的属性PrintParams记录在Acrobat 的 JavaScript API 参考

\documentclass{article}

\usepackage{media9}
\usepackage{pgffor}

\begin{document}

Page \thepage

%print two page ranges, show dialog
\mediabutton[
  jsaction={
    var pp = this.getPrintParams();
    pp.interactive = pp.constants.interactionLevel.full; %show print dialog
    %pp.interactive = pp.constants.interactionLevel.automatic; %suppress dialog, but progress monitor and "cancel" shown
    %pp.interactive = pp.constants.interactionLevel.silent; %suppress everything
    pp.printRange=[[0, 3],[6, 8]]; %two ranges, again 0-based page nums
    this.print(pp);
  }
]{\fbox{Print pp. 1--4 and 7--9}}

\foreach \i in {2,...,10} {
  \newpage
  Page \thepage

  % (silently) print current page
  \mediabutton[
    jsaction={
      var pp = this.getPrintParams();
      pp.interactive = pp.constants.interactionLevel.silent;
      pp.firstPage=this.pageNum;
      pp.lastPage=this.pageNum;
      this.print(pp);
    }
  ]{\fbox{Print current page}}
}

\end{document}

打印对话框中的许多设置都可以通过PrintParams对象属性进行预先配置。

相关内容