2016-11-25 14 views
2

Jasperでnoto-sansフォント(https://www.google.com/get/noto/#sans-lgc)用にフォント拡張を作成し、クラスパスに追加しました。私のアプリケーションは、fr、de、ja、ko、zh_CN、zh_TW、es、enをサポートする必要があります。しかし、生成されたpdfはレンダリングされません(ja、ko、zh_CN、zh_TW)。ジャスパーとitextの間で問題を分割しようとしたので、iTextが正しく動作しているかどうかを調べるために以下のプログラムを試してみました。以下はNoto-sansがJasperと連携していない

import java.io.FileOutputStream; 
import java.io.IOException; 
import com.lowagie.text.Document; 
import com.lowagie.text.DocumentException; 
import com.lowagie.text.Font; 
import com.lowagie.text.Paragraph; 
import com.lowagie.text.pdf.BaseFont; 
import com.lowagie.text.pdf.ColumnText; 
import com.lowagie.text.pdf.PdfWriter; 
public class Itext_test { 

/** The resulting PDF file. */ 
public static final String RESULT = "fontTest.pdf"; 
/** the text to render. */ 
public static final String TEST = "사과-korean, 苹果(Chienses-simplified), 蘋果(Chinese-traditional), 林檎(Japanese), Sebastián(Spanish), ADÉLAÏDE-fr(French), James Bond(English)"; 

public void createPdf(String filename) throws IOException, DocumentException { 
    Document document = new Document(); 
    PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(filename)); 
    document.open(); 
    BaseFont bf = BaseFont.createFont(
     "NotoSans-Regular.ttf", BaseFont.IDENTITY_H, BaseFont.EMBEDDED); 
    Font font = new Font(bf, 20); 
    ColumnText column = new ColumnText(writer.getDirectContent()); 
    column.setSimpleColumn(36, 730, 569, 36); 
    column.addElement(new Paragraph(TEST, font)); 
    column.go(); 
    document.close(); 
} 

public static void main(String[] args) throws IOException, DocumentException { 
    new Itext_test().createPdf(RESULT); 
} 
} 

我々はJAを見ることができるようにして、PDFのスクリーンショットenter image description here

で、KO、zh_CNに、のzh_TWの文字はnot being renderedです。 jaspersoft Studioを使用して.jrxmlファイルを作成し、javaコードで入力しています。詳細については、この質問をチェックアウトしてください Unicode characters in Jasper Report 私はどこで何を探すべきかわかりません。
誰かがエラーを指摘したり、正しい方向に私を置くことができれば、私は非常に素晴らしいだろう...

+0

参照:http://developers.itextpdf.com/tutorial/using-fonts-pdf-and-itext –

+0

@DaveJarvis、私は、ガイドの後に文字の代わりにユニコードを入れてみましたが、さまざまなpdfエンコーディングも試みましたがまだ幸運:( – user6385735

答えて

0

主にOracleJREは商用JREなので、NotoフォントはオープンソースのライセンスとOTF形式で配布されているしたがって、Oracle JREはこれらのフォントをサポートしません(他のOTFフォントと同じ長さである限り)。

私が行ったことは、OTFをTTF形式に変換することであり、Oracle JREはそれらを読み込んで使用できます。

ところで、OpenJDKを使用する場合は、OTFフォントを直接使用することができます。

関連する問題