2016-11-02 23 views
0

J'ai une spécification de document pour une facture et l'un des éléments affiche le texte verticalement. Donc, comme ceci:Comment est-ce que je peux emballer le texte de sorte qu'il apparaisse dans une seule colonne avec la soucoupe volante?

H 123 Elm St 
O PO Box 1 
M Anytown, ST 
E USA 

J'ai essayé d'utiliser à la fois la transformation css pour faire tourner le texte afin qu'il se lit sur le côté. J'ai également essayé d'utiliser une table avec une largeur de colonne de 1 et ensuite l'adresse dans une colonne différente. Dans un navigateur, il rend correctement. Quand je l'exécute à travers l'ITextRenderer, il n'enveloppe pas les caractères (j'utilise des espaces entre chaque caractère, donc il devrait envelopper). J'ai essayé cela après la transformation et la rotation a produit le même résultat.

J'ai également essayé la mise en page: fixe; réglage CSS, sans chance. Je termine avec ceci:

enter image description here

Répondre

0

La propriété est transform css pas pris en charge par Flyingsaucer.

Mais l'option pour mettre le texte dans une colonne étroite devrait fonctionner.

Voici un exemple:

<html> 
<head> 
    <style> 
     td{border:1px solid blue} 
     .first{width:5mm;} 
    </style> 
</head> 
<body> 
    <table> 
     <tr> 
      <td class="first">H O M E</td> 
      <td> 
       123 Elm StO<br /> 
       PO Box 1<br /> 
       Anytown, ST<br /> 
       USA 
      </td> 
     </tr> 
    </table> 
</body> 
</html> 

Il produit le résultat suivant: PDF result

J'ai utilisé soucoupe volante 9.1, et le code Java est:

import java.io.File; 
import java.io.FileOutputStream; 
import java.io.IOException; 
import java.io.OutputStream; 

import org.xhtmlrenderer.pdf.ITextRenderer; 

import com.lowagie.text.DocumentException; 

public class StackOverflow { 
    public static void main(String[] args) throws IOException, DocumentException { 

     String in = "so1.html"; 
     String out = "so1.pdf"; 

     File f = new File(in); 
     String url = f.toURI().toURL().toString(); 

     createPDF(url, out); 
    } 

    public static void createPDF(String url, String pdf) throws IOException, DocumentException { 
     try (OutputStream os = new FileOutputStream(pdf)) { 
      ITextRenderer renderer = new ITextRenderer(); 
      renderer.setDocument(url); 
      renderer.layout(); 
      renderer.createPDF(os); 
     } 
    } 
} 
+0

Y at-il quelque chose de spécial vous avez à faire dans le code java ou êtes-vous en train de sucer cela en tant que chaîne et sortie en pdf? Je n'ai pas utilisé mm dans mes css, je pense que je viens d'utiliser un numéro (j'ai fini par devoir le mettre en haut plutôt que sur le côté). – Mike

+0

Il n'y a rien de spécifique dans le code java (voir ma réponse mise à jour). En ce qui concerne la colonne avec, j'ai utilisé 'mm', mais vous pouvez utiliser n'importe quelle autre unité (' px', 'pt', ...), assurez-vous simplement que le col est assez grand. – obourgain