思路初探 採用c 實現pdf轉ofd

2021-10-21 02:11:13 字數 2676 閱讀 4702

前言版式文件格式是版面呈現效果固定的電子文件格式, pdf和ofd均為板式文件格式標準;pdf板式檔案占有絕對的統治地位;ofd是我國自主研發的板式文件規範,屬於後起之秀。同為板式檔案, 理論上可以實現互轉而又能達到呈現格式完全一致。

ofd標準晚於pdf標準將近20年,ofd標準採用吸納了軟體行業近年來的一些先進技術和通用做法;ofd和pdf雖均為板式檔案,但是兩個標準對板式檔案的描述差別還是非常大的。市面上的板式檔案大部分為pdf,如果能實現pdf轉ofd,就解決了ofd的**問題,可以促進ofd更快的普及。

pdf轉ofd初步思路

板式檔案描述的內基本分為三大類:文字、線、圖,稱之為圖元。繪製圖元時,還需要確定圖元所處的「環境」,如:前景色、背景色、剪下區域、座標系等;稱之為狀態。最終的呈現效果由圖元和狀態決定的。

ofd與pdf描述這些元素的詞是完全不同的,但是有相同的「意境」。將pdf轉換為ofd的前提是充分理解pdf和ofd標準,找準兩個標準相通的「意境」;轉換就是意境的轉換,而不是詞彙的轉換。下面逐步分析兩個標準之間的差異。

pdf與ofd文件描述差異

pdf屬於單體檔案,ofd屬於容器檔案;暨ofd是壓縮包,壓縮包包含多個檔案。pdf檔案分為很多塊,每個塊稱之為object,有唯一id對應。每個塊分為header和body,header描述格式為dictionary。pdf檔案的結構需要通過專用軟體才能檢視,這一點不如ofd。pdf檔案內容檢視器。

ofd容器內主要包括資源檔案和格式描述檔案。資源檔案可以是任意檔案,如:、字型、簽章資料等;檔案之間互不影響,可以方便的新增刪除檔案。格式檔案是描述呈現格式的檔案,為xml格式;採用xml格式的好處是:xml是標準格式、解析xml有現成的庫;xml的描述能力也比pdf的文字描述能力更好。

對於狀態的描述,ofd和pdf採用了兩種不同的方式。pdf對狀態的描述是分散的,確定當前狀態的屬性需要追溯到文件開始。ofd對狀態的描述是自包含的,僅僅通過當前xml節點就能確定狀態屬性。從上可以看出,分析pdf的狀態難度更大,但是pdf這種描述方式更能節省空間,特別是描述非常複雜的狀態時。

文字描述差異

pdf對文字的描述比ofd要複雜很多;pdf標準誕生時,還沒有unicode概念,最初pdf只是用來顯示拉丁文本。為了顯示東亞檔案,pdf標準只能另闢蹊徑,採用了cid格式字型檔案。ofd對字型描述統一採用unicode,達到了化繁為簡的效果。

描述差異

pdf處理部分比ofd複雜很多。pdf中的不是乙個直接的「圖」,它會描述圖的壓縮格式、畫素顏色個數、調色盤等資訊,需要軟體合成檔案;而ofd檔案是直接存入乙個檔案。

線描述差異

這兩部分差異不大,線處理是相對來說簡單些。ofd有乙個特殊的操作符a,用來表示圓弧。

c# 實現pdf轉ofd步驟

1)pdf檔案讀取

可以借助開源庫處理pdf,比如:itext,apose,pdfbox等。pdf檔案的結構還是比較複雜的,實現檔案的讀取邏輯也是非常複雜。

2)pdf指令的分割

每個pdf的指令包括運算元和操作符。這些資料是混合到一塊的,需要快速高效的找到每個完整的指令。

下圖恰好是每行乙個指令。

3)pdf指令的處理

這裡是pdf處理最複雜部分。pdf指令歸為十幾大類。從作用上來講可以分為兩類:狀態指令、操作指令。狀態指令是修改pdf狀態屬性的,操作指令是執行具體操作,如:顯示文字、劃線等。

4) pdf轉ofd

理解pdf的處理指令就是掌握了「語義」,這是將pdf翻譯成ofd必要條件。將語義用xml語法表示出來就是水到渠成的事。

後記要完成pdf轉ofd的功能,需要同時理解pdf和ofd標準。只要準確把握了這兩種標準的內涵,就能實現pdf轉ofd而又能確保不失真。

在板式檔案領域,pdf仍然是主流;但是ofd具有後發優勢。pdf標準文件達1300多頁,還有大量的附加協議,完全掌握pdf標準需要假以時日。pdf標準出現的較早,所以揹負了沉重的歷史包袱;標準中的部分內容在今天看來是過時、冗餘的。

pdf已成為事實上的國際標準,流式文件軟體(wps等)或其他編輯設計軟體大都有轉換pdf功能。ofd的普及需要各方面的共同努力, 讓使用者快捷方便的生成ofd檔案是其中重要的一環。畢竟,無源之水無法匯集成浩瀚海洋。作者用c#嘗試實現了pdf轉ofd功能,達到了初步可用狀況。實現pdf完美轉換為ofd及ofd在國內普及是作者的夢想;前途漫漫,唯有奮鬥。

思路初探 採用c 實現pdf轉ofd

前言版式文件格式是版面呈現效果固定的電子文件格式,pdf和ofd均為板式文件格式標準 pdf板式檔案占有絕對的統治地位 ofd是我國自主研發的板式文件規範,屬於後起之秀。同為板式檔案,理論上可以實現互轉而又能達到呈現格式完全一致。ofd標準晚於pdf標準將近20年,ofd標準採用吸納了軟體行業近年來...

採用FPGA實現UART轉SPI

應用筆記 v1.1 2015 2 10 採用 fpga 實現uart 轉spi 概述 本文提供了實現uart轉spi的verilog 的功能描述。這份筆記將介紹uart和spi的基本知識,設計的基本思路,以及 的具體實現及其描述。本程式的具體功能在於配合ad9512 serial gui完成ad95...

C Word文件轉PDF的實現

private string adobepdfprint adobe pdf private string adobedisprint acrobat distiller private string regroot software adobe acrobat distiller private ...