Hi Philip,
On 29.05.21 11:22, Philip Taylor wrote:
Hallo Akira-san, and many thanks for the information. As far as I can
see, the real problem lies in the fact that "only documents opened by
`pdfopen' can be closed by `pdfclose'" [This is a problem because
TeXworks appears not to use `pdfopen' when instructed to "Print
PDF..."]. I assume that this restriction exists because `pdfopen'
obtains some sort of descriptor/handle to the file which it has
opened, which it then uses to close the file, but I have checked and
ascertained that MS Word does not suffer from this problem — I can
open a Word-generated PDF by double-clicking on it in Windows
Explorer, and if I then open the original Word document and tell it to
"Save as PDF", Word manages to tell Adobe Acrobat to close the file
even though it did not initiate the open. I therefore have two
questions :
1. Is there any possibility that `pdfclose' could be enhanced such
that `pdfclose' can open any currently open PDF, not just one that
it has itself opened; and
In principle, yes (if I understand you correctly) - at least for
Acrobat. https://www.adobe.com/go/acrobatsdk_iacguide lists a
CloseAllDocs() function. There doesn't seem to be an easy way to get a
list of all open files, though.
1. Would it be possible to develop a `pdfDDE' program that would
iterate over the known set of DDE server names and report which
(if any) allow successful communication with the server, as
determining the DDE server name appears to be somewhat problematic ?
Yes, it seems to be possible to communicate with all DDE-aware
applications (see
https://docs.microsoft.com/en-us/windows/win32/dataxchg/using-dynamic-data-exchange).
However, many of them may not be PDF readers, and their way of
communicating (supported commands, etc.) are application-specific as
well. So without knowing what to look for, it seems impossible to
actually find something useful.
That being said, according to
https://wiki.tcl-lang.org/page/Howto+open+PDF+with+Adobe+Acrobat+or+Reader+using+DDE,
it might be possible to determine the DDE name of a (properly installed)
Acrobat version from the registry (assuming the syntax doesn't change
from version to version).
In the meantime I will raise this issue on the TeXworks list, since if
TeXworks could use `pdfopen' and `pdfclose' (the former when
instructed to "Print PDF...", the latter before calling XeTeX), then
that would address at least a part of the current problem.
I'm reluctant to force the use of pdfopen, as this is a separate
program/script that need not be installed (it definitely isn't on my
(Linux) system). I could imagine, though, implementing the possibility
to run certain commands before typesetting, such as sending DDE command
to Acrobat on Windows), similar to what I think is done in TeXnicCenter
and probably others.
Does anyone have any experience with other PDF readers? Is the same
problem (no write access to open pdfs) present in, e.g., FoxitReader,
SumatraPDF, etc.? Or is it just Adobe-specific?
HTH
Stefan