2

我正在尝试使用下面的代码打印一份简单的报告。在 Windows 上,此代码在尝试打印到 PDF 生成器驱动程序(而不是真正的打印机)时工作正常。但是,在我的 Linux 机器上,当我测试下面的代码时,Linux 打印对话框打开,但我似乎无法捕获打印到文件文件名。这产生的问题是使用打印到文件将报告打印到当前执行目录而不是打印对话框中指定的位置。(我希望用户能够打印到文件并指定位置。)

注意:此代码使用一些测试打印语句来确定 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

4

0 回答 0