簡體   English   中英

將PDFBoxs PDFont轉換為java.awt.Font

[英]Convert PDFBoxs PDFont into java.awt.Font

我必須閱讀PDF文件並從中提取一些信息。 因此,我正在使用PDFBox。 現在我有一個問題,我想通過在JPanel上繪制結果來顯示結果。 但是要做到這一點,我需要基礎字符串的字體信息。

我現在的問題是,我找不到將PDFont轉換為java.awt.Font好方法。 我想通過使用PDFont的字符串表示形式創建一些映射,並從中提取相關信息,例如

Arial -> new Font("Arial", Font.PLAIN, size);
Arial,Bold -> new Font("Arial", Font.BOLD, size);
//and so on

但這不起作用,因為每種字體的字符串表示形式都不同,例如

Times-Roman -> new Font("Times-Roman", Font.PLAIN, size);
Times-Bold -> new Font("Times-Roman", Font.BOLD, size);

有更好的方法進行轉換嗎?

這是不可能的。

引用此答案

請注意,大多數PDF嵌入了字體后,都不會包含完整的完整字體。 通常,它們僅包括文檔中使用的字形的子集。

確實, org.apache.pdfbox.pdfviewer.PageDrawer使用它們自己的org.apache.pdfbox.rendering.Glyph2D類,通過創建java.awt.geom.GeneralPath類來充當PDFBoxjava awt之間的橋梁。對java.awt.Shape的轉換,該轉換可以由java.awt.Graphics2D繪制。

在此過程中未使用java.awt.Font ,尋找它是沒有用的。

雖然,如果您對PDF文件很“幸運”並且實際上里面嵌入了整個字體,那么您可以獲取所有PDFont類並閱讀PDFont -> FontDescriptor -> FontFile2並將其流輸出到擴展名為.ttf的文件中。 (一旦擁有.ttf流,您.ttf擁有java.awt.Font類。)


這是我在看到這個遺棄的問題幾小時后收集的,希望它能對某人有所幫助。

暫無
暫無

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

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