[JAVA] Créer un PDF avec la mise en page itext7-Free: Texte-

Organisons le texte librement

Dans la sortie jusqu'à la dernière fois, il n'était exporté que depuis le coin supérieur gauche comme Word. Dans PDF, vous pouvez spécifier la position de sortie et la sortie.

Coder immédiatement

FreePosString.java


import com.itextpdf.kernel.colors.ColorConstants;
import com.itextpdf.kernel.font.PdfFont;
import com.itextpdf.kernel.font.PdfFontFactory;
import com.itextpdf.kernel.geom.PageSize;
import com.itextpdf.kernel.geom.Rectangle;
import com.itextpdf.kernel.pdf.PdfDocument;
import com.itextpdf.kernel.pdf.PdfPage;
import com.itextpdf.kernel.pdf.PdfWriter;
import com.itextpdf.kernel.pdf.canvas.PdfCanvas;
import com.itextpdf.layout.ColumnDocumentRenderer;
import com.itextpdf.layout.Document;
import com.itextpdf.layout.borders.Border;
import com.itextpdf.layout.borders.SolidBorder;
import com.itextpdf.layout.element.Paragraph;

public class FreePosString {
    public static void main(String[] args) throws Exception {
        PdfDocument pdf = new PdfDocument(new PdfWriter("FreePosString.pdf"));
        PageSize ps = PageSize.A4.rotate();
        PdfPage page = pdf.addNewPage(ps);
        PdfCanvas canvas = new PdfCanvas(page);

        
        //Heisei Kaku Gothic
        PdfFont font = PdfFontFactory.createFont("HeiseiKakuGo-W5", "UniJIS-UCS2-H");
 

        // Initialize document
        Document document = new Document(pdf);

        // (100, 200)À la largeur:50, height:Spécifiez 100
        Rectangle[] columns = {
                new Rectangle(100, 200, 50, 100)
        };
        document.setRenderer(new ColumnDocumentRenderer(document, columns));

        //Cadre rouge-Largeur de ligne 0.Exporter des caractères avec 5f
        Border border = new SolidBorder(ColorConstants.RED, 0.5f);
        Paragraph p1 = new Paragraph("Aiue, Kakikukeko abcdefgh-ijklmn,opqrstuvwxyz")
                .setFont(font)
                .setFontSize(12)
                .setBorder(border)
                ;
        document.add(p1);
        
        // (100, 200)Ligne vers. largeur:50, height:Vérifiez la plage de 100
        canvas.moveTo(0, 0).lineTo(100, 200).lineTo(150, 200).lineTo(150, 300).lineTo(100, 300).stroke();

        //Close document
        document.close();
    }
}

La description

document.setRenderer(new ColumnDocumentRenderer(document, columns)); Ensuite, spécifiez plusieurs rectangles dans les colonnes. Par souci de simplicité cette fois, ne spécifiez qu'une seule position (100,200), largeur: 50 et hauteur: 100. De plus, pour faciliter la compréhension de l'emplacement, essayez de dessiner une ligne dans la plage spécifiée à l'aide de moveTo ou lineTo.

Image de sortie FreePosString.jpg

(0, 0) est le coin inférieur gauche.

Apparemment (0, 0) se trouve en bas à gauche dans son texte.

L'exportation est la position spécifiée + la hauteur spécifiée.

En outre, il semble qu'il sera écrit de la position spécifiée (100, 200) à la position de hauteur 100 spécifiée.

Le paragraphe est-il désactivé?

De plus, Paragraph semble être légèrement déplacé. Il semble que vous puissiez mieux spécifier cette zone en utilisant Table.

L'excédent est sorti à la même position sur la page suivante.

Les caractères qui ne rentrent pas dans le cadre spécifié ont été affichés à la même position sur les pages suivantes. J'aimerais également trouver un moyen de déterminer si cela ne vous gêne pas.

L'interdiction de traitement concerne-t-elle uniquement les caractères alphanumériques demi-largeur?

De plus, j'ai ajusté la chaîne de caractères pour que ",", "-" et "," soient au début et à la fin de la ligne, mais il semble que seuls les caractères alphanumériques demi-largeur soient interdits. Ce paramètre était possible dans la version précédente, mais est-il possible dans ce texte7? Je voudrais étudier ce domaine à l’avenir.

Recommended Posts

Créer un PDF avec la mise en page itext7-Free: Texte-
Créez un PDF avec la mise en page itext7-Free:
Créez un PDF avec itext7 ~ HelloWorld ~
Extraction de texte en Java à partir de PDF avec pdfbox-2.0.8
Essayez de créer avec Trailblazer
Créer une API XML-RPC avec Wicket
Pagination de PDF avec Java + PDFBox.jar
Créez un terrain de jeu avec Xcode 12
Créer un micro service avec Spring Boot