Sigueme en Facebook Sigueme en Twitter Sigueme en Instagram Sigueme en Youtube
JC Mouse Bolivia
Index / Java / Impresión de imágenes en PDF

Impresión de imágenes en PDF

Autor jc mouse sábado, enero 20, 2018

Existen varias aplicaciones (free y de pago) que emulan una impresora virtual para generar archivos en PDF  (Portable Document Format), uno de estos es Nitro PDF Creator el cual es uno de los más completos. Funciona como cualquier otra impresora real; Quieres imprimir un archivo, seleccionas el documento, seleccionas impresora, realizas los cambios de papel, margenes, color, calidad de imagen, etc para finalmente imprimir el documento.

En este post te muestro un pequeño código para automatizar en gran parte este trabajo, es decir, seleccionaremos automáticamente la impresora virtual ya que el sistema puede contener varios instalados y no necesariamente Nitro PDF estará configurada como la impresora por defecto; A continuación declaramos las propiedades que nos interesan configurar (tamaño de papel, calidad de impresión, cantidad de copias, etc), necesitamos también un listener para estar al tanto del trabajo con la impresora, finalmente indicamos el archivos de imagen que queremos imprimir.

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import javax.print.Doc;
import javax.print.DocFlavor;
import javax.print.DocPrintJob;
import javax.print.PrintException;
import javax.print.PrintService;
import javax.print.PrintServiceLookup;
import javax.print.SimpleDoc;
import javax.print.attribute.HashPrintRequestAttributeSet;
import javax.print.attribute.PrintRequestAttributeSet;
import javax.print.attribute.standard.Copies;
import javax.print.attribute.standard.JobName;
import javax.print.attribute.standard.MediaSizeName;
import javax.print.attribute.standard.OrientationRequested;
import javax.print.attribute.standard.PrintQuality;
import javax.print.event.PrintJobAdapter;
import javax.print.event.PrintJobEvent;
/**
 * @see http://www.jc-mouse.net/
 * @author mouse
 */
public class NewMain {

    public static void main(String[] args) {
        
        //Obtiene todas las impresoras del sistema
        PrintService[] allPrintServices = PrintServiceLookup.lookupPrintServices(null, null);
        PrintService selectprinter = null;
        for (PrintService printService : allPrintServices) {
            //selecciona la impresora de PDF
            if (printService.getName().equals("Nitro PDF Creator (Pro 10)")) {
                selectprinter = printService;
                break;
            }
        }

        if (selectprinter != null) {
            DocPrintJob printerJob = selectprinter.createPrintJob();
            //Propiedades de impresion
            PrintRequestAttributeSet pras = new HashPrintRequestAttributeSet();
            pras.add(new Copies(1));//numero de copias            
            pras.add(MediaSizeName.NA_LETTER);//Tamaño de Papel
            pras.add(OrientationRequested.PORTRAIT);//Oientación de la hoja
            pras.add(PrintQuality.NORMAL);//Calidad de Impresio             
            pras.add(new JobName("mi imagen", null));

            //Listener
            PrintJobAdapter printJobAdapter = new PrintJobAdapter() {
                @Override
                public void printJobCompleted(PrintJobEvent e) {}

                @Override
                public void printDataTransferCompleted(PrintJobEvent e) {
                    System.out.println("printDataTransferCompleted");
                }

                @Override
                public void printJobRequiresAttention(PrintJobEvent e) {}

                @Override
                public void printJobFailed(PrintJobEvent e) {}
            };
            printerJob.addPrintJobListener(printJobAdapter);

            FileInputStream fis;
            try {
                //Archivo de imagen
                fis = new FileInputStream("E:\\images\\esto_es_espartaaaaa_digo_Bolivia.jpg");                                
                //Doc doc = new SimpleDoc(fis, DocFlavor.INPUT_STREAM.PNG, null);
                //Doc doc = new SimpleDoc(fis, DocFlavor.INPUT_STREAM.GIF, null);
                Doc doc = new SimpleDoc(fis, DocFlavor.INPUT_STREAM.JPEG, null);
                printerJob.print(doc, pras);
            } catch (PrintException | FileNotFoundException ex) {
                System.err.println(ex.getMessage());
            }
        } else {
            System.out.println("Nitro PDF Creator (Pro 10) - NO DISPONIBLE");
        }

    }

}

Cuando ejecutemos el código anterior, se llamara la impresora virtual el cual pedira que se seleccione un lugar donde guardar el archivo PDF y después de unos segundos te mostrara el resultado.

esparta

Tags

Si te ha gustado podrías compartirlo o dejar un comentario. ¡Muchas gracias!
Autor: JC Mouse

Yo soy yo :) JC Mouse, Soy orgullosamente boliviano soy fundador y CEO de la web jc-Mouse.net uno de las pocas web en emprendimiento y tecnología en Bolivia.

Toda la información que encuentres en este sitio es y sera completamente gratis siempre, puedes copiar, descargar y re-publicar si así lo deseas en otros blogs o sitios web, solo te pido a cambio que dejes una referencia a esta web. Esto nos ayuda a crecer y seguir aportando. Bye

Enjoy! :)

También Te Podría Interesar

Reproducir video en JFrame Swing con JavaFX

Reproducir video en JFrame Swing con JavaFX

JavaFX un producto de  Sun Microsystems/Oracle Corporation que salio a la luz para competir con tecnologías como Flash o...

SQLite INSERT, UPDATE, DELETE, QUERY

SQLite INSERT, UPDATE, DELETE, QUERY

En este segundo post sobre Android y SQLite, veremos el uso de los métodos de gestión de base de datos más utilizados, e...

Paso de parámetros entre dos Activity

Paso de parámetros entre dos Activity

En este tutorial veremos como pasar parámetros de un activity a otro activity, no hay mucho que decir así que manos a la...

GSON: Convertir array JSON en List de objetos Java

GSON: Convertir array JSON en List de objetos Java

En este ejemplo tenemos un array en JSON el cual representa una lista de alumnos y queremos llevar este a una lista en j...

Instalador java con WinRar

Instalador java con WinRar

En este videoTutorial veremos la forma mas sencilla de crear un instalador para programas hechos en Java utilizando el p...

Encriptación por el método bífido

Encriptación por el método bífido

El método Bífido es un cifrado fraccionario. Es decir que cada letra viene representada por una o más letras o símbolos,...

Comparte lo que sabes

Categorias

Últimas entradas

Blockly proyecto de Google for Education, es una biblioteca en JavaScript que agrega un editor de código visual a aplica...

j2html es una biblioteca para java que permite generar código html seguro desde código java utilizando sus propias etiqu...

En este post haremos uso de PanoramaImageView para agregar a una aplicación android, una vista panorámica de 180° y 360°...

¿Que es una infografia? “Una infografía es una representación visual informativa o diagrama de textos escritos que...

Android Bolivia

MAUS