2012-08-14 87 views
1

我花了几天的时间搜索互联网的肠道以找出我的问题的答案,因为我找不到答案,所以我扔了它给群众......Qt,PDF查看器,跳转到特定页面

在我的Qt应用程序我能使用的操作系统默认的浏览器直通下面的命令来打开PDF:

QDesktopServices::openUrl(QUrl("file:////C:help.pdf", QUrl::TolerantMode)); 

这工作得很好,因为所有我想要do是向用户显示帮助文件,但是当我尝试向我的URL添加“#page = 20”参数时,文档仍然只打开到第一页,而不是第20页。如果我剪切并粘贴命令它跳转的浏览器正确。

所以 - 我的问题是:

  1. 的poppler会或其他观察工具允许我跳转到一个页面?
  2. Qt有另一种方式跳转到页面吗?或者也许另一个命令打开文件,而不是与QDesktopServices?

编辑:我试着用QProcess中并不会跳转到页面或者 - 不,我预料到......

+1

你的URL看起来很奇怪。你的意思是:'“file:// C:/help.pdf”'? – leemes 2012-08-14 17:48:32

+0

其实,我所做的是从链接中删除我的用户名并创建了一个错字 - 您是对的,对不起! – user1020750 2012-08-15 17:59:02

回答

4

使用QProcess与其中一个答案来自Adobe Reader Command Line Reference

<path to Adobe Reader> /A "page=100" "<Path To PDF file>" 
+0

嗯,我必须稍后再拍这张照片(当我从我的日常工作中回家)。我已经用QProcess成功地启动了它,但是如果我可以找出一种方法在QProcess的参数中嵌入这些选项,那可能会这么做! – user1020750 2012-08-15 18:32:33

+0

请注意,虽然这是一个解决方案,但它不可兼容,既不尊重操作系统,也不尊重PDF查看器。 – leemes 2012-08-16 00:12:47

+0

是的,已经考虑过了......我在我的应用程序中使用了QProcess来处理其他事情,并且必须解决它 - 谢谢! – user1020750 2012-08-16 19:09:42

1
  1. 是的。 evince,例如,需要选择--page-index您可以设置页码
  2. QDesktopServices::openUrl()结束调用助手的一个命令,如xdg-openkfmclient,不带任何参数。

因此,您可以随时在您的应用程序中使用libpoppler来打开您的PDF。 Poppler::Document::page()是你的朋友。

+0

解释了为什么QDesktopServices :: openUrl(QUrl(“file:// C:/help.pdf#page=20”));当我将test.pdf文件关联到Chrome而不是Reader时,将删除#page = 20参数 - 感谢那个输入... – user1020750 2012-08-15 18:09:49

+0

如果我无法让QProcess工作(这似乎是获得解决方案的更快方式因为我快到了),那么我会试试你的两个想法 - 谢谢! – user1020750 2012-08-15 18:35:38

0

我能够解决的另一个解决方案是将我的PDF转换为HTML,创建一个QWebView,并在那里显示HTML。然后我添加了一个ID属性为HTML文档,当我认为上涨ID来我的网址它装到小工具的属性的位置...

斯科特