PDFium Delphi Component 文件

進階頁面內容 API

元件: TPdf  ·  單元: PDFium
檢查與編輯原生頁面內容,應用程式不必自行管理 PDFium 控制代碼或點陣圖緩衝區

頁面物件檢查

PageObjectInfo 傳回單一 TPdfPageObjectInfo 快照,包含控制代碼、物件型別、正常與旋轉邊界、有效矩陣、作用狀態、透明度、填色與描邊顏色、alpha 值、描邊寬度、線條接合、線條端點、虛線陣列與虛線相位

HasRotatedBounds、HasActiveState 與其他 Has* 欄位可區分「原生值無法取得」與「有效的零值」

RotatedBounds 攜帶旋轉後的四邊形,HasLineJoin 與 HasLineCap 把關接合與端點樣式,DashPhase 則偏移虛線圖樣的起點

批次化頁面物件編輯

Info := Pdf1.PageObjectInfo(0);
Info.StrokeWidth := 4;
SetLength(Info.DashArray, 2);
Info.DashArray[0] := 8;
Info.DashArray[1] := 4;
Pdf1.UpdatePageObject(0, Info, [pocStrokeWidth, pocDashPattern]);

UpdatePageObject 會把每個選取的欄位套用到同一個原生物件,並只重新產生頁面內容一次

TransformPageObject 對選取的物件組合仿射 FS_MATRIX

路徑、剪裁路徑與 Form XObjects

內容標記、字形與原生物件輔助

字元檢查與索引對應

CharacterInfo 傳回填色與描邊顏色、字型名稱、PDF 字型旗標、寬鬆字形邊界、有效矩陣,以及相關聯的文字物件控制代碼

CharacterIndexToTextIndex 與 TextIndexToCharacterIndex 在 PDFium 字元索引與所產生文字流中的索引之間轉換

註解框線與外觀串流

TPdfAnnotation 透過 HasBorder、BorderHorizontalRadius、BorderVerticalRadius 與 BorderWidth 公開框線半徑與寬度

顏色涵蓋範圍延伸到 ColorAlpha、InteriorColor 與 InteriorColorAlpha,標註中繼資料由 HasAuthor、HasName、HasSubject、HasModificationDate、HasCreationDate 與 HasIcon 把關,墨跡手勢、四點幾何與連結目標則透過 InkList、HasAttachmentPoints、HasLinkUri 與 LinkUri 公開

正常、滑入與按下的外觀串流可透過 HasAppearanceNormal、HasAppearanceRollover 與 HasAppearanceDown 哨兵旗標及其對應的 AppearanceNormal、AppearanceRollover 與 AppearanceDown 字串取得

讀取註解時,這些哨兵旗標識別的是非空的外觀內容:原生 API 對「串流不存在」與「串流為空」回傳同樣的空字串,因此兩者都回報 False,寫回記錄時也不會被更動;呼叫端仍可明確把哨兵旗標設為 True,寫出空的外觀

把更新後的註解記錄指派回 Annotation[Index],即可寫入選取的框線或外觀值

原生程式庫、註解與表單診斷

縮圖與仿射頁面轉換

矩陣算繪

Matrix.a := 0.5;
Matrix.b := 0;
Matrix.c := 0;
Matrix.d := -0.5;
Matrix.e := 0;
Matrix.f := 421;
Clip.Left := 0;
Clip.Top := 0;
Clip.Right := 300;
Clip.Bottom := 421;
Bitmap := Pdf1.RenderPageWithMatrix(300, 421, Matrix, Clip);

RenderPageWithMatrix 接受可逆的 FS_MATRIX 與裝置座標下的剪裁矩形

接收呼叫端自有 TBitmap 的多載會直接算繪到相容的 32 位元 DIB,只有在外部 PDFium 點陣圖無法建立時,才回退為單次複製

矩陣算繪會繪製頁面內容與透過算繪旗標選取的非互動式註解,但不會呼叫表單填寫覆疊算繪器