我有一个可打印对象,我想将其自动打印到文件中。
我可以通过打印对话框将其打印到文件,但我必须打印 135 个不同的生成文档,并且宁愿按程序而不是手动进行。
格式并不特别重要,只要我能将其转换为 pdf 即可。
最佳答案
好的,我已经解决了。我在java文档上偶然发现了这个页面:http://docs.oracle.com/javase/7/docs/technotes/guides/jps/spec/printing2d.fm1.html#998764
感兴趣的部分是“流式 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
来转换它们。
关于java - 可打印到文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18530704/