Noto-sans没有与Jasper合作

时间:2016-11-25 06:49:38

标签: java internationalization jasper-reports itext

我在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)。然后我尝试在jasper和itext之间拆分问题所以我尝试使用下面的程序来检查iText是否正常工作。

  $('.btn').click(function() {
    $('#modal1').modal();
    var returnedvalue = $('#modalvalue').val();
    $('#Response').text(returnedvalue);
    $('#modal2').modal();
 });

以下是out pdf screenshot enter image description here

因此我们可以看到ja,ko,zh_CN,zh_TW字符为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); } } 。 我正在使用jaspersoft Studio创建.jrxml文件并通过java代码填充它。有关详细信息,请查看此问题 Unicode characters in Jasper Report 我不知道在哪里以及在寻找什么。
如果有人能指出错误或让我朝着正确的方向前进,我会非常感激......

1 个答案:

答案 0 :(得分:-1)

这主要是因为OracleJRE是商业JRE,但Noto字体是在开源许可下使用OTF格式分发的,因此Oracle JRE不支持这些字体(只要其他OTF字体)。

我所做的是将OTF转换为TTF格式,Oracle JRE可以读取和使用它们。

顺便说一句,如果你使用OpenJDK,你可以直接使用OTF字体。