imprimir los archivos pdf con java

He tratado de imprimir en formato pdf con este código:

package imprimir;

import java.io.*;
import java.awt.print.*;
import java.awt.print.PrinterJob.*;
import java.awt.print.PageFormat.*;

public class Imprimir {

    static public void main(String[] args) {
        PrinterJob job = PrinterJob.getPrinterJob();
        PageFormat pf = job.defaultPage();
        Paper paper = new Paper();
        paper.setSize(612.0, 832.0);
        double margin = 10;
        paper.setImageableArea(margin, margin, paper.getWidth() - margin, paper.getHeight() - margin);
        pf.setPaper(paper);
        pf.setOrientation(PageFormat.LANDSCAPE);
        job.setPrintable(new ObjetoDeImpresion(), pf);
        job.setJobName("funciona?");
        try {
            job.print();
        } catch (PrinterException e) {
            System.out.println(e);
        }
    }
}


package imprimir;

import java.awt.*;
import java.awt.print.*;

public class ObjetoDeImpresion implements Printable {

    public int print(Graphics g, PageFormat f, int pageIndex) {
        if (pageIndex == 0) {
            g.drawString("Hola ivan", 100, 200);
            return PAGE_EXISTS;
        } else {
            return NO_SUCH_PAGE;
        }
    }
}

y también de otras maneras diferentes que hay en internet, pero con todas las maneras que he probado, al imprimir el documento, imprimir impar de números y letras, como este:

% PDF ||1.6
endobobj <</linerrized 1/L 20597/O 40/E 14115/N 1/T ............
xref
37 34
0000000013 00000 n
0000000013 00000 n
0000000013 00000 n
0000000013 00000 n
0000000013 00000 n
0000000013 00000 n
0000000013 00000 n
0000000013 00000 n
0000000013 00000 n
0000000013 00000 n
0000000013 00000 n
0000000013 00000 n
0000000013 00000 n
0000000013 00000 n
0000000013 00000 n
...
..
..
trailer
<</Size...... 

Alguien me puede ayudar a lograr imprimir un documento?

InformationsquelleAutor Ivan | 2013-06-18

3 Kommentare

  1. 4

    Creo PDFBox de Apache mejor se adapten a su necesidad (http://pdfbox.apache.org/).

    Aquí es cómo puede caber dentro de su código:

    static public void main(String[] args) {
        PrinterJob job = PrinterJob.getPrinterJob();
        PageFormat pf = job.defaultPage();
        Paper paper = new Paper();
        paper.setSize(612.0, 832.0);
        double margin = 10;
        paper.setImageableArea(margin, margin, paper.getWidth() - margin, paper.getHeight() - margin);
        pf.setPaper(paper);
        pf.setOrientation(PageFormat.LANDSCAPE);
    
        //PDFBox
        PDDocument document = PDDocument.load("yourfile.pdf");
        job.setPageable(new PDPageable(document, job));
    
        job.setJobName("funciona?");
        try {
            job.print();
        } catch (PrinterException e) {
            System.out.println(e);
        }
    }

    Usted puede encontrar más información acerca de esto si nos fijamos en el origen de la org.apache.pdfbox.PrintPDF.

    • Hola, hice lo que me dijo. Descargar el PDFBOx.jar y copiar su código … Aún así la impresora no imprime lo que debe ser impreso. El archivo que tengo es de prueba».pdf» es una hoja que contiene un texto y una imagen. Pero lo que está impreso en la hoja son sólo números, como lo es la impresión en hexadecimal
    • Usted puede ser que desee para abrir un tema en PDFBox JIRA. O enviarme el archivo PDF, si no es confidencial.
  2. 0

    Hemos tratado de PDFBox demasiado, también PDFView y IText, pero lo que funcionó mejor para nosotros fue el uso de los sistemas de ghostscript para representar el PDF en una imagen – de lo contrario, en nuestro PDF con un par de imágenes y campos de formulario, las cosas iban a llegar no a la perfección.

    Escribir primero el pdf a un archivo temporal, llame a gs:

            String command;
        if (System.getProperty("os.name").toLowerCase().contains("windows"))
        {
            command = "gswin32";
        }
        else
        {
            command = "gs";
        }
    
        String absolutePath = pngFile.getAbsolutePath();
        command = command + " -q -dSAFER -dBATCH -dNOPAUSE -sDEVICE="
                    + color.name()
                    + " -dGraphicsAlphaBits=4 -dTextAlphaBits=4 -dFirstPage="
                    + pageNo + " -dLastPage=" + pageNo + " -r" + dpi
                    + " -sOutputFile=" + absolutePath + " "
                    + pdfFile.getAbsolutePath();
        System.out.println(command);
        Process p = Runtime.getRuntime().exec(command);
        boolean success = false;
        for (int i = 0; i < 1200; i++) //wait for completion
        {
            try
            {
                p.exitValue();
                success = true;
                break;
            }
            catch (Exception e)
            {
                logger.trace(e.getMessage());
            }
            Thread.currentThread();
            Thread.sleep(200);
        }
        if (!success)
        {
            p.destroy();
        }

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein

Pruebas en línea