Comment puis-je créer des paragraphes de largeur fixe avec PDFbox?
Je peux insérer du texte simple comme ceci:
document = new PDDocument();
page = new PDPage(PDPage.PAGE_SIZE_A4);
document.addPage(page);
PDPageContentStream content = new PDPageContentStream(document, page);
content.beginText();
content.moveTextPositionByAmount (10 , 10);
content.drawString ("test text");
content.endText();
content.close();
mais comment puis-je créer un paragraphe similaire à HTML à l'aide de l'attribut width?
<p style="width:200px;">test text</p>
source d'informationauteur Qpi
Vous devez vous connecter pour publier un commentaire.
Selon cette réponse il n'est pas possible d'insérer des sauts de ligne dans le texte et PDF afficher correctement (en utilisant PDFBox ou autre chose), je crois donc que l'auto-habillage du texte pour l'adapter dans une certaine largeur peut aussi être quelque chose qu'il ne peut pas le faire automatiquement. (d'ailleurs, il existe de nombreuses façons de les envelopper d'un texte - mots entiers, coupez-les en petites parties, etc)
Cette réponse à une autre question (à propos de centrage d'une chaîne) donne quelques conseils sur la façon de le faire vous-même. En supposant que vous avez écrit une fonction
possibleWrapPoints(String):int[]
à la liste de tous les points dans le texte un mot wrap peut arriver (à l'exclusion de "zéro", y compris "la longueur du texte"), une solution possible pourrait être:Un exemple de
possibleWrapPoints
qui permettent d'emballage à tout point qui ne fait pas partie d'un mot (référence), pourrait être:Mise à jour: quelques informations supplémentaires:
Le format de fichier PDF a été conçu pour ressembler le même dans les différentes situations, des fonctionnalités telles que l'on vous a demandé de sens dans un éditeur de PDF/créateur, mais pas dans le fichier PDF soi. Pour cette raison, la plupart des "bas niveau" outils ont tendance à se concentrer sur la façon de traiter avec le format de fichier lui-même et de laisser à l'écart des trucs comme ça.
Niveau plus élevé des outils de otoh, que ont généralement des moyens pour faire cette conversion. Un exemple est Platypus (pour Python, tout de même), que ne ont des moyens faciles de créer des paragraphes, et s'appuie sur le niveau inférieur ReportLab fonctions pour faire le rendu PDF. Je suis pas d'outils similaires pour PDFBox, mais ce post donne quelques conseils sur la façon de convertir du contenu HTML à PDF dans un environnement Java, en utilisant librement les outils disponibles. N'ai pas essayé moi-même, mais je poste ici, car il peut être utile (dans le cas de mon fabriqués à la main tentative ci-dessus n'est pas assez).
J'ai travaillé en combinant Lukas réponse avec mgibsonbr et arrivé à cela. Plus utile pour les personnes à la recherche d'un out-of-the-box solution, je pense.