我已使用组件导入 Acrobat Reader | 导入组件。AcroPdf_TLB 单元在 Imports 目录中创建。
当我尝试使用 AcrobatReader 组件时,如下...
AcroDoc := TAcroPDF.Create(nil);
...我收到“未指定错误”异常 (EOleSysError)。有任何想法吗?
谢谢,彼得。
如果您对获得的结果不满意(我曾经),您可以考虑尝试一下QuickPDF。价格也不是不合理,它们包含了很多不错的 PDF 功能,您可以通过调用 RenderPageToStream 在 TImage 控件中准确地显示 PDF。我发现使用表单字段的一件事是,我必须在渲染之前使用它们的 FlattenFormField 来获取要包含在渲染图像中的表单字段内容。
跟进:
我最初没有提到 QuickPDF 也适用于打印。对于表单域,您必须执行相同的 FlattenFormField 例程,但结果看起来不错,而且开销比依赖 Acrobat Reader 少得多。
将组件放在 TForm 上,然后它可能会起作用。
Acrobat ActiveX/COM 对象因不正确支持旧版本的接口而臭名昭著。你得到EOleSysError 到处都是。
我个人为几个客户所做的是将 PDF 文档加载到TWebBrowser中。
TWebBrowser 是 Internet Explorer 用来显示所有内容的 ActiveX/COM 组件的包装器。
Adobe 在每次 Acrobat 更新时都能很好地实现这一点,因此 TWebBrowser 也可以正常工作。
请注意,这只对显示 PDF 文档有意义。
——杰伦
我们使用 Adobe Reader 插件并经常遇到这个问题。它特别是在用户在 Adobe Reader 上执行网络更新后出现。
尝试卸载(通过控制面板),然后重新安装最新的 Adobe Reader。
这总是为我们的用户解决问题。
我们在 Delphi 7 应用程序中成功使用了 acrobat v6 阅读器组件,但发现它确实需要 acrobat v6。今天只安装 acrobat v9 的用户在使用我们的应用程序查看 pdf 时会遇到错误,因为 acrobat 组件不能以这种方式向后兼容。
So yes, you can do it, but there are probable issues going forward.
A third party tool is prob best...