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