Skip to main content

Creating Pdf in multiple Languages in Java


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();
}

}
}

======= PDF Created in Different Locale =======>

Comments

  1. Hi, i used the above code to generate russian text but i get output ??????????????????? .
    i double checkd the font and encoding.
    ANy help will be highly appreciated.

    ReplyDelete
  2. I have tested this code on my machine, it worked for me, can you please send your piece of code at yadavangad100@gmail.com

    ReplyDelete

Post a Comment

Popular posts from this blog

Basic Java Interview Questions

1. Why java does not support multiple inheritance ? Answer :- To say why java doesn't support inheritance directly like c++ should be the diamond problem faced by c++,(Diamond problem is an ambiguity that arises when two classes B and C inherit from A, and class D inherits from both B and C. If a method in D calls a method defined in A (and does not override it), and B and C have overridden this method differently, then via which class does it inherit: B, or C?) 2. JVM crash is an Error or Exception.? Answer:- JVM crash is an Error as a normal developer as we cannot handle it, but its exception for JVM developer as they can fix it. 3. Print “Hello World!” Without Main Method in Java? Answer:- public class Testing {    static    {        System.out.println("Hello World");    }    public static void main(String[] args)    {    } } ...

Collections in Java

Collections in Java Introduction to Collections Framework The Collections Framework provides a well defined set of interfaces and classes for storing and manipulating the groups of data into a single unit. Introduction to Collections Framework Collections Framework: The Collections Framework provides a well-designed set of interfaces and classes for storing and manipulating the groups of data into a single unit. The collections framework is a unified architecture which is used to represent and manipulate collections. The framework allows the collections to get manipulated independently, additionally it reduces the programming efforts and increases performance. It includes implementation of interfaces and algorithms. Basically it is a unified architecture that consists the following collections: Interfaces: These are the abstract data types that represent collections. With the help of interfaces we manipulate collections independently. A hierarchy is generally formed ...