Java: Convertir String a PDF

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.


  • Cursos de Código Facilito

    Te comparto aquí mis recomendaciones de cursos de Código Facilito. Codigofacilito.com es una plataforma virtual de cursos en idioma exclusivamente español que inició como un canal de YouTube. Opinión de la plataforma En mi opinión la plataforma aún es incipiente y los cursos necesitan más trabajo, ya que es muy común hallarse con clases de…


  • Cursos de LinkedIn Learning

    Te comparto aquí mis recomendaciones de cursos de Linkedin Learning. LinkedIn Learning es una plataforma virtual de cursos propiedad de Microsoft. Hallarás mucho material en inglés, pues prácticamente todos los cursos vienen con subtítulos en castellano y en la parte técnica son muy buenos debido a la adquisición de Lynda.com. En mi opinión la plataforma…


  • Mockito: Snippets de código

    Estos snippets de código para entrevista acerca de mockito espero te sean de mucha utilidad. Claro que también los puedes usar para tu desarrollo en el día a día. Mock básico Si te llegan a mostrar algo como esto es mejor que sospeches, mockito se usa principalmente para pruebas de integración. Si llegas a ver…


javapro.org