0
我想將PDF轉換爲PDFA-2B。而1 of my test files包含Type1字體沒有字體描述:如何嵌入沒有字體描述符的字體?
我需要嵌入這些字體。
我該如何嵌入這些字體?
我試圖創建一個字體描述符,但我沒有成功。
private static PdfDictionary addFontDesc(PdfDictionary font){
PdfDictionary fontDescriptor;
fontDescriptor = new PdfDictionary(PdfName.FONTDESCRIPTOR);
PRIndirectReference fd = fontDescriptor.getIndRef();
if (fd != null){
font.put(PdfName.FONTDESCRIPTOR, fd);
System.out.println("fontDescriptor was added to font " + font.getAsName(PdfName.BASEFONT).toString());
}else {
System.out.println("Error while trying to add fontDescriptor to " + font.getAsName(PdfName.BASEFONT).toString());
}
return font;
}
我總是得到一個NullPointerException
。
正如解釋@mkl在他的評論[iTextSharp嵌入子集字體在現有的PDF](http://stackoverflow.com/questions/3974 7620/itextsharp-embed-subset-fonts-in-existing-pdf),你正在問一些Stack Overflow帖子中無法回答的問題。你需要聘請專家來實現你想要的。我投票結束這個問題,因爲**太寬泛**。您需要提供字體程序,您需要檢查內容流,選擇正確的編碼等等。向我們展示您的開發過程中的進展,我們可以提供幫助。問我們「爲我做這件事」,我們會結束你的問題。 –
基本字體不需要嵌入,PDF查看器應該提供它們或其適當的替代品。 參見PDF規範標準Type 1字體(標準14字體)的第9.6.2.2節。類型1字體,被稱爲標準14字體,如下所示:Times-Roman,Helvetica,Courier,Symbol,Times-Bold,Helvetica-Bold,Courier-Bold,ZapfDingbats,Times-Italic,Helvetica-Oblique,Courier -Oblique,Times-BoldItalic,Helvetica-BoldOblique,Courier-BoldOblique 這些字體或其字體指標和合適的替代字體應可用於符合標準的讀者。 – joelgeraci
@JoelGeraci就PDF標準而言,不需要嵌入標準的14種字體。事實上,就標準而言,不需要嵌入任何字體(Type 3字體是特殊的,因爲沒有*嵌入*的字體程序)。但是OP要生成PDF/A文件,這裏的規則是:「用於在符合文件中渲染的所有字體的字體程序應該嵌入該文件的 內。」 – mkl