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

base de datos multiple – parte II

Continuación del tutorial «Utiliza 2 bases de datos diferentes en una aplicación» La Interfaz frmSelected.java: Haciendo[...]

Dimask: La mascara de la Belleza (Descargar)

La Belleza está en la Simetría ¿Qué es lo que nos hace considerar un rostro bello? ¿Está influenciado nuestro criterio p[...]

Agrega imagenes en un JComboBox

Para agregar imágenes a un JComboBox, partiremos de un proyecto Netbeans con la siguiente estructura: Tenemos dos clases[...]

Canva: Herramienta de creación de infografías online

¿Que es una infografia? «Una infografía es una representación visual informativa o diagrama de textos escritos que en ci[...]

Excalidraw: Pizarra virtual de código abierto

Ya sea para desarrollo de software o para cualquier otro tipo de tareas donde necesitas plasmar una idea de forma rápida[...]

JPlay CD – Autoejecutable para java

En este tutorial se explica una forma de crear CD autoejecutable para programas hechos en java asi como para instalar la[...]