Aprende Java Aprende Php Aprende C++ Aprende HTML 5 Aprende JavaScript Aprende JSON Aprende MySQL Aprende SQLServer Aprende Visual Basic 6 Aprende PostgreSQL Aprende SQLite Aprende Redis Aprende Kotlin Aprende XML Aprende Linux VSC Aprende Wordpress Aprende Laravel Aprende VueJS Aprende JQuery Aprende Bootstrap Aprende Netbeans Aprende Android
Sigueme en Facebook Sigueme en Twitter Sigueme en Instagram Sigueme en Youtube Sigueme en TikTok Sigueme en Whatsapp
Home / Java / Impresión de imágenes en PDF

Impresión de imágenes en PDF

Por 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

Artículos similares

Transacciones – Uso de Commit y Rollback

Cuando desarrollamos aplicaciones en java con base de datos debemos tener cuidado en que se cumplan un conjunto de carac[...]

Estilos condicionales en iReport

iReport nos da la posibilidad de dar un formato condicional a los diferentes registros resultado de nuestras consultas S[...]

Leer y escribir en un archivo binario

Problema: Desarrolle un programa en consola con c# para escribir y leer información de un archivo binario. Los datos a e[...]

Envía mensajes temporales y cifrados

Secret (https://getsecret.now.sh/) es una aplicación web gratuita que te permite enviar mensajes temporales cifrados que[...]

Conectar C Sharp con MySQL

Ya tengo varios post sobre conexión a base de datos en varios lenguajes y claro no podía faltar c#, el siguiente tutoria[...]

Crea código HTML5 desde java con j2html

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