\setupoutput[pdftex] \starttext \chapter{Controlling Acrobat Reader under X11} \centerline{Taco Hoekwater, taco(at)aanhet.net} \blank[3*line] Most people who use the Acrobat Reader to preview PDF files generated from \TeX\ documents will know that it is a hassle to deal with documents that need to be compiled while being viewed. The Linux version of Adobe's program simply does not notice that the PDF file has changed, and the Microsoft Windows version is even worse: it opens the PDF file using mandatory locking, making it absolutely impossible to recompile the document while it is still open in the Reader. Common practice using Acrobat Reader for viewing PDF's generated from pdf\TeX{} is therefore to cycle through these actions, either from the command line or from a script: \startitemize[n] \item edit the \TeX{} source \item compile to PDF \item view with Acrobat Reader \item close Acrobat Reader \stopitemize It follows that the Reader has to make a complete restart for each cycle, which is a slow operation. The alternative would be to run the Reader in the background and ask users to, after steps 1.~and 2., manually close and reopen the document. That is not user-friendly, of course, and that's where \type{pdfopen} and \type{pdfclose}, described in this article, will be useful. Because the problem was much more severe under Windows, a few years ago Fabrice Popineau has written two small programs that use DDE calls to control the Reader from an external script or batchfile: \startitemize \item \type{pdfclose} to make the Reader close the file before the compilation starts \item \type{pdfopen} to re-open the file afterwards. \stopitemize The Linux X11 versions are command||line compatible with Fabrice's originals, but they do not function completely identically. \starttyping pdfclose --file \stoptyping This will close an X window with the name \type{} (for Acrobat Reader~5) or the name \type{Adobe Reader - } (for Adobe Reader~7). \starttyping pdfclose --all \stoptyping The Linux \type{pdfclose} command ignores the \type{-}\type{-all} command||line switch. The Windows version will close {\it only\/} the files that were opened through \type{pdfopen} when \type{-}\type{-all} is given, and this cannot easily be done under X. Ignoring the options seems wiser than unconditionally closing all open PDF documents. \starttyping pdfopen \stoptyping This command||line sends a ``go to previous document'' to an already existing, but empty, Adobe Reader window. There are perhaps some situations where this possibility might come in handy. \starttyping pdfopen --file [--page ] \stoptyping The Linux version silently ignores a given \type{-}\type{-page} option, because its behaviour would be near||impossible to predict. The program also reacts a bit differently to the \type{-}\type{-file} option: if the file is already open in the Reader, it will close and re||open the document. Normally, this is the command you want to use under Linux, because it immediately re||opesn the PDF file you have given as an argument in the Reader, using the same page \& view settings. The result is {\it almost\/} as if there was a refresh command in the Reader. {\it Almost\/}, because it only works if just this document is open for viewing, not if there are more files opened. \blank I've tested my programs with Acrobat Reader 5.0.10 under Mandrake Linux 10.1 using X.org 6.8.2, but the code is reasonably generic and should work out of the box using most X11R6 implementations. Version 0.5 compiles under X11R5 as well. Adobe Reader 7.0 is OK as long as you keep your PDF files maximized within the main Adobe Reader window (the PDF document's name has to appear in the window title). Also, you probably want to set the preference {\it Reopen documents to last viewed page\/} to ``All files''. You can find this setting in the {\it Startup\/} page of the preferences screen. \medskip \noindent Source and binaries of the programs can be downloaded from \hyphenatedurl{CTAN://support/xpdfopen/} or : \hyphenatedurl{http://tex.aanhet.net/pdfopen} \stoptext