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

Esteganografia LSB en Java – [Proyecto Completo]

Esteganografia LSB en Java – [Proyecto Completo]

Mensajes ocultos utilizando el método de Inserción en el bit menos significativo (Least Significant Bit Insertion) El mé...

Control de versiones con GIT y Netbeans

Control de versiones con GIT y Netbeans

Control de versiones: Se llama control de versiones a la gestión de los diversos cambios que se realizan sobre los eleme...

Juego: Adivina el número

Juego: Adivina el número

Problema: Desarrollar un juego en consola con Kotlin que genere un numero aleatorio entre un rango preestablecido y perm...

JavaScript: Script y Web para generar banderas ondeando

JavaScript: Script y Web para generar banderas ondeando

Online Flag Waver es una páginas web con la que podemos generar banderas ondeando con la textura que elijamos ya sea des...

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...

Crear un plugin wordpress “Banned Word”

Crear un plugin wordpress “Banned Word”

En este post, escribiremos un sencillo plugin para wordpress el cual consistirá en reemplazar palabras en los comentario...

Comparte lo que sabes

Categorias

Últimas entradas

Pyodide es un proyecto experimental de Mozilla  que proporciona un intérprete de Python que se ejecuta completamente en...

PicarOS Diego es una distribución GNU/Linux basada en Debian enfocada principalmente en la educación dentro del aula rec...

Windows XP fue lanzado oficialmente el 25 de octubre de 2001, han pasado ya 17 años y 7 meses convirtiendo así a XP uno...

Java proporciona Collection Framework, que define varias clases e interfaces para representar un grupo de objetos como u...

Android Bolivia

MAUS