[JAVA] Erstellen Sie PDF mit itext7-freiem Layout: Text-

Lassen Sie uns den Text frei anordnen

In der Ausgabe bis zum letzten Mal wurde es wie Word nur von links oben exportiert. In PDF können Sie die Ausgabeposition und die Ausgabe angeben.

Code sofort

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)Zu breit:50, height:Geben Sie 100 an
        Rectangle[] columns = {
                new Rectangle(100, 200, 50, 100)
        };
        document.setRenderer(new ColumnDocumentRenderer(document, columns));

        //Roter Rahmen-Linienbreite 0.Exportieren Sie Zeichen mit 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)Linie zu. Breite:50, height:Überprüfen Sie den Bereich von 100
        canvas.moveTo(0, 0).lineTo(100, 200).lineTo(150, 200).lineTo(150, 300).lineTo(100, 300).stroke();

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

Erläuterung

document.setRenderer(new ColumnDocumentRenderer(document, columns)); Geben Sie dann mehrere Rechtecke in Spalten an. Geben Sie diesmal der Einfachheit halber nur eine Position (100.200) an, Breite: 50 und Höhe: 100. Versuchen Sie außerdem, eine Linie im angegebenen Bereich mit moveTo und lineTo zu zeichnen, um die Position besser verständlich zu machen.

Ausgabebild FreePosString.jpg

(0, 0) ist unten links.

Anscheinend steht (0, 0) unten links im Text.

Der Export ist die angegebene Position + angegebene Höhe.

Es scheint auch, dass es von der angegebenen Position (100, 200) auf die angegebene Position der Höhe 100 geschrieben wird.

Ist Paragraph aus?

Darüber hinaus scheint Paragraph leicht aus der Position zu geraten. Es scheint, dass Sie diesen Bereich mithilfe von Tabelle besser angeben können.

Der Überschuss wird an derselben Position auf der nächsten Seite ausgegeben.

Zeichen, die nicht in den angegebenen Rahmen passten, wurden auf den folgenden Seiten an derselben Position ausgegeben. Ich würde auch gerne einen Weg finden, um festzustellen, ob es nicht im Weg ist.

Wird das Verbot nur für alphanumerische Zeichen mit halber Breite verarbeitet?

Außerdem habe ich die Zeichenfolge so angepasst, dass am Anfang und am Ende der Zeile ",", "-" und "," hinzugefügt werden. Es scheint jedoch, dass nur alphanumerische Zeichen mit halber Breite verboten sind. Diese Einstellung war in der vorherigen Version möglich, aber ist es in text7 möglich? Ich möchte diesen Bereich in Zukunft untersuchen.

Recommended Posts

Erstellen Sie PDF mit itext7-freiem Layout: Text-
Erstellen Sie PDF mit itext7-freiem Layout: Tabelle-
Erstellen Sie PDF mit itext7 ~ HelloWorld ~
Textextraktion in Java aus PDF mit pdfbox-2.0.8
Versuchen Sie es mit Trailblazer
Erstellen Sie eine XML-RPC-API mit Wicket
Paging PDF mit Java + PDFBox.jar
Erstellen Sie einen Spielplatz mit Xcode 12
Erstellen Sie mit Spring Boot einen Mikrodienst