2011-06-03 11 views
6

El siguiente código funciona, pero cuando imprimo en el controlador de impresora PDFCreator, su título predeterminado es "Impresión Java". (Sospecho que esto también es cierto para Adobe Distiller, ya que si tienes search google for PDFs with Java Printing, obtienes muchos resultados.)imprimir en java establece un título en algún lugar de "Impresión Java"

¿Hay alguna manera de cambiar esto de "Impresión en Java" a otra cadena?

package com.example.test.gui; 

import java.awt.Graphics; 
import java.awt.print.PageFormat; 
import java.awt.print.Printable; 
import java.awt.print.PrinterException; 
import java.awt.print.PrinterJob; 

public class TestPrint implements Printable 
{ 
    @Override public int print(Graphics graphics, PageFormat pageFormat, int pageIndex) throws PrinterException { 
     if (pageIndex != 0) 
      return NO_SUCH_PAGE; 
     graphics.drawString("Hi there", 100, 100); 
     return PAGE_EXISTS; 
    } 

    public void printPage() throws PrinterException 
    { 
     PrinterJob job = PrinterJob.getPrinterJob(); 
     boolean ok = job.printDialog(); 
     if (ok) { 
      job.setPrintable(this); 
      job.print(); 
     } 
    } 
    public static void main(String[] args) { 
     try { 
      new TestPrint().printPage(); 
     } 
     catch (PrinterException e) { 
      e.printStackTrace(); 
     } 
    } 
} 

Respuesta

8

Has probado este setJobName (String jobName).

job.setJobName("New Printing Name"); 

La API dice que es el nombre del documento que se imprimirá.

Estoy ejecutando mi código en Ubuntu, no imprime el título, por lo que no puedo verificar si funciona o no.

+0

Hurra! ¡eso funciono! Simple pero confunde qué hace qué con todos estos objetos diferentes. –

3

La misma respuesta, pero para DocPrintJob:

PrintRequestAttributeSet pras = new HashPrintRequestAttributeSet(); 
pras.add(new JobName("your job name", Locale.getDefault())); 

docPrintJob.print(docToPrint, pras); 
Cuestiones relacionadas