打印机代码在Windows下找不到打印机但在OS X下工作

时间:2012-05-09 14:55:26

标签: java printing

在Mac OS X(Lion)下,此打印方法可以正常工作。在Windows下,它什么都不做;它找不到任何打印机,菜单列表仍为空白。

我使用此课程发送我的页面:

new SelectPrinterDialog(this, new PrintContent(this, ord_id, this.sessionID));

在课程PrintContent中,我使用:

private DocFlavor flavor;

PrintService[] getPrinters(){

找到打印机。

public class PrintContent {

    private static final boolean TEXT = false;

    private OrdiniFrame frame;
    private String content;
    private long ordID;
    private long sessionID;
    private DocFlavor flavor;

public static final String PDF_PRINT_FILE = "__temp_print_file.pdf";
public static final String TXT_PRINT_FILE = "__temp_print_file.txt";
public static final String HTML_PRINT_FILE = "__temp_print_file.html";

public PrintContent(OrdiniFrame frame, long ordID, long sessionID){
    this.frame = frame;
    this.ordID = ordID;
    this.sessionID = sessionID;
    if(TEXT){
        this.flavor = DocFlavor.INPUT_STREAM.TEXT_PLAIN_US_ASCII;
        this.generateText();
    }
    else {
        this.flavor = DocFlavor.INPUT_STREAM.POSTSCRIPT;
        this.generateHTML();
    }

}


public PrintService[] getPrinters(){
    PrintRequestAttributeSet aset = new HashPrintRequestAttributeSet();
    //aset.add(MediaSizeName.ISO_A8);
    return PrintServiceLookup.lookupPrintServices(flavor, aset);
}

public XHTMLPrintable createRender () {
    try{
        XHTMLPanel renderer = new XHTMLPanel();
        renderer.getSharedContext().setDPI(300f);
        renderer.setDocument(new File(HTML_PRINT_FILE));
        JFrame f = new JFrame();
        f.getContentPane().add(renderer, "Center");
        f.setVisible(true);
        return new XHTMLPrintable(renderer);
    }catch(Exception ex){
        ex.printStackTrace();
    }
    return null;
}

public void print(PrintService service){

    try{
        float paperWidth = 62.0f;
        // paperHeight aumenta l'altezza del foglio
        float paperHeight = 70.0f;
        paperWidth *= 2.83;
        paperHeight *= 2.83;

        //val printJob = PrinterJob.getPrinterJob
        PrinterJob printJob = PrinterJob.getPrinterJob();
        printJob.setPrintService(service);

        PageFormat pageFormat = printJob.defaultPage();
        pageFormat.setOrientation(PageFormat.PORTRAIT);
        Paper labelPaper = pageFormat.getPaper();
        labelPaper.setSize(paperWidth, paperHeight);
        labelPaper.setImageableArea(+30,+30,paperWidth, paperHeight);
        pageFormat.setPaper(labelPaper);

        Book book = new Book();
        book.append(this.createRender(), pageFormat);
        printJob.setPageable(book);

        PrintRequestAttributeSet attributeSet = new HashPrintRequestAttributeSet();
        attributeSet.add(new PrinterResolution(300, 300, ResolutionSyntax.DPI));
        printJob.print(attributeSet);

    }catch(Exception ex){
        ex.printStackTrace();
    }   

我做错了什么?


更新: 我已经解决了。 问题出在标签html-&gt; <meta charset="utf-8"/> !!! 在为执行.jar。

创建文件.bat后,我发现了这个错误

1 个答案:

答案 0 :(得分:0)

我已经解决了。问题出在标签html-&gt; !在为执行.jar。

创建文件.bat后,我发现了这个错误