我正在從 PDF 檔案中提取鏈接及其位置。
每個鏈接都有一個邊界矩形。
<</A 169 0 R/BS<</S/S/Type/Border/W 0>>/Border[0 0 0]/H/N/Rect[97.0153 116.556 185.543 21.5209]/Subtype/Link/Type/Annot>>
讓我們看看Rect[97.0153 116.556 185.543 21.5209](我是從我的檔案中復制得到的)。
矩形是默認用戶空間單位的四個數字的陣列,分別給出左、下、右和上邊緣的坐標。
所以我們有left = 97.0153, bottom = 116.556, right = 185.543, top = 21.5209。
據我所知,PDF 的用戶空間是一個常規的笛卡爾坐標系。因此,我希望矩形的頂部邊緣大于底部的邊緣,所以當我想計算矩形的高度時,我使用公式height = top - bottom. 對于那個特定的 PDF 檔案height = 21.5209 - 116.556 = -95.036,即高度為負,我做錯了什么。
我一定錯過了一些東西并做出了錯誤的假設。請問有人可以建議嗎?
uj5u.com熱心網友回復:
關于你的性格
矩形是默認用戶空間單位的四個數字的陣列,分別給出左、下、右和上邊緣的坐標。
你在評論中說
我也是從BBox條目描述中得到的。BBox被宣告為具有型別rectangle并提供描述 if rectangle。PDF 參考,第 3 版,第。616.
但BBOX條目描述不是定義的的矩形型別。該定義是101頁:
3.8.3 矩形
矩形用于描述頁面上的位置和各種物件(例如字體)的邊界框。一個矩形被寫成一個由四個數字組成的陣列,給出一對對角的坐標。通常,陣列采用以下形式
[11 X LL y烏爾X烏爾? ]
按順序指定矩形的左下 x、左下 y、右上 x 和右上 y 坐標。
注意:雖然矩形通常由其左下角和右上角指定,但可以指定任何兩個對角相對的角。處理 PDF 的應用程式應準備好在需要特定角的情況下對此類矩形進行規范化。
因此,您為BBox條目找到的特征構成了該BBox條目所需的典型形式。但是,其他矩形可能仍使用非典型形式。因此,您需要對陣列進行歸一化(或者在您的情況下,將該差異的絕對值作為高度)。
順便說一句,我也不指望BBox條目總是采用那種典型的形式。隨時準備規范化矩形陣列。
話雖如此,您應該幫自己一個忙,不要再使用 2001 年的舊 PDF 參考,而是使用指定 PDF 的 ISO 規范,即 ISO 32000-1 或 ISO 32000-2。ISO 32000-1 已于 2008 年發布。 ISO 32000-2 已于 2017 年發布并于 2020 年更新。
如果您不想在規范上花錢,Adobe 已共享了 ISO 32000-1 的副本,并在其網站上洗掉了 ISO 頁眉。要找到它,只需搜索“PDF32000”;目前它位于https://www.adobe.com/content/dam/acom/en/devnet/pdf/pdfs/PDF32000_2008.pdf
仍然應該使用 PDF 1.4 參考的唯一情況是在基于該參考的規范的背景關系中,例如 PDF/A-1。否則,PDF 參考已經過時,并且之前已經被Adobe PDF 架構師 Leonard Rosenthol稱為本質上不是規范的。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/346235.html
標籤:pdf
下一篇:創建后無法打開pdf
