pdfopen / pdfclose 不适用于 Acrobat/Adobe Reader XI

pdfopen / pdfclose 不适用于 Acrobat/Adobe Reader XI

有人能解释一下如何获取pdfopen/pdfclose使用 Adob​​e Reader XI 吗?如果您能尽可能详细地说明,我将不胜感激。我在 Windows 7 上使用 Miktex 2.9。

Tex 编辑器 Winedt 版本 5.5

有关问题的更多信息:

如果关闭 Adob​​e Reader (AR) 并点击 Winedt 上的 Pdf Texify 按钮,程序会编译并打开 AR,但是,文件 Acrobat OpenDoc.edt 会立即在 Winedt 编辑器中打开,并弹出以下消息:

无法打开 DDE 链接到:“C:\Program Files (x86) \Adobe\Reader 11.0\Reader\AcroRd32.edx”服务:Acroview 主题:control DDEOpen('%$(“AcroRead”)',”acroview”,”control”,0);

如果我想再次编译我的 tex 文件,我需要先手动关闭 AR。

我认为它可能与此处描述的问题有关: http://sourceforge.net/p/miktex/bugs/2190/

但我不知道如何实施所建议的内容。

答案1

Adobe Reader XI 版本(即版本 11)的 DDE 服务器名称必须为AcroViewR11,参见。Acrobat X 的 DDE 命名约定发生重大变化。根据错误信息你仍然使用acroview

您还可以在博客文章中读到,对于 Adob​​e Acrobat XI,DDE 服务器将是AcroViewA11

答案2

对于那些仍然使用 Adob​​e Reader 作为 WinEdt 7 的预览器(而不是更适合此任务的应用程序:SumatraPDF)并考虑升级到 AR 11 的人,以下是您应该了解的内容。

AR 11 安装程序“忘记”使用新的 DDE 服务更新注册表(实际上它放置了旧的 AcroViewR10)。因此,WinEdt 将无法执行前向搜索或在重新编译之前关闭被 AR 锁定的文件。您可以在以下位置阅读更多相关信息:

http://forums.adobe.com/message/4792194

或通过 google 获取更多信息(它会影响所有依赖 Adob​​e DDE 服务的应用程序).​​..

解决方案(如果您仍然坚持使用 AR):在 WinEdt 中启动选项界面。在高级分支中打开 PDF 宏并双击 Adob​​e Blues。最后您将看到类似以下内容:

// If you must manually modify any of these variables do it here:
//
// Assign(!"PDF-Caption",!"Adobe Reader");
// Assign(!"Acro-DDE_Topic",!"Control");
// Assign(!"Acro-DDE_Service",!"AcroviewR11");

删除最后一行的注释并执行宏(Ctrl+F9)。如果您拥有完整版 Acrobat(而不是免费阅读器),则服务可能是 AcroviewA11,或者只是 Acroview for Acrobat Pro(尝试几个值,直到它适用于您的版本)。

请记住这些有关下一版 Adob​​e 的说明...

答案3

我刚刚用 WinEdt 7.0 测试了它。安装 Reader XI 后,它运行起来没有任何变化。

我不知道 WinEdt 5.5 的菜单,但在 WinEdt 7.0 下,您可以选择Options-> Execution Modes-> PDF Viewer。在那里您可以添加 4 个不同的 pdf 查看器。选择一个并搜索 Acrobat 阅读器的路径。单击Alternative Reader x和激活它Apply。之后我能够使用 Acrobat Reader XI 显示 pdf 文件。

WinEdt 7.0 中 pdf Viewer 的配置

答案4

我正在使用 WinEdt (v. 5.4) 和 Adob​​e Professional 8,我使用以下方法解决了我的问题此方法。为了完整起见,以下是讨论的摘录:

From: <wkehowski <at> cox.net>
Subject: Acrobat Reader 7.0 problem
Newsgroups: gmane.editors.winedt
Date: 2005-12-02 15:31:08 GMT (7 years, 8 weeks, 9 hours and 32 minutes ago)
Hello,

I finally successfully uncommented the IfLocked line in the macro Acrobat CloseDoc.edt and now Reader
closes and updates properly. I placed the macro in my Application Data/WinEdt/Exec folder. 

Thanks for your help, Alex. Rock on!

Here's the edited macro:

// -*- ASCII:EDT -*-
// Acrobat: Close PDF Document ...
//  Full description of all DDE Functions implemented by Acrobat (only
//  some are also supported by Acrobat Reader as indicated for each one):
//
//   https://partners.adobe.com/asn/acrobat/sdk/reg/Documentation/Core_API/CoreAPIReference.pdf

Requires(20040114); // Requires this build of WinEdt to work properly
// Close the current Document in Acrobat (Reader) using DDE

     IfOK(>
       !*>
         ProcessMessages;>
         DDEOpen("%$(""AcroRead"")","acroview","control");>
// A bug in Adobe: if another application (eg. TeXify) started it with 8.3 filename
// WinEdt has to use 8.3 filename as well or else Adobe will not close the document!
// Nothing WinEdt can do about this (8.3 filenames are obsolete anyway)...
//         DDEExe("[DocOpen(""%~P\%~N.pdf"")]");  // Has to be Opened via DDE DocOpen<>
//         DDEExe("[DocClose(""%~P\%~N.pdf"")]"); // for DocClose to work...<>
//         DDEExe("[CloseAllDocs()]"); // A bit too radical <>
         DDEExe("[DocOpen(""%P\%N.pdf"")]");  // Has to be Opened via DDE DocOpen<>
         DDEExe("[DocClose(""%P\%N.pdf"")]"); // for DocClose to work...<>
         DDEClose;>
         // Sync problem - wait until the file is released:<>
         // Acrobat Reader may take some time to release the pdf file!<>
         StartWorking('Closing PDF Document...');>
         SendMessage("%$(`Acro-Title`);", $0000, $0000);>
         ProcessMessages;>
         LetRegNum(0,0);>
         Loop( // Prevent an Infinite Loop: 5 sec. max<>
           !|LetRegNum(0,%!0+1);IfNum(%!0,55,'>','Stop;');>
             IfFileLocked("%P\%N.pdf", 00110,!'ProcessMessages;Wait(99);',!'Stop;',!'Stop;');>
            |);>
         SetFocus;>
         ProcessMessages;>
         StopWorking;>
         //Prompt('Required Iterations: %!0.'); // Testing for Problems<>
        *);

End;

相关内容