我正在尝试使用以下代码打印简单报告。在Windows上,此代码在尝试打印到PDF生成器驱动程序(而不是真正的打印机)时工作正常。但是,在我的Linux机器上,当我测试下面的代码时,Linux打印对话框打开但我似乎无法捕获打印到文件文件名。这会产生的问题是报表是使用print-to-file打印到当前正在执行的目录而不是打印对话框中指定的位置。 (我希望用户能够打印到文件并指定位置。)
注意:此代码使用一些测试打印语句来确定PrintDialog文件路径信息 - 也就是说,我意识到我不使用此信息。
代码段
PrintDialog printdialog = new PrintDialog(Display.getDefault().getActiveShell(), SWT.NONE);
PrinterData printerdata = printdialog.open ();
if (printerdata.printToFile) {
System.out.println("TESTING 2013-10-09:: " + printerdata.fileName) ;
}
if (printerdata != null) {
ReportHeader header = new ReportHeader("Preprocessing Errors Report", true) ;
ReportFooter footer = new ReportFooter() ;
// Create styled text for the report text itself
StyledTextPrint reporttext = new StyledTextPrint() ;
TextStyle reporttextstyle = new TextStyle().fontHeight(ReportDefaults.REPORTFONTSIZE) ;
reporttext.append("Preprocessing Errors Report\n\n" +
"Matter Name: " + systemprefs.getMatterName(systemprefs.getCurrentMatter()) +
"\n[" + systemprefs.getCurrentMatter() + "]\n\n" +
TextLineSplitter.splitline(printablereporttext.toString(), 55).toString(), reporttextstyle) ;
// Use page print to print all the formatted text
PagePrint text = new PagePrint(
header,
ReportDefaults.HEADERBOTTOMMARGIN,
reporttext,
ReportDefaults.FOOTERBOTTOMMARGIN,
footer);
ScalePrint stext = new ScalePrint(text) ;
// Perform actual printing
String reportfilename = "PreprocessingErrorsReport" + systemprefs.getCurrentMatter() ;
PaperClips.print(new PrintJob(reportfilename, stext), printerdata) ;
其他信息:
Linux Ubuntu 13.04