我有一个可打印的对象,我想自动打印到文件。
我可以通过打印对话框将其打印到文件中,但我必须打印135个不同的生成文档,而不是手动而不是手动执行。
格式并不特别重要,只要我可以将其转换为pdf。
答案 0 :(得分:0)
好的,我已经解决了。我偶然发现了java docs上的这个页面: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打印机。所以我只是打印到postscript并使用ps2pdf
转换它们。
答案 1 :(得分: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);
}