使用 Javascript 宏复制到剪贴板

使用 Javascript 宏复制到剪贴板

我对 Javascript 相当不熟悉,特别是在 LaTeX 中,所以我希望得到一些指点、指导,甚至是我提议的“按钮”的 MWE:

我想创建一个按钮来将数据复制到系统剪贴板。为此,我建议使用一种带有闪光泄漏的解决方法(不知道它是否有效):

function copy(str) {
   var D=document;
    if(!copy.div) { copy.div = D.createElement('div'); D.body.appendChild(copy.div);  }

flashVar = "Q1dTB3kAAAB4nKtgYI1nYOBfwMDAw8jgzPT//3975lAGBoYOdQYWhu\
SczIKk/MSiFIac1Lz0kgyG4MriktRchuLUEme41DQmBg4GGRDJ6Cc0l4l  BAibCzsDO\
CDSJgwksyRwkzuAA5AIAd7oY/w==";

copy.div.innerHTML =  '<embed src="'+flashVar+'" FlashVars="clipboard='+encodeURIComponent(str) +
    '" width="0" height="0" type="application/x-shockwave-flash"></embed>';
}

我想使用以下按钮进行复制:

\documentclass[11pt,a4paper]{standalone}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{tikz}
\usetikzlibrary{shadows}

\newcommand*\button{%
  \tikz[baseline=(key.base)]
    \node[%
      draw,
      fill=white,
      drop shadow={shadow xshift=0.25ex,shadow yshift=-0.25ex,fill=black,opacity=0.75},
      rectangle,
      rounded corners=2pt,
      inner sep=1pt,
      line width=0.5pt,
      font=\scriptsize\sffamily
    ](key) {Ctrl\strut}
  ;
    \tikz[baseline=(key.base)]
    \node[%
      draw,
      fill=white,
      drop shadow={shadow xshift=0.25ex,shadow yshift=-0.25ex,fill=black,opacity=0.75},
      rectangle,
      rounded corners=2pt,
      inner sep=1pt,
      line width=0.5pt,
      font=\scriptsize\sffamily
    ](key) {C\strut}
  ;
}

\begin{document}
\button
\end{document}

答案1

你已经问过同样的疑问,没有代码几个小时前 – 也许您可以修改它而不是再次发布它。

关于你的问题:

  1. 请注意,PDF 中的 JavaScript 无法可靠地工作。出于安全原因,它经常被禁用,并且除 Acrobat 之外的其他 PDF 阅读器可能会表现不同,甚至缺乏 JS 支持。
  2. 请务必使用最新版本的 Acrobat 进行测试。Adobe 最近加强了安全性,并引入了应用程序沙箱。读取剪贴板应该(希望)是禁止的/不可能的,因为这将泄露信息(例如,如果您之前在剪贴板中复制了密码)。覆盖系统剪贴板也可能被阻止(例如,网络浏览器会阻止它)。
  3. 一种解决方法可能是将内容写入文档中的表单字段并要求用户手动复制。

相关内容