Ich habe ein PDF mit Java erstellt.

Einführung

Die Formularausgabe wurde in jedem System gesehen, aber in letzter Zeit ist sie papierlos geworden, sodass ich der Meinung bin, dass die Anzahl der Papierausgaben selbst abnimmt. Formähnliche Geschäftspraktiken sind jedoch weiterhin erforderlich. Lassen Sie uns einfach PDF-Daten erstellen.

Bibliothek

pdfbox-2.0.8

Hier herunterladen. Offiziell

Versuchen Sie zunächst, eine Datei zu erstellen

package pdf;

import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDPage;

public class PdfTest {

    public static void main(String args[]) {
	    try {
	    	
	        //Dokumentobjekt erstellen
	        PDDocument document = new PDDocument();

	        //Seitenobjekt erstellen
	        PDPage page = new PDPage();
	        document.addPage(page);

	        //Speichern Sie das Dokument
	        document.save("test.pdf");
	        document.close();
	    }
	    catch (Exception e) {
	        e.printStackTrace();
	    }
	}
}

Ausführungsergebnis

image.png

image.png

Sie haben jetzt eine einseitige Datei.

Zeichen ausgeben

Als nächstes folgt die Ausgabe von Zeichen.

package pdf;

import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDPage;
import org.apache.pdfbox.pdmodel.PDPageContentStream;
import org.apache.pdfbox.pdmodel.font.PDFont;
import org.apache.pdfbox.pdmodel.font.PDType1Font;

public class PdfTest {

    public static void main(String args[]) {
	    try {
	    	
	        //Dokumentobjekt erstellen
	        PDDocument document = new PDDocument();

	        //Seitenobjekt erstellen
	        PDPage page = new PDPage();
	        document.addPage(page);

	        //Zeichenausgabeverarbeitung
	        PDPageContentStream contentStream = new PDPageContentStream(document, page);
	        contentStream.beginText();
	        //Schriftartspezifikation
	        PDFont font = PDType1Font.TIMES_ITALIC;
	        contentStream.setFont(font, 12);
	        //Ausgabepositionsspezifikation
	        contentStream.newLineAtOffset(0f, 0f);
	        //Ausgabezeichenfolge
	        contentStream.showText( "HelloWorld" );
	        contentStream.endText();
	        contentStream.close();
	        
	        //Speichern Sie das Dokument
	        document.save("test2.pdf");
	        document.close();
	    }
	    catch (Exception e) {
	        e.printStackTrace();
	    }
	}
}

Ausführungsergebnis

image.png

image.png

Da die Ausgabeposition contentStream.newLineAtOffset (0f, 0f) ist, wird sie unten links ausgegeben. Es gibt verschiedene Arten von Ausgabe-Schriftarten.

Japanisch ausgeben

package pdf;

import java.io.File;

import org.apache.fontbox.ttf.TrueTypeCollection;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDPage;
import org.apache.pdfbox.pdmodel.PDPageContentStream;
import org.apache.pdfbox.pdmodel.font.PDFont;
import org.apache.pdfbox.pdmodel.font.PDType0Font;

public class PdfTest {

    public static void main(String args[]) {
	    try {
	    	
	        //Dokumentobjekt erstellen
	        PDDocument document = new PDDocument();

	        //Seitenobjekt erstellen
	        PDPage page = new PDPage();
	        document.addPage(page);

	        //Zeichenausgabeverarbeitung
	        PDPageContentStream contentStream = new PDPageContentStream(document, page);
	        contentStream.beginText();
	        //Schriftartspezifikation
	        File file = new File("C:/Windows/Fonts/msmincho.ttc");
	        TrueTypeCollection collection = new TrueTypeCollection(file);
	        PDFont font = PDType0Font.load(document, collection.getFontByName("MS-Mincho"), true);

	        contentStream.setFont(font, 12);
	        //Ausgabepositionsspezifikation
	        contentStream.newLineAtOffset(0f, 755f);
	        //Ausgabezeichenfolge
	        contentStream.showText( "Hallo Welt" );
	        contentStream.endText();
	        contentStream.close();
	        
	        //Speichern Sie das Dokument
	        document.save("test3.pdf");
	        document.close();
	    }
	    catch (Exception e) {
	        e.printStackTrace();
	    }
	}
}

Ausführungsergebnis

image.png

image.png

Schriftdateien werden zwischen .ttf und .ttc etwas anders behandelt. Diesmal benutze ich .ttc.

Behalten Sie nur PDF-Daten bei, ohne eine Datei zu erstellen

Abhängig vom Geschäftsfall kann es erforderlich sein, dass Sie nur die Daten speichern möchten, ohne die eigentliche Datei zu erstellen. Dies kann problemlos erreicht werden.

package pdf;

import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.InputStream;
import java.io.InputStreamReader;

import org.apache.fontbox.ttf.TrueTypeCollection;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDPage;
import org.apache.pdfbox.pdmodel.PDPageContentStream;
import org.apache.pdfbox.pdmodel.common.PDStream;
import org.apache.pdfbox.pdmodel.font.PDFont;
import org.apache.pdfbox.pdmodel.font.PDType0Font;

public class PdfTest {

    public static void main(String args[]) {
	    try {
	    	
	        //Dokumentobjekt erstellen
	        PDDocument document = new PDDocument();

	        //Seitenobjekt erstellen
	        PDPage page = new PDPage();
	        document.addPage(page);

	        //Zeichenausgabeverarbeitung
	        PDPageContentStream contentStream = new PDPageContentStream(document, page);
	        contentStream.beginText();
	        //Schriftartspezifikation
	        File file = new File("C:/Windows/Fonts/msmincho.ttc");
	        TrueTypeCollection collection = new TrueTypeCollection(file);
	        PDFont font = PDType0Font.load(document, collection.getFontByName("MS-Mincho"), true);

	        contentStream.setFont(font, 12);
	        //Ausgabepositionsspezifikation
	        contentStream.newLineAtOffset(0f, 755f);
	        //Ausgabezeichenfolge
	        contentStream.showText( "Hallo Welt. Speichern Sie nur Daten." );
	        contentStream.endText();
	        contentStream.close();

	        //Dokumentdaten speichern
	        ByteArrayOutputStream out = new ByteArrayOutputStream();
	        document.save(out);
	        document.close();
	        
	        InputStream streamData =new ByteArrayInputStream(out.toByteArray());
	        
	        System.out.println("Bestätigung------------");
	        System.out.println("streamData" + streamData);
	    }
	    catch (Exception e) {
	        e.printStackTrace();
	    }
	}
}

Sie können es so wie es ist in einer Spalte vom Typ Blob speichern.

Extrahieren Sie die Zeichenfolge aus dem erstellten PDF.

package pdf;

import java.io.File;
import java.io.StringWriter;

import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.text.PDFTextStripper;

public class GetPdfText {

    public static void main(String args[]) {
	    try {
			
	    	String pdfFile = "test3.pdf";
	    	PDDocument document = PDDocument.load(new File(pdfFile));
	    	StringWriter output = new StringWriter();
	        PDFTextStripper stripper = new PDFTextStripper();
	    	stripper.setStartPage(1);
	    	stripper.setEndPage(1);
	    	stripper.setSortByPosition(false);
	    	stripper.setShouldSeparateByBeads(true);
	    	stripper.writeText(document, output);
	    	String content = output.toString();
	    	System.out.println("---------Ausgangsstart-------------");
	    	System.out.println(content);

		} catch (Exception e) {
			e.printStackTrace();
		}
    }
}

Ausführungsergebnis

--------- Ausgabe starten -------------- Hallo Welt

Es gibt verschiedene andere Funktionen wie Bildeinbettung und Rahmen, daher werde ich die Gelegenheit nutzen, sie hinzuzufügen.

Recommended Posts

Ich habe ein PDF mit Java erstellt.
Ich habe ein Programm zur Beurteilung von Primzahlen in Java erstellt
Lesen Sie eine Zeichenfolge in einer PDF-Datei mit Java
Ich wollte (a == 1 && a == 2 && a == 3) in Java wahr machen
Ich habe ein Programm zur Beurteilung von Primzahlen in Java geschrieben
Ich habe ein Janken-Spiel in Java (CLI) gemacht.
Ich habe ein Primfaktorisierungsprogramm in Java geschrieben
Ich habe ein Roulette in Java gemacht.
Suchen Sie eine Teilmenge in Java
Ich habe versucht, Metaprogrammierung mit Java
Ich habe ein einfaches Berechnungsproblemspiel in Java gemacht
Ich habe versucht, eine Clova-Fähigkeit in Java zu erstellen
Ich habe versucht, eine Anmeldefunktion mit Java zu erstellen
Ich habe versucht, mit OCR eine PDF-Datei mit Java zu verarbeiten
Was ich beim Erstellen eines Servers in Java gelernt habe
Ich habe eine E-Mail in Java gesendet
3 Implementieren Sie einen einfachen Interpreter in Java
Ich habe eine shopify App @java erstellt
[Anfänger] Ich habe ein Programm zum Verkauf von Kuchen in Java erstellt
Ich wollte nur eine reaktive Eigenschaft in Java erstellen
Ich habe Gordobachs Theorem in Java geschrieben
Ein einfaches Beispiel für Rückrufe in Java
Selbst in Java möchte ich true mit == 1 && a == 2 && a == 3 ausgeben
Ich habe versucht, in Java von einer Zeichenfolge in einen LocalDate-Typ zu konvertieren
Ich habe eine Anmerkung in Java gemacht.
Ich habe versucht, JWT in Java zu verwenden
Bleiben Sie in einem Java Primer stecken
Ich habe einen RESAS-API-Client in Java erstellt
Ich habe versucht, eine PDF-Datei mit Java part2 zu verarbeiten
Java zeichnet Formen in PDF-Dokumenten
Ich kann in IntelliJ keine Java-Klasse mit einem bestimmten Namen erstellen
[Anmerkung] Was ich in einem halben Jahr von unerfahrenen (Java) gelernt habe
[Anmerkung] Was ich in einem halben Jahr von unerfahrenen (Java) gelernt habe (1)
So bedienen Sie automatisch einen in Java unter Windows erstellten Bildschirm
Ich habe eine Sterling-Sorte geschrieben, die sich wie in Java anfühlt
[Anmerkung] Was ich in einem halben Jahr von unerfahrenen (Java) gelernt habe (3)
Informationen zum Zurückgeben einer Referenz in einem Java Getter
Was ist eine Klasse in der Java-Sprache (3 /?)
Ich habe versucht, die Elasticsearch-API in Java zu verwenden
Ich habe ein Kalenderproblem mit Ruby versucht
Bei der Suche nach mehreren in einem Java-Array
[Erstellen] Ein Memorandum über das Codieren in Java
Ich habe das neue Yuan-Problem in Java ausprobiert
Java erstellt eine Tabelle in einem Word-Dokument
Java erstellt ein Kreisdiagramm in Excel
Was ist eine Klasse in der Java-Sprache (1 /?)
Was ist eine Klasse in der Java-Sprache (2 /?)
Erstellen Sie eine TODO-App in Java 7 Create Header
Lassen Sie uns eine Taschenrechner-App mit Java erstellen
Ich habe die OpenCV-Kamerakalibrierung in Java durchgeführt
Implementieren Sie so etwas wie einen Stack in Java
Teilen Sie eine Zeichenfolge in Java mit ". (Dot)"
Erstellen einer Matrixklasse in Java Teil 1
Ich habe ein neues Java-Bereitstellungstool erstellt
Programmieren Sie PDF-Kopf- und Fußzeilen in Java
[* Java *] Ich habe am JJUG CCC 2019 Spring teilgenommen
In einer VM-Umgebung erstellte Java-Anwendungsentwicklungsumgebung
Ich habe versucht, eine Formel in Javadoc einzubetten
Ich habe eine Selenium-Beispiel-App erstellt, die mehrere Browser (Chrome, IE, Firefox) unterstützt, die unter Java ausgeführt werden.