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.
Los números narcisistas o números de Armstrong son aquellos números enteros positivos cuya suma de las n-ésim[...]
Java Help es (o era) una librería para java que permitía añadir ventanas de ayuda HTML a nuestros proyectos, al ser una[...]
En este post conocernos lo que son las Estructuras de Control IF en los script de Bash. Estas estructuras nos ayudan a c[...]
«Stitch de Google» es la herramienta de inteligencia artificial (IA) de Google lanzada en su conferencia Google I/O 2025[...]
En este post crearemos un componente gráfico para java que nos permitirá seleccionar la hora del día de una manera senci[...]
Los objetos como JLabel o JButton nos permiten hacer uso de código CSS en su propiedad TEXT, asi podemos adornar el text[...]