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 文件,问题是如果客户端计算机上没有安装 Adobe 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 的回复,请您在确定是否安装了 Adobe 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)
环境变量。最后,用户始终可以选择将 Adobe 安装在完全不同的位置。而是使用注册表,这就是它的目的。以上是关于acrobat 打开pdf出现“使用辅助技术阅读未加标签的文档”的主要内容,如果未能解决你的问题,请参考以下文章
用adobe acrobat 8 将pdf文件转换为Word时为啥会出现乱码
wkhtmltopdf / tables / acrobat-reader 的 PDF 显示错误