La sortie de formulaire a été vue dans tous les systèmes, mais récemment, elle est devenue sans papier, donc j'estime que le nombre de sortie de papier lui-même diminue. Cependant, des pratiques commerciales de type formulaire sont toujours nécessaires. Créons facilement des données PDF.
pdfbox-2.0.8
Télécharger les ici. Officiel
package pdf;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDPage;
public class PdfTest {
    public static void main(String args[]) {
	    try {
	    	
	        //Créer un objet document
	        PDDocument document = new PDDocument();
	        //Créer un objet de page
	        PDPage page = new PDPage();
	        document.addPage(page);
	        //Sauvegarder le document
	        document.save("test.pdf");
	        document.close();
	    }
	    catch (Exception e) {
	        e.printStackTrace();
	    }
	}
}


Vous disposez maintenant d'un fichier d'une page.
Vient ensuite la sortie des caractères.
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 {
	    	
	        //Créer un objet document
	        PDDocument document = new PDDocument();
	        //Créer un objet de page
	        PDPage page = new PDPage();
	        document.addPage(page);
	        //Traitement de sortie de caractères
	        PDPageContentStream contentStream = new PDPageContentStream(document, page);
	        contentStream.beginText();
	        //Spécification de la police
	        PDFont font = PDType1Font.TIMES_ITALIC;
	        contentStream.setFont(font, 12);
	        //Spécification de la position de sortie
	        contentStream.newLineAtOffset(0f, 0f);
	        //Chaîne de sortie
	        contentStream.showText( "HelloWorld" );
	        contentStream.endText();
	        contentStream.close();
	        
	        //Sauvegarder le document
	        document.save("test2.pdf");
	        document.close();
	    }
	    catch (Exception e) {
	        e.printStackTrace();
	    }
	}
}


Puisque la position de sortie est contentStream.newLineAtOffset (0f, 0f), elle sera sortie en bas à gauche. Il existe différents types de polices de sortie.
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 {
	    	
	        //Créer un objet document
	        PDDocument document = new PDDocument();
	        //Créer un objet de page
	        PDPage page = new PDPage();
	        document.addPage(page);
	        //Traitement de sortie de caractères
	        PDPageContentStream contentStream = new PDPageContentStream(document, page);
	        contentStream.beginText();
	        //Spécification de la police
	        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);
	        //Spécification de la position de sortie
	        contentStream.newLineAtOffset(0f, 755f);
	        //Chaîne de sortie
	        contentStream.showText( "Bonjour le monde" );
	        contentStream.endText();
	        contentStream.close();
	        
	        //Sauvegarder le document
	        document.save("test3.pdf");
	        document.close();
	    }
	    catch (Exception e) {
	        e.printStackTrace();
	    }
	}
}


Les fichiers de polices sont traités légèrement différemment entre .ttf et .ttc. Cette fois, j'utilise .ttc.
Selon l'analyse de rentabilisation, il peut être nécessaire que vous souhaitiez enregistrer uniquement les données sans créer le fichier réel. Ceci peut être réalisé sans aucun problème.
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 {
	    	
	        //Créer un objet document
	        PDDocument document = new PDDocument();
	        //Créer un objet de page
	        PDPage page = new PDPage();
	        document.addPage(page);
	        //Traitement de sortie de caractères
	        PDPageContentStream contentStream = new PDPageContentStream(document, page);
	        contentStream.beginText();
	        //Spécification de la police
	        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);
	        //Spécification de la position de sortie
	        contentStream.newLineAtOffset(0f, 755f);
	        //Chaîne de sortie
	        contentStream.showText( "Bonjour le monde. Enregistrez uniquement les données." );
	        contentStream.endText();
	        contentStream.close();
	        //Enregistrer les données du document
	        ByteArrayOutputStream out = new ByteArrayOutputStream();
	        document.save(out);
	        document.close();
	        
	        InputStream streamData =new ByteArrayInputStream(out.toByteArray());
	        
	        System.out.println("Vérification------------");
	        System.out.println("streamData" + streamData);
	    }
	    catch (Exception e) {
	        e.printStackTrace();
	    }
	}
}
Vous pouvez l'enregistrer dans une colonne de type blob tel quel.
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("---------Début de sortie-------------");
	    	System.out.println(content);
		} catch (Exception e) {
			e.printStackTrace();
		}
    }
}
--------- Démarrer la sortie -------------- Bonjour le monde
Il existe diverses autres fonctions telles que l'incorporation d'image et les bordures, je vais donc en profiter pour les ajouter.
Recommended Posts