Creating Pdf in multiple Languages in Java
This code demonstrate how to create pdf in multiple languages in java by using ITEXT pdf creator.
To use this sample code download
itext.jar
To display different locale on pdf you need to download font known as Arialuni.ttf and added to the project
Most important thing is the encoding part
set encoding to "Identity-H" (String encoding = "Identity-H";) as well as create font for the same to take effect in pdf create font
(Font fontNormal = FontFactory.getFont(("c:/windows/fonts/arialuni.ttf"), encoding,BaseFont.EMBEDDED, 8, Font.NORMAL);)
You can download the source code from here
import java.io.FileOutputStream;
import com.lowagie.text.Chunk;
import com.lowagie.text.Document;
import com.lowagie.text.Font;
import com.lowagie.text.FontFactory;
import com.lowagie.text.HeaderFooter;
import com.lowagie.text.Paragraph;
import com.lowagie.text.Phrase;
import com.lowagie.text.pdf.BaseFont;
import com.lowagie.text.pdf.PdfPCell;
import com.lowagie.text.pdf.PdfPTable;
import com.lowagie.text.pdf.PdfWriter;
public class PDFGenerating {
public static void main(String arg[]) throws Exception {
try {
System.out.println("===Started=====>");
Document document = new Document();
String encoding = "Identity-H";
Font fontNormal = FontFactory.getFont(("c:/windows/fonts/arialuni.ttf"), encoding,BaseFont.EMBEDDED, 8, Font.NORMAL);
PdfWriter.getInstance(document, new FileOutputStream("C:/DemoSamples/pdf/hello.pdf"));
HeaderFooter header = new HeaderFooter(new Paragraph("Header", fontNormal), false);
HeaderFooter footer = new HeaderFooter(new Paragraph("footer", fontNormal), false);
document.setHeader(header);
document.setFooter(footer);
document.open();
Chunk chunkEnglish = new Chunk("Hello World " + "\n", fontNormal);
Chunk chunkRussian = new Chunk("привет мир " + "\n", fontNormal);
Chunk chunkBrazil = new Chunk("Olá Mundo " + "\n", fontNormal);
Chunk chunkBengali = new Chunk("হ্যালো ফোটোস " + "\n", fontNormal);
Chunk chunkArabic = new Chunk("مرحبا العالم" + "\n", fontNormal);
Chunk chunkChineese = new Chunk("你好 世界" + "\n", fontNormal);
PdfPTable table = new PdfPTable(2);
table.addCell("Locale");
table.addCell("Translated Text");
PdfPCell cellEnglish = new PdfPCell(new Phrase(chunkEnglish));
table.addCell(new PdfPCell(new Phrase(new Chunk("English",fontNormal))));
table.addCell(cellEnglish);
PdfPCell cellRussian = new PdfPCell(new Phrase(chunkRussian));
table.addCell(new PdfPCell(new Phrase(new Chunk("Russian",fontNormal))));
table.addCell(cellRussian);
PdfPCell cellBrazil = new PdfPCell(new Phrase(chunkBrazil));
table.addCell(new PdfPCell(new Phrase(new Chunk("Brazil",fontNormal))));
table.addCell(cellBrazil);
PdfPCell cellBengali = new PdfPCell(new Phrase(chunkBengali));
table.addCell(new PdfPCell(new Phrase(new Chunk("Bengali",fontNormal))));
table.addCell(cellBengali);
PdfPCell cellArabic = new PdfPCell(new Phrase(chunkArabic));
table.addCell(new PdfPCell(new Phrase(new Chunk("Arabic",fontNormal))));
table.addCell(cellArabic);
PdfPCell cellChineese = new PdfPCell(new Phrase(chunkChineese));
table.addCell(new PdfPCell(new Phrase(new Chunk("Chineese",fontNormal))));
table.addCell(cellChineese);
document.add(table);
document.close();
System.out.println("===Finished=====>");
} catch (Exception e) {
System.out.println("=====>" + e.getMessage());
e.printStackTrace();
}
}
}
Hi, i used the above code to generate russian text but i get output ??????????????????? .
ReplyDeletei double checkd the font and encoding.
ANy help will be highly appreciated.
not working
ReplyDeletenot working
ReplyDeleteI have tested this code on my machine, it worked for me, can you please send your piece of code at yadavangad100@gmail.com
ReplyDelete