The first example won't work because the built in fonts don't have any
Cyrillic characters. The second example is the correct way to do it but
you should also embedd the font if you want the PDF to work everywhere.
About the path to the font it's a programming/configuration problem that
you have to solve and that has nothing to do with iText. Note that you
can also put fonts inside jars. 

Paulo

> -----Original Message-----
> From: [EMAIL PROTECTED] 
> [mailto:[EMAIL PROTECTED] On 
> Behalf Of Daniel
> Sent: Friday, September 21, 2007 12:12 PM
> To: itext-questions@lists.sourceforge.net
> Subject: [iText-questions] Font problems
> 
> Hello all,
> I am using iText (currently using version 1.3 but I have tried 2.0.4
> and it did not solve the problem) to generate pdfs from my program.
> Now my user base want to be able to generate pdfs in Russian with the
> Cyrillic alphabet. The problem I have is that when I set the encoding
> to "Cp1251" iText seems to "stack" the characters on top of 
> each other,
> making it of course not readable. In other words it seems to render
> the characters in one place. A sentence about one page in width ends
> up being about one third of a page in length.
> 
> I'll paste some code, complete code at the end of the post
> 
> String russiantext; //a string literal with unicode escapes for the
> russian chars.
> //example one, does not work
>   Paragraph header = new Paragraph(
>            russiantext,
>              FontFactory.getFont(FontFactory.TIMES,"Cp1251" ,20,
>                                  com.lowagie.text.Font.BOLD,
> ,Color.BLACK));
> 
> 
>          header.setAlignment(Element.ALIGN_CENTER);
>          doc.add(header);
> 
> 
> //example two works.
>          BaseFont bsfnt =
> BaseFont.createFont("c:\\WINNT\\fonts\\times.ttf","Cp1251",false);
>          com.lowagie.text.Font fnt= new
> com.lowagie.text.Font(bsfnt,20,com.lowagie.text.Font.BOLD,Colo
> r.BLACK);
> 
>          Paragraph header2 = new Paragraph(
>             russiantext, fnt);
>          header.setAlignment(Element.ALIGN_CENTER);
>          doc.add(header2);
> 
> 
> 
> The first exmaple stacks the characters on top of each other. The
> second one works. but as you can see it uses an absolute path to the
> font, and therefore it will work on my machine, but not on other
> machines with just a slightly different setup. Any suggestions on how
> to solve this would be excellent! I am at loss, I have tried google,
> but either there is no solution, or I am not using good keywords, so
> if you google and find a good page, please either link the page or
> give me the keywords!
> 
> thanks in advance
> regards
> Daniel
> 
> Compilable code that highlights the problem:
> 
> import com.lowagie.text.*;
> import com.lowagie.text.Document;
> import com.lowagie.text.Element;
> import com.lowagie.text.pdf.*;
> import java.io.*;
> import java.awt.*;
> public class TestRussian{
>       
>       public static void main(String[] args){
>               main();
>       }
>       
>       public static void main() {
>         try{
>               String russiantext="\u041D\u0435
> \u043F\u043E\u043A\u0430\u0437\u044B\u0432\u0430\u0442\u044C
> \u044D\u0442\u043E
> \u0441\u043E\u043E\u0431\u0449\u0435\u043D\u0438\u0435
> \u0441\u043D\u043E\u0432\u0430";
> 
>               Document doc = new Document();
>          PdfWriter writer = PdfWriter.getInstance(doc,new
> FileOutputStream("test.pdf"));
>          doc.open();
> 
>               //example one, does not work
>               Paragraph header = new Paragraph(
>            russiantext,FontFactory.getFont(FontFactory.TIMES,"Cp1251"
> ,20,
>            com.lowagie.text.Font.BOLD, new Color(0, 0, 0)));
> 
> 
>          header.setAlignment(Element.ALIGN_CENTER);
>          doc.add(header);
> 
> 
>               //example two works.
>          BaseFont bsfnt =
> BaseFont.createFont("c:\\WINNT\\fonts\\times.ttf","Cp1251",false);
>          com.lowagie.text.Font fnt= new
> com.lowagie.text.Font(bsfnt,20,com.lowagie.text.Font.BOLD,Colo
> r.BLACK);
> 
>          Paragraph header2 = new Paragraph(
>             russiantext, fnt);
> 
>          header.setAlignment(Element.ALIGN_CENTER);
>               doc.add(header2);
> 
>               doc.close();
>        }catch(Exception e){
>               e.printStackTrace();
>         }
>       }       
> }


Aviso Legal:
Esta mensagem é destinada exclusivamente ao destinatário. Pode conter 
informação confidencial ou legalmente protegida. A incorrecta transmissão desta 
mensagem não significa a perca de confidencialidade. Se esta mensagem for 
recebida por engano, por favor envie-a de volta para o remetente e apague-a do 
seu sistema de imediato. É proibido a qualquer pessoa que não o destinatário de 
usar, revelar ou distribuir qualquer parte desta mensagem. 

Disclaimer:
This message is destined exclusively to the intended receiver. It may contain 
confidential or legally protected information. The incorrect transmission of 
this message does not mean the loss of its confidentiality. If this message is 
received by mistake, please send it back to the sender and delete it from your 
system immediately. It is forbidden to any person who is not the intended 
receiver to use, distribute or copy any part of this message.


-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2005.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
iText-questions mailing list
iText-questions@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/itext-questions
Buy the iText book: http://itext.ugent.be/itext-in-action/

Reply via email to