A continuación presento esta forma de como convertir un String a PDF en Java con las siguientes ventajas:

  • de forma rápida
  • sin preocuparme por los márgenes
  • usando Java

Librería para convertir String a PDF en Java

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.

Código de conversión de cadena a PDF

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.

javatlacati

Compartir
Publicado por
javatlacati
Etiquetas: iTextjavamaven

Entradas recientes

Cursos de Código Facilito

Te comparto aquí mis recomendaciones de cursos de Código Facilito. Codigofacilito.com es una plataforma virtual…

2 meses hace

Cursos de LinkedIn Learning

Te comparto aquí mis recomendaciones de cursos de Linkedin Learning. LinkedIn Learning es una plataforma…

4 meses hace

Mockito: Snippets de código

Estos snippets de código para entrevista acerca de mockito espero te sean de mucha utilidad.…

4 meses hace

Expresiones regulares en Java: analizar un String

En este tutorial aprenderá a usar expresiones regulares en Java de manera práctica para contar…

4 meses hace

Preguntas para entrevista de programación Java full-stack

¿Entrevista de programación Java fullstack? No te preocupes, te tengo un compendio de preguntas de…

5 meses hace

SoftSkills: cursos de Udemy

Te recomiendo algunos cursos de Udemy para mejorar tus softskills y así mejorar en tu…

5 meses hace