2014-07-10 5 views
4

Salut
Je sais que beaucoup de gens peuvent avoir posé cette question avant. J'ai lu la plupart d'entre eux, mais cela ne m'a pas aidé à résoudre mon problème.
J'utilise la bibliothèque iText Java pour générer un PDF persan. J'utilise le code suivant:générer PDF Persan avec iText

Document document = new Document(PageSize.A4,50,50,50,50); 
FileOutputStream fos = new FileOutputStream("D:\\ITextTest.pdf"); 
PdfWriter writer = PdfWriter.getInstance(document,fos); 
document.open(); 
BaseFont bf = BaseFont.createFont("C:\\Windows\\Fonts\\XB YagutBd.ttf", BaseFont.IDENTITY_H, BaseFont.EMBEDDED); 
Font a = new Font(bf,10); 
Paragraph p1 = new Paragraph("سلام دوست من"); 
p1.setFont(a); 
document.add(p1); 
document.close(); 

Mais quand j'exécute le code, rien n'a été écrit dans le fichier PDF et il est vide. Notez que "XB YagutBd.ttf" est une police perse Unicode et "p1" contient des caractères persans.

Que dois-je faire? Je suis coincé dans ce problème ... aidez-moi s'il vous plaît.

+0

Essayez de définir la police à la création du paragraphe au lieu de plus tard: 'Paragraphe p1 = nouveau Paragraphe (" سلام دوست من ", a);' –

+0

Cher @ChrisHaas cela a fonctionné pour moi! Je peux voir les caractères maintenant. Mais j'ai un autre problème maintenant ... Les caractères sont affichés séparés et non "connecté" comme il se doit en orthographe perse :( – rthenamvar

Répondre

2

Seuls certains des éléments iText supportent RTL, comme PdfPCell, PdfPTable, ColumnText. Seuls ces éléments possèdent la propriété RunDirection qui peut être définie sur PdfWriter.RUN_DIRECTION_RTL. (more info in Persian)

+0

cher Vahid, j'ai jeté un oeil à votre site "dotnettips" et c'était génial! J'utilise Java iText mais vos conseils étaient sur C# Mais j'ai essayé de les implémenter en Java Pouvez-vous s'il vous plaît envoyez-moi un email et avoir une conversation à ce sujet? [email protected] – rthenamvar

+0

Ports Java et C# d'iText/iTextSharp est très similaire.En version Java vous avez 'p1.setFont (a)', en version C# vous aurez 'p1.Font = a' et ainsi de suite – VahidN

+0

Cher Vahid, oui, ils sont vraiment similaires! Et maintenant ça marche Juste une autre question: Le texte est aligné à gauche bien que j'ai fait tout ce que vous avez dit dans votre tutoriel à "dotnettips" Ne savez-vous pas comment je peux le prendre sur le côté droit de la page e ?! – rthenamvar