我有一個Unicode圖譜文檔,它忽略了toUnicode圖譜。我有一個不同的PDF與具有toUnicode地圖的相同字體。我可以從一個PDF中提取它並使用它從其他PDF中提取文本嗎?從一個PDF中提取Unicode圖譜並在另一個圖譜中使用
2
A
回答
3
通用答案是否定的。您正在討論的ToUnicode地圖遵循PDF CMap格式,用於將字符代碼轉換爲Unicode值。你面臨兩個潛在的缺陷:
1)字體不完全相同。儘管它們的名稱可能相同,但它們可能具有不同的編碼,或者可能包含不同的字形(即使是相同的編碼)。在這種情況下從不同字體應用CMap會給你不正確的Unicode值。
2)字體可能在所有方面都是相同的,但可能會在PDF文件中進行子集(可能),並且子集可能不同。當然有些情況不會改變字體在PDF文件中的存儲方式,但是有優化的PDF編寫器會壓縮任何他們可以在子集字體中使用的東西,這可能會導致不同的字符編碼被使用並最終不同ToUnicode地圖。
1
對於Unicode映射Adobe有特殊資源/ ToUnicode 您可以在Font資源描述的pdf文件中找到它。它看起來像
<</BaseFont /ONWALI+Sylfaen/DescendantFonts [10 0 R]/Encoding /Identity-H/Subtype /Type0/ToUnicode 11 0 R/Type /Font>>
和/ToUnicode 11 0 R
是你需要在PDF文件。 11 0
是資源ID
我已經創建了帶有Acrobat Pro中所有字母符號的示例pdf,以使用與報表中使用的字體相同的標準ToUnicode映射。我已經提取的資源爲文本,它看起來是這樣的:所以你必須將其解壓縮得到的文字像上面
/CIDInit /ProcSet findresource begin
12 dict begin
begincmap
/CIDSystemInfo
<< /Registry (Adobe)
/Ordering (UCS) /Supplement 0 >> def
/CMapName /Adobe-Identity-UCS def
/CMapType 2 def
1 begincodespacerange
<0000> <FFFF>
endcodespacerange
50 beginbfchar
<0003> <0020>
...and so on...
endbfchar
endcmap CMapName currentdict /CMap defineresource pop end end
ToUnicode資源通常壓縮。
然後,我編寫了代碼,它使用pdf(來自Misrosoft Reporting中生成的報告),併爲找到的每個字體添加/ ToUnicode資源。 PDF具有帶指針的外部參照表,並且不能將其編輯爲文本文件。所以你必須使用一些pdf引擎(我使用過PDFTron,但是itext應該足夠了)。每次需要將報告另存爲pdf時,都會執行此後處理代碼。 實際上,ToUnicode映射應該由Microsoft報告引擎填充,但它太好了,無法實現。
就是這樣。
相關問題
- 1. 如何從光譜圖像中提取EELS光譜?
- 2. 在豬中合併多個圖譜
- 3. 在同一本食譜中使用多個食譜
- 4. 譜系圖/家譜
- 5. 將光譜顏色設置爲另一個光譜
- 6. js譜圖多個目標
- 7. 在一個視圖中嵌套食譜和配料表
- 8. 得到一個像譜圖在MATLAB中的陰謀
- 9. 如何使用提振期貨圖譜?
- 10. 創建一個樂譜
- 11. 尋找一個家譜
- 12. 使用臉譜圖api
- 13. 廚師:在同一本食譜中運行兩個不同用戶的食譜
- 14. 使用openCV從另一個圖像中減去一個圖像
- 15. 從樂譜中提取每一行的措施
- 16. 獲取臉譜網圖片
- 17. 譜圖Matlab的
- 18. matlab 3D譜圖
- 19. 聲譜圖
- 20. Python中的光譜繪圖?
- 21. 使用小刀在食譜中創建一個新配方
- 22. 從Matplotlib光譜圖中刪除填充
- 23. 圖譜數據庫的家譜
- 24. 提取第一個圖像,並從字符串中刪除第一個圖像
- 25. ASP.net MVC 4從一個視圖獲取用戶標識並在另一個視圖中使用它
- 26. 使用pdfbox從PDF中提取圖像
- 27. 使用C從PDF中提取圖像#
- 28. 在另一個視圖中使用一個視圖gsp gsp
- 29. 斷言廚師運行包括從另一個食譜
- 30. 兩個音頻文件的頻譜圖(加在一起)
David PDF是由Microsoft SSRS生成的,只有一個使用的字體,如果需要,我願意手動創建一個cmap文件。 我必須從數千個PDF中提取文本,並且可以手動嘗試將char代碼映射到unicode值。我需要推薦一些可以幫助我實現這一目標的代碼。 –
Microsoft SSRS的字體子集是什麼?你擁有的所有文件是由同一個應用程序生成的?如果在所有情況下使用相同的字體並且使用相同的生成應用程序,我認爲它值得嘗試將現有的ToUnicode CMap簡單地複製到另一個文件中。 –
什麼是製片人?它是iTextSharp嗎? (打開文檔屬性找到答案。)如果我們知道生產者,我們知道期望什麼。例如:如果字體是子集的,那麼您的嘗試將失敗:並非所有文檔都需要相同的字符。 –