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.
Cuando desarrollamos aplicaciones en java con base de datos debemos tener cuidado en que se cumplan un conjunto de carac[...]
iReport nos da la posibilidad de dar un formato condicional a los diferentes registros resultado de nuestras consultas S[...]
Problema: Desarrolle un programa en consola con c# para escribir y leer información de un archivo binario. Los datos a e[...]
Secret (https://getsecret.now.sh/) es una aplicación web gratuita que te permite enviar mensajes temporales cifrados que[...]
Ya tengo varios post sobre conexión a base de datos en varios lenguajes y claro no podía faltar c#, el siguiente tutoria[...]
j2html es una biblioteca para java que permite generar código html seguro desde código java utilizando sus propias etiqu[...]