import java.io.*;

import com.lowagie.text.*;
import com.lowagie.text.pdf.*;
import java.awt.GraphicsEnvironment;

public class PolishG2 {
    
    public static void main(String[] args) {
        try {
//            GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
//            java.awt.Font fonts[] = ge.getAllFonts();
//            for (int k = 0; k < fonts.length; ++k)
//                System.out.println(fonts[k].getFontName() + " * " + fonts[k].toString());
            Document document = new Document(PageSize.A4, 50, 50, 50, 50);
            PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream("c:\\polishtext.pdf"));
            /// step 3/
            document.open();

            DefaultFontMapper mapper = new DefaultFontMapper();
            ///read all the fonts in the directory/
            mapper.insertDirectory("c:\\windows\\fonts");
            ///change the encoding of font "MS PGothic"/
            DefaultFontMapper.BaseFontParameters pp = mapper.getBaseFontParameters("Luxi Sans Regular");
            if (pp != null)
                pp.encoding = BaseFont.IDENTITY_H;
            String text1 = "Some polish characters ???? \u0104\u0107\u0119\u1042\u0144\u00F3\u015B\u017A\u017C";
            java.awt.Font font = new java.awt.Font("Luxi Sans Regular", java.awt.Font.PLAIN, 23);
            PdfContentByte cb = writer.getDirectContent();
            java.awt.Graphics2D g2 = cb.createGraphics(PageSize.A4.width(), PageSize.A4.height(), mapper);

            g2.setFont(font);
            g2.drawString(text1, 50, 100);
            g2.drawString(text1, 50, 120);
            g2.drawString(text1, 50, 140);
            g2.drawString(text1, 50, 160);
            g2.drawString(text1, 50, 180);
            g2.dispose();
            /// step 5/
            document.close();
            
        }
        catch (Exception e) {
            e.printStackTrace();
        }
    }
}
