A continuación presento esta forma de como convertir un String a PDF en Java con las siguientes ventajas:
Primeramente necesitamos algunas librerías, yo usaré maven para importarlas.
Simplemente especifico en la sección de dependencias lo siguiente:
<!--conversión de txt a pdf-->
<dependency>
<groupId>com.lowagie</groupId>
<artifactId>itext</artifactId>
<version>2.1.7</version>
</dependency> si no tienes maven, deberás buscar manualmente itex.jar en mi caso uso la versión 2.1.7 y revisar que en su estructura de paquetes tenga com.lowagie.
Nota: iText es de paga, si la usas para proyectos comerciales deberás pagar su licencia.
Como verás por cada salto de línea agregaremos un párrafo.
package mx.ine.sidj.service.ws.util;
import com.lowagie.text.*;
import com.lowagie.text.pdf.BaseFont;
import com.lowagie.text.pdf.PdfWriter;
import java.io.*;
/**
* Created by Javatlacati on 14/12/2016.
*/public class TextToPDF {
public static void main(String[] args) {
String text = "Hello Because font metrics is based on a graphics context, we need to create\n" +
"a small, temporary image so we can ascertain the width and height\n" +
"of the final image\nabsolutely very large text 123456789101112131415161718192021222324252627282293031323334353637383940";
TextToPDF.convertStringToPDF(text.split("\n"));
}
public static void convertStringToPDF(String[] string) {
byte[] barr = new byte[0];
Document pdfDoc = new Document(PageSize.LETTER);
try (ByteArrayOutputStream baos = new ByteArrayOutputStream();) {
PdfWriter.getInstance(pdfDoc, baos).setPdfVersion(PdfWriter.VERSION_1_7);
BaseFont courier = BaseFont.createFont(BaseFont.COURIER, BaseFont.CP1252, BaseFont.EMBEDDED);
Font myfont = new Font(courier);
myfont.setStyle(Font.NORMAL);
myfont.setSize(11);
pdfDoc.open();
pdfDoc.add(new Paragraph("\n"));
for (String strLine : string) {
Paragraph para = new Paragraph(strLine + "\n", myfont);
para.setAlignment(Element.ALIGN_JUSTIFIED);
pdfDoc.add(para);
}
pdfDoc.close();
barr = baos.toByteArray();
} catch (DocumentException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
//to save but if you are on a JSP you can stream it from byte[]
try (FileOutputStream outputStream = new FileOutputStream(new File("/mypath/archivo.pdf"))) {
outputStream.write(barr);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
} Espero este truco te haya gustado, si es así, tal vez también te interese Convertir archivo Powerpoint a PDF con Java.
Te comparto aquí mis recomendaciones de cursos de Código Facilito. Codigofacilito.com es una plataforma virtual…
Te comparto aquí mis recomendaciones de cursos de Linkedin Learning. LinkedIn Learning es una plataforma…
Estos snippets de código para entrevista acerca de mockito espero te sean de mucha utilidad.…
En este tutorial aprenderá a usar expresiones regulares en Java de manera práctica para contar…
¿Entrevista de programación Java fullstack? No te preocupes, te tengo un compendio de preguntas de…
Te recomiendo algunos cursos de Udemy para mejorar tus softskills y así mejorar en tu…