在 Beamer 演示文稿中包含实时远程图像

在 Beamer 演示文稿中包含实时远程图像

这个问题我发现可以通过以下方式在 PDF 中包含远程图像:media9包将远程图像包含在 PDF 中。可以直接包含 Javascript——就像这个问题——用于以指定的时间间隔更新图像(从技术上讲,是 swf 对象)?

答案1

版本[2015-05-11]提供media9SlideShow.swf这是一个用于实时和静态远程(观看时下载)以及 PNG、JPEG 和 GIF 格式的静态嵌入图像文件的图片库应用程序。SlideShow.swf通过XML 文件语法非常简单。

可以使用右键菜单或键盘与该应用程序进行交互。

下面的链接是嵌入在文档文件中的幻灯片放映示例media9,在 Web 浏览器中打开。(第四幅图像在这里不起作用,因为它使用了相对于播放器 SWF 文件的 URL):

http://mirrors.ctan.org/macros/latex/contrib/media9/players/SlideShow.swf?xml=../doc/files/config.xml

使用 OP 中给出的远程实时图像 URL 的单图像“幻灯片”的最小 beamer 类示例如下:

\documentclass{beamer}
\usepackage{media9}

\begin{document}
\begin{frame}{Live remote image}
  \includemedia[
    width=\linewidth,
    height=0.46\linewidth,
    activate=pageopen,
    passcontext, %show context menu
    addresource=show.xml,
    flashvars={ xml=show.xml }
  ]{}{SlideShow.swf}
\end{frame}
\end{document}

文件show.xml包含以下行:

<SlideShow>
  <Img live="3">
    <caption>Live remote image.</caption>
    <URL>http://dev.eightbeers.org/tex/corner-icon.png</URL>
  </Img>
</SlideShow>

远程图像将每三秒刷新一次。

答案2

这个问题有一个相当可靠的答案。对象重新加载时仍存在问题(Reader 获取内容时整个图形变黑);如果有人对此有建议,我很乐意听取。

梅威瑟:

\documentclass{beamer}
\usepackage{media9}

\begin{document}                                                                                                    
    \begin{frame}{Test auto-updated input}{}
        \includemedia[                                                                                                      
            height=5cm,
            label=sample,
            width=11cm,
            activate=pageopen,
            flashvars={
                src=http://dev.eightbeers.org/tex/corner-icon.png
                &controlBarMode=none
            },
        ]{}{StrobeMediaPlayback.swf}% I'll be honest, not too sure about indentation in the following
\pdfannot width 0pt height 0pt depth 0pt {                                                                          
    /Subtype/Widget                                                                                                   
    /AA <</PO <<  %start updating routine on 'pageopen' event                                                                                                      
        /S/JavaScript/JS (                                                                                              
            try{var ret=app.setInterval('                                                                                 
                annotRM["sample"].activated=false;                                                                          
                annotRM["sample"].activated=true;                                                                           
            ' , 2500);}catch(e){}
        )
    >>>>
}
    \end{frame}                                                                                                         
\end{document}

如果您在加载自己的动态图像时遇到问题:

  • StrobeMediaPlayback.swf仅当识别文件后缀时才会加载图像;因此,如果您在 PHP 中构建动态图像,则需要使用一些.htaccess-fu 来从.jpg.png或类似的文件重定向
  • 虽然大多数浏览器在发送没有标题的图像时都能很好地播放Content-Length:StrobeMediaPlayback.swf但会失败并出现神秘的Argument Error - Invalid parameter passed to method

相关内容