我正在尝试将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获取当前页码?
答案 0 :(得分:1)
该死的,我有点傻,一段时间后找到答案。
所有“getters”,如获取当前页面的数量,总页数,当前缩放等的方法都是由其他ActiveX obj支持的,AcroExch.AVPageView(包含在AcroExch.App中)确切地说。
详细信息位于Adobe参考中,此处为:IACReference
但关键是, Adobe Reader 本身仅提供带有“setter”的AxAcroPDFLib.AxAcroPDF对象,即使是通过DDE消息也是如此。似乎仅在 Adobe Acrobat 中提供完整功能,该功能不是免费的,并且以通常的商业方式获得许可/购买。
因此,正如Adobe所说,您可以使用有限的Reader OLE方法或购买Acrobat。