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 https://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

Cifrado por desplazamiento o código de César

Cifrado por desplazamiento o código de César

El cifrado César, también conocido como cifrado por desplazamiento o código de César, es una de las técnicas de cifrado...

Sourcetrail ahora es Open Source

Sourcetrail ahora es Open Source

Sourcetrail el explorador de código fuente de los lenguaje C, C ++, Java y Python se pasa al Software Libre y desde ahor...

Animación de JProgressBar con hilos

Animación de JProgressBar con hilos

Si nuestra aplicación tiene que llevar a cabo un cierto trabajo que no sabemos cuanto durará y que a la vez consume much...

Crea App multilenguaje con Android Studio

Crea App multilenguaje con Android Studio

En este post aprenderemos los pasos básicos para construir una aplicación android con soporte multilenguaje, utilizaremo...

Tradukisto: Conversión de dinero en palabras

Tradukisto: Conversión de dinero en palabras

Tradukisto es una biblioteca para Java 8 creada para convertir números enteros o cantidades de dinero a sus equivalentes...

Introduccion a la programacion shell

Introduccion a la programacion shell

En este post veremos una muy pequeña introducción de lo que es el mundo de la programación en shell de Linux. Necesitamo...

Comparte lo que sabes

Categorias

Últimas entradas

Si trabajas con redes sociales (RRSS) a continuación te muestro tres herramintas gratuitas que te ayudaran a la hora de...

Por lo general se usan transacciones a nivel base de datos y posteriormente se llaman estos a través de procedimientos a...

En este post, aprenderemos como conectar Visual Basic 6 con SQL Server, abrir una tabla, leer su contenido y mostrar est...

Lo que veremos en este post es la configuración del driver para PHP de SQL Server que ha creado Microsoft el cual permit...

Herramientas

Generador de Enlaces a Whatsapp