2015-12-06 1 views
0

Je travaille avec iText en Java pour écrire des fichiers PDF. Je suis en train d'écrire un paragraphe comme titre et le texte tout début après la position dans la même ligne commeHTML vers PDF en utilisant iText, problèmes de formatage

Rubrique: ce para maintenant ...

-tête est en gras et para est en temps normal texte mais je suis incapable de le faire en utilisant iText. J'ai essayé d'utiliser:

fonts[2] = new Font(Font.HELVETICA, 8, Font.BOLD); 
Paragraph paranumber = new Paragraph(
    fonts[2].getCalculatedLeading(1), 
    headingText.trim() 
       + " ", fonts[0]); 

Paragraph para = new Paragraph(
    fonts[0].getCalculatedLeading(1), contentText.trim(), fonts[0]); 
     para.setAlignment(Element.ALIGN_JUSTIFIED); 
     para.setSpacingAfter(3f); 

//Now adding the para to paraNumber that is having the heading and expecting 
//that it will be added very after the heading, but this does not show correct 
//result, formatting issue. 

paranumber.add(para); 
mct.addElement(paranumber); 

J'ai essayé aussi de créer un nouveau paragraphe et a ajouté deux paragraphes (rubrique para et para texte normal) à cette nouvelle, mais qui est aussi bon résultat montrais pas. S'il vous plaît voir ci-dessous morceau pour cela.

Paragraph newPara = new Paragraph(); 
newPara.add(paranumber); 
newPara.add(para); 

mais cela ne montre pas non plus un formatage correct.

Ou si quelqu'un peut ou si quelqu'un peut me conseiller d'utiliser un autre moyen de créer un PDF à partir de HTML qui sera bon aussi, afin que je puisse réécrire le module pour créer le PDF requis. S'il vous plaît donnez votre avis.

+0

Peut-être que vous avez besoin de morceau de police différente dans le même paragraphe? – Jan

Répondre

1

Les paragraphes utilisent généralement des concepts tels que indentation et leading pour les distinguer visuellement. Ce sont des éléments de niveau bloc, pas en ligne. Cela n'a aucun sens d'ajouter un paragraphe dans un autre paragraphe. Le paragraphe ajouté commence généralement sur une nouvelle ligne, en faisant essentiellement un paragraphe distinct de toute façon.

Pour obtenir un paragraphe avec différentes polices, comme votre exemple, vous pouvez utiliser Chunk s dans iText. Un Chunk est fondamentalement un morceau de texte avec une police associée.

Font fontbold = new Font(BaseFont.createFont(BaseFont.HELVETICA_BOLD, 
    BaseFont.WINANSI, BaseFont.NOT_EMBEDDED), 12); 
Font fontregular = new Font(BaseFont.createFont(BaseFont.HELVETICA, 
    BaseFont.WINANSI, BaseFont.NOT_EMBEDDED), 12); 
Chunk header = new Chunk("Heading: ", fontbold); 
Chunk content = new Chunk("this is a para now ...", fontregular); 
Paragraph paragraph = new Paragraph(); 
paragraph.add(header); 
paragraph.add(content); 
document.add(paragraph); 

Le résultat ressemble à ceci:

Paragraph

On ne sait pas à partir de votre question et exemple de code HTML comment est impliqué. Je suppose que vous êtes en quelque sorte en train d'analyser l'entrée HTML et de convertir le contenu analysé en PDF en utilisant iText Element s. C'est une approche valide. Alternativement, vous pouvez regarder dans iText XML Worker, qui fait la conversion XHTML (+ CSS) en PDF.