Adobe Reader ActiveX + QAxWidget;获取当前页面

时间:2014-01-21 20:15:09

标签: com activex ole adobe-reader activeqt

我正在尝试将Abode Reader嵌入到我的win应用程序中,目标本身是从应用程序中简单查看PDF文档,没有找到免费的渲染库(GPL不会这样做),所以这是我的解决方案。 QAxWidget解决了大部分问题,但我还需要了解一些次要信息,比如当前页面的编号。

尝试一下:

ui->axWidget-> dynamicCall("LoadFile(const QString &)", "C:/sample.pdf"); // works fine

似乎有一个很好的参考:Interapplication Communication API Reference - Adobe

来自AxAcroPDFLib.AxAcroPDF对象的所有方法都称为正常工作正常。但是那些是设置者,对于getter AcroExch.AVPageView是必需的,尽管Qt Creator和手动搜索都不是ui->axWidget->querySubObject("something")为我提供(其他?)合适的ActiveX对象。可以从GetActiveDoc()对象调用AcroExch.App,我也无处可去。

问题是:如果可能的话,如何通过AciveX获取当前页码?

1 个答案:

答案 0 :(得分:1)

该死的,我有点傻,一段时间后找到答案。

所有“getters”,如获取当前页面的数量,总页数,当前缩放等的方法都是由其他ActiveX obj支持的,AcroExch.AVPageView(包含在AcroExch.App中)确切地说。

详细信息位于Adobe参考中,此处为:IACReference

但关键是, Adob​​e Reader 本身仅提供带有“setter”的AxAcroPDFLib.AxAcroPDF对象,即使是通过DDE消息也是如此。似乎仅在 Adob​​e Acrobat 中提供完整功能,该功能不是免费的,并且以通常的商业方式获得许可/购买。

因此,正如Adobe所说,您可以使用有限的Reader OLE方法或购买Acrobat。