1

我有一个可打印的对象,我想自动打印到文件中。

我可以通过打印对话框将其打印到文件中,但我必须打印 135 个不同的生成文档,并且宁愿以程序方式而不是手动方式进行打印。

格式并不特别重要,只要我可以将其转换为 pdf 即可。

4

2 回答 2

0

你可以试试这个

PrintRequestAttributeSet attributes = new HashPrintRequestAttributeSet();
attributes.add(new Destination(new java.net.URI("file:C:/myfile1.pdf")));      
try  
{
    job.print(attributes);    // Print the job if the user didn't cancel printing.
} 
catch(Exception e)
{    
    System.out.println(e);
}
于 2013-09-02T09:01:29.850 回答
0

好的,我已经解决了。我在 java 文档上偶然发现了这个页面:http: //docs.oracle.com/javase/7/docs/technotes/guides/jps/spec/printing2d.fm1.html#998764

感兴趣的部分是“Streaming 2D Graphics”。

我最终得到了这个:

public static boolean printToPostScript(File file, Printable printable) {
    try {
        if(!file.exists()) {
            file.createNewFile();
        }

        PrinterJob job = PrinterJob.getPrinterJob();
        String mime = "application/postscript";
        FileOutputStream out = new FileOutputStream(file.getAbsolutePath());
        StreamPrintService printer;
        StreamPrintServiceFactory[] factories =
            PrinterJob.lookupStreamPrintServices(mime);

        if(factories.length > 0) {
                printer = factories[0].getPrintService(out);
                job.setPrintService(printer);
                job.setPrintable(printable);
                job.print();
        } else {
            System.out.println("No suitable print services");
            return false;
        }
    } catch(Exception e) {
        e.printStackTrace();
        return false;
    }

    return true;
}

这可以修改为直接打印为 PDF,但您需要一个可用的 PDF 打印机。所以我只是打印到后记并ps2pdf用来转换它们。

于 2013-08-30T10:55:41.527 回答