2012-08-14 187 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來我的網址它裝到小工具的屬性的位置...

斯科特