acrobat 打开pdf出现“使用辅助技术阅读未加标签的文档”

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了acrobat 打开pdf出现“使用辅助技术阅读未加标签的文档”相关的知识,希望对你有一定的参考价值。

参考技术A acrobat 打开pdf出现“使用辅助技术阅读未加标签的文档”

编辑-首选项-里选择辅助工具
启用辅助技术支持的勾去掉,就不会出现了

在“高级”菜单的“辅助工具”选中“设置助手”
,然后点选“设置屏幕阅读器选项”,
下一步之后,将“忽略已加标签文档的阅读顺序”和“添加标签到文档之前进行确认”前面的勾去掉即可。

检测 Acrobat 安装或任何其他打开 PDF 的方式

【中文标题】检测 Acrobat 安装或任何其他打开 PDF 的方式【英文标题】:Detect the Acrobat installation or any alternate way to open PDF 【发布时间】:2011-10-08 04:42:59 【问题描述】:

我已经构建了一个 WPF 应用程序来使用 Interop.AcroPDFLib.dll 查看 PDF 文件,问题是如果客户端计算机上没有安装 Adob​​e Acrobat 阅读器,则应用程序 stops working 会崩溃。

有没有办法我可以事先检测 Acrobat Reader 安装,然后在运行时包含对 Interop.AcroPDFLib.dll 的引用,否则会显示错误消息?

有没有更好的开源解决方案可用于在 WPF 中显示 pdf 文件?

问候。

【问题讨论】:

有什么建议和想法吗?请分享... 我对 COM 互操作不太熟悉,但您的应用程序不应该只在您真正调用来自Interop.AcroPDFLib.dll 的方法之一时崩溃吗? P/Invoke 方法当然就是这种情况。 【参考方案1】:

如果任何支持 PDF 的应用程序已正确安装,则 System.Diagnostics.Process.Start(@"C:\MyPDF.pdf"); 使用您的 PDF 文件启动它...

至于检测,您可以在HKLM\SOFTWARE\Adobe... 的注册表中检查 Reader 和/或 Acrobat。

另一种选择是检查已注册的文件关联 - 关于如何检查此 SO 答案 Script to associate an extension to a program

编辑 - 根据评论:

对于需要“动态”使用 Interop 的场景,静态添加引用并不是一个好主意...另一种方法是使用类似于以下内容的“老式方式”来执行 COM:

object A = Activator.CreateInstance (Type.GetTypeFromProgId (""));
object R = Type.GetTypeFromProgId ("").InvokeMember ("MyMethodName", BindingFlags.InvokeMethod, null, A, new object[] myParam1, myParam2);
Marshal.FinalReleaseComObject (A);

相关链接:

http://msdn.microsoft.com/en-us/library/wccyzw83.aspx http://msdn.microsoft.com/en-us/library/hss5hw09.aspx http://msdn.microsoft.com/en-us/library/66btctbe.aspx http://msdn.microsoft.com/en-us/library/system.reflection.bindingflags.aspx http://msdn.microsoft.com/en-us/library/system.runtime.interopservices.marshal.finalreleasecomobject.aspx

【讨论】:

tnx 的回复,请您在确定是否安装了 Adob​​e Acrobat 后告诉我如何在我的项目中添加对Interop.AcroPDFLib.dll 的引用【参考方案2】:

如果有任何应用程序/软件。使用安装程序安装在 Windows 中,它通常会在控制面板中看到的已安装程序中创建一个条目(即在注册表中)。所以你可以搜索它,因为Adobe Reader 主要来自安装程序并检查验证Adobe reader 的安装。

参考见artice1article2

【讨论】:

【参考方案3】:

检查组件服务中的 GUID。通常 adobe reader 具有相同的 COM GUID。 检查安装。它是否在 c:\Program Files\Adobe .... 或 c:\Program Files x86\Adobe.... 上可用。这是假设 adobe 安装在该文件夹中。这是一种轻松的方式。 我使用以下方法搜索文件名 AcroRd32.exe:

Directory.GetFiles(@"C:\", AcroRd32.exe", SearchOption.AllDirectories)

如果找到了,则可以检查adobe reader的安装是否正常。

您可以使用 Process.Start 调用 adobe pdf I 并捕获其异常,然后终止其进程。 如果是抛出异常,则 adobe reader 未安装或损坏。否则会安装

例如:

try

Process.Start(@"c:\your program files\Adobe\Adobe.exe");
 catch

   throw new Exception ("adobe is not installed or error");

您可以通过搜索adobe reader文件自定义上述代码,然后将其传递给Process.Start参数。

我不知道使用 wpf 显示 pdf 的开源解决方案。对不起

【讨论】:

-1 抱歉,这可能是最糟糕的做法。在 3+TB 硬盘驱动器的时代,搜索整个磁盘以查找可执行文件可能需要几分钟时间。此外,您应该使用 %ProgramFiles%ProgramFiles(x86) 环境变量。最后,用户始终可以选择将 Adob​​e 安装在完全不同的位置。而是使用注册表,这就是它的目的。

以上是关于acrobat 打开pdf出现“使用辅助技术阅读未加标签的文档”的主要内容,如果未能解决你的问题,请参考以下文章

打开PDF文档时,消除“内容准备进度”

用adobe acrobat 8 将pdf文件转换为Word时为啥会出现乱码

wkhtmltopdf / tables / acrobat-reader 的 PDF 显示错误

检测 Acrobat 安装或任何其他打开 PDF 的方式

打开PDF修改文字的时候,显示本页面存在错误,Acrobat 可能无法正确显示页面,请联系PDF文档创建者

我要填一个表格,是PDF格式的,但是副本不能保存只能打印,怎样保存呢?急急急!