我在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();
});
因此我们可以看到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
我不知道在哪里以及在寻找什么。
如果有人能指出错误或让我朝着正确的方向前进,我会非常感激......
答案 0 :(得分:-1)
这主要是因为OracleJRE是商业JRE,但Noto字体是在开源许可下使用OTF格式分发的,因此Oracle JRE不支持这些字体(只要其他OTF字体)。
我所做的是将OTF转换为TTF格式,Oracle JRE可以读取和使用它们。
顺便说一句,如果你使用OpenJDK,你可以直接使用OTF字体。