在java中打印在"Java Printing"的某处设置标题

Jas*_*n S 6 java printing

以下代码有效,但当我打印到PDFCreator打印机驱动程序时,其默认标题为"Java Printing".(我怀疑Adobe Distiller也是如此,因为如果你用谷歌打印搜索谷歌的PDF,你会得到很多结果.)

有没有办法将其从"Java Printing"更改为另一个字符串?

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();
        }
    }   
}
Run Code Online (Sandbox Code Playgroud)

ken*_*ohn 8

您是否尝试过此setJobName(String jobName).

job.setJobName("New Printing Name");
Run Code Online (Sandbox Code Playgroud)

API表示它是要打印的文档的名称.

我在Ubuntu上运行我的代码,它不打印标题,所以我无法验证它是否有效.


use*_*153 6

相同的答案,但对于DocPrintJob

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

docPrintJob.print(docToPrint, pras);
Run Code Online (Sandbox Code Playgroud)