簡體   English   中英

如何獲取PDF頁面的字節范圍?

[英]How to get byte range of PDF pages?

我正在嘗試通過mozilla pdf.js項目加載PDF文檔,盡管我已經獲得了有關如何將文檔加載到頁面和縮放級別( #page #page=10&zoom=page-fit )的足夠知識,但是我檢查了查看器的選項,發現我還可以通過URL參數將范圍請求添加到PDF文件...我不知道它是如何工作的,所以我想在這里詢問...

我有2個PDF文件,我的問題是,是否可以為頁面上的每個按鈕的PDF的URL添加范圍參數,以在單擊時僅加載所需的PDF頁面?

我目前正在系統上使用XAMPP,但不確定該XAMPP是否支持范圍請求(以進行測試),盡管該站點稍后將在線上傳。 Web主機通常支持范圍請求嗎?

如何分別獲取2個PDF文件中的所有頁面的字節范圍? 是否有PHP腳本或Windows實用程序從PDF獲取頁面范圍(以字節為單位)?

並且一旦找到,當加載PDF時,如何將這些范圍請求添加到viewer.html頁面,這樣就不會首先加載整個文檔,而是僅首先加載所需的頁面,然后disableAutoFetch=false可以讓查看者獲取剩余的PDF:

如果沒有其他范圍請求發送給PDF文件,則獲取PDF的剩余內容

(在隱身搜索時在某些博客上閱讀類似內容,不記得該博客的URL,但pdf.js Wiki在網站上未提及此內容)。

編輯:根據pdfinfo實用程序對我的PDF文件進行了優化。

Pdf優化

請求字節范圍的功能不適用於最終用戶。 這是正確處理“線性化” PDF(通常也稱為“網絡優化” PDF)的隱含要求。

可以通過此命令檢查線性化/經過網絡優化的PDF,例如:

 pdfinfo filename.pdf | grep Optimized:

線性化PDF的內部結構確實有些不同。 基本上,這樣做是為了使符合條件的閱讀器軟件無需下載完整的文件,因此可以訪問trailerxref表部分(在標准PDF中,這些部分始終位於文件末尾)。

需要Trailer和X / Cross Reference Table(一種內部PDF'ToC'),以便閱讀器軟件能夠識別文件中根對象的位置,並從中識別頁面和所有其他對象。

取而代之的是,讀者通過不同的方式xrefxref和根對象的位置,並且它可以開始渲染第一頁(其對象必須位於文件的開頭),而其余文件/對象/頁面都位於該位置。仍在下載。

這意味着用戶可以單擊書簽,內部超鏈接,或在第一頁可見后立即告訴讀者“轉到第80頁”。 然后,讀者可以從已經處理的信息中知道應該從合格的Web服務器請求哪個字節范圍。

其他問題:

  • 不,在“標准” PDF中,與特定頁面相關的對象幾乎永遠不會連續(這是非常罕見的例外)。

  • 是的,Web服務器也需要支持字節范圍傳遞( “字節服務” )。 是的,所有現代Web服務器都可以配置為支持此功能。

  • 不,我不知道有任何實用程序可以向您報告PDF的頁面范圍(以字節為單位)(如果適用,則僅適用於線性化PDF)。

TL; DR: 僅當您的PDF文檔首先經過“網絡優化”時,才有可能要求在PDF上下文中下載字節范圍! (並且請求特定字節范圍必須由查看器完成,將用戶對特定頁面的請求轉換為正確的范圍編號...)


更新

資源:

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM