Java PrinterJob 打印空白页

问题描述 投票:0回答:1

我第一次尝试打印并发现了这些代码片段:

package main;

import java.awt.print.Book;
import java.awt.print.PageFormat;
import java.awt.print.PrinterException;
import java.awt.print.PrinterJob;

import objects.Dokument;

public class Drucker {

    public Drucker() {
        try {
            
            PrinterJob pj = PrinterJob.getPrinterJob();
            Book pb = new Book();
            PageFormat pf = new PageFormat();
            pf.setOrientation(PageFormat.PORTRAIT);
            
            pb.append(new Dokument(), pf);
            pb.append(new Dokument(), pf);
            
            System.out.println(pb.getNumberOfPages());
            
            pj.setPageable(pb);
            
            if(pj.printDialog()) {
                pj.print();
            }
            
        } catch (PrinterException e) {
            e.printStackTrace();
        }
        
    }
    
}

和文档类:

package objects;

import java.awt.Color;
import java.awt.Graphics;
import java.awt.print.PageFormat;
import java.awt.print.Printable;
import java.awt.print.PrinterException;

public class Dokument implements Printable {

    @Override
    public int print(Graphics g, PageFormat pf, int pi) throws PrinterException {
        
        g.setColor(Color.red);
        g.fillRect(0, 0, 50, 50);
        g.setColor(Color.black);
        g.drawString("Hello World", 50, 50);
        
        return 0;
    }

}

虽然它能够打印多页,但它们都是空白的。

我的猜测是这与图形有关,但我找不到任何可以实现以使其工作的图形标签。

java printing
1个回答
0
投票

不返回0,返回:

  • Printable.NO_SUCH_PAGE
    如果
    pi
    不是正确的页码,
  • Printable.PAGE_EXISTS
    如果
    pi
    是正确的页码并且您在其中渲染了某些内容。
© www.soinside.com 2019 - 2024. All rights reserved.