Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/355.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 可打印到文件_Java_Printing - Fatal编程技术网

Java 可打印到文件

Java 可打印到文件,java,printing,Java,Printing,我有一个可打印的对象,我想自动打印到一个文件中 我可以通过“打印”对话框将其打印到文件中,但我必须打印135个不同的生成文档,而且我更愿意按程序执行,而不是手动执行 格式并不特别重要,只要我能把它转换成pdf就行。好的,我已经解决了。我偶然发现了java文档中的这一页: 感兴趣的部分是“流式2D图形” 我的结局是: public static boolean printToPostScript(File file, Printable printable) { try {

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

我可以通过“打印”对话框将其打印到文件中,但我必须打印135个不同的生成文档,而且我更愿意按程序执行,而不是手动执行


格式并不特别重要,只要我能把它转换成pdf就行。

好的,我已经解决了。我偶然发现了java文档中的这一页:

感兴趣的部分是“流式2D图形”

我的结局是:

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打印机可用。所以我只是打印到postscript,并使用
ps2pdf
转换它们。

您可以试试这个

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);
}

将可打印文件输出到文件而不是作为打印作业提交。@你是指java.awt.print.printable吗?@Jayan yes,对不起,应该更清楚一些。我正试图取消按“OK”的需要,我不想按“OK”135次。