Java Print API 在纸上呈现倾斜图形

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

2个条件在发生时得到遵守

  1. 页面方向设置为横向
  2. Color 填充任何区域的 Alpha 值小于 255

重现它的代码片段:

import java.awt.*;
import java.awt.print.*;

public class Printing implements Printable {
    private static Paper paper;
    @Override
    public int print(Graphics graphics, PageFormat pageFormat, int pageIndex) throws PrinterException {
        if (Thread.interrupted())
        {
            throw new PrinterException("Current thread interrupted.");
        }

        Stroke oldstroke = ((Graphics2D)graphics).getStroke();
        ((Graphics2D)graphics).setStroke(new BasicStroke(10));
        ((Graphics2D)graphics).translate(15, 0);
        graphics.drawLine(0,0,0,300); //LEFT margin line
        ((Graphics2D)graphics).translate(-15, 0);

        ((Graphics2D)graphics).translate(0, -15);
        graphics.drawLine(0,(int)paper.getImageableWidth(),300,(int)paper.getImageableWidth());//BOTTOM margin line
        ((Graphics2D)graphics).translate(0, 15);
        ((Graphics2D)graphics).setStroke(oldstroke);

        ((Graphics2D)graphics).setPaint(new java.awt.Color(0,0,0,100));
        ((Graphics2D)graphics).fill(new Rectangle(0,0,200,200));


        return Printable.PAGE_EXISTS;
    }

    public static void main(String[] argv) {
        Printing printer = new Printing();
        PrinterJob printJob = PrinterJob.getPrinterJob();
        PageFormat pageFormat = printJob.defaultPage();
        paper = pageFormat.getPaper();
        paper.setImageableArea(0,0,paper.getWidth(),paper.getHeight());
        pageFormat.setOrientation(PageFormat.LANDSCAPE);
        pageFormat.setPaper(paper);

        Book book = new Book();
        book.append(printer, pageFormat,1);
        printJob.setPageable(book);
        try {
            printJob.print();
        } catch (PrinterException e) {
            e.printStackTrace();
        }

    }
}

如果应用程序运行没有

        ((Graphics2D)graphics).setPaint(new java.awt.Color(0,0,0,100));
        ((Graphics2D)graphics).fill(new Rectangle(0,0,200,200));

左线和底线在纸上可见。

Java 打印服务似乎毫无理由地移动了原点。 是 JVM 的问题还是我在某处弄错了?

java printing jvm graphics2d
© www.soinside.com 2019 - 2024. All rights reserved.