JDK installieren OpenJDK druckt falsch

Roland13

Mitglied
Ein Ausdruck aus Java mit dem Original-Java von Oracle ist bei Hoch-Format und Querformat wie gewünscht. Sobald ich OpenJDK verwende funktioniert aber der Querformat-Druck nicht mehr richtig: die horizontalen Linien werden ca 3 mm darunter (unter/auf der Schrift) gedruckt, obwohl bei der Vorschau auch bei OpenJDK noch alles richtig dargestellt wurde.
Hat jemand ein ähnliches Phänomen beobachtet, oder funktionieren nur die OpenJDK-Version von GitHub nicht richtig?
 
zu 1) getestet mit Open JDK 1.8.0.191, 1.8.0_201 und 11.0.2.7
zu 2) https://github.com/ojdkbuild/ojdkbuild ist scheinbar einziges OpenJDK das installierbare Version zur Verfügung stellt, welches jnlp aufrufen kann
zu 3) Minibeispiel hab ich leider nicht, der Druck läuft über folgende Funktion:
Java:
    public int print(Graphics g,PageFormat pf,int pageIndex) throws PrinterException
          {
            iPrint++;
            int ret = PAGE_EXISTS;
            try
            {

        Graphics2D g2d=(Graphics2D)g;
        if(bGetPrintGraphics)
        {

            if(gFont!=null)
                g.setFont(gFont);
            if(iCount==1)
            {
                iCount++;
            }
            else
            {
                graphGlobal=g2d;
                bGetPrintGraphics=false;
                iCount=1;
                pfGlobal=pf;
                                bPrint=false;
            }
            ret=PAGE_EXISTS;
        }
        else
        {
            if(bVorschau)
            {
                            makePage(g2d,(Vector)VecPages.elementAt(pageIndex),1);
                                Static.printError("PrintmanagerA.print: Vorschau aufgerufen");
                ret=NO_SUCH_PAGE;
            }
            else
            {
                if(pageIndex < alPages.size())
                {
                    makePage(g2d,(Vector)VecPages.elementAt((alPages.get(pageIndex)).intValue()-1),1);
                                        graphGlobal=g2d;
                                        bPrint=true;
                                        g2.progInfo("PrintmanagerA.print:3");
                    ret=PAGE_EXISTS;
                }
                else
                                {
                                  if (!bPrint)
                                    pj.cancel();
                                  ret=NO_SUCH_PAGE;
                                }
            }
        }
          }
              catch (Exception e) {
                ret=NO_SUCH_PAGE;
                g2.defInfo2("PrintManagerA.print:"+e);
                     throw new PrinterException(e.toString());
              }
              return ret;
    }
 
Du kannst mal testweise folgenden Code verwenden.

Java:
import java.awt.Color;
import java.awt.EventQueue;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.geom.Line2D;
import java.awt.print.*;

public class Test implements Printable {
    @Override
    public int print(Graphics g, PageFormat pf, int ix) {
        if (ix == 0) {
            Graphics2D g2 = (Graphics2D) g;

            System.out.printf("[%.2f, %.2f, %.2f, %.2f]\n",
                mm(pf.getImageableX()),
                mm(pf.getImageableY()),
                mm(pf.getImageableWidth()),
                mm(pf.getImageableHeight()));

            Line2D line = new Line2D.Double(points(20), points(20), points(100), points(20));
            g2.draw(line);
            return Printable.PAGE_EXISTS;
        } else {
            return Printable.NO_SUCH_PAGE;
        }
    }

    private static double mm(double points) {
        return points * 25.4 / 72.0;
    }

    private static double points(double mm) {
        return mm*72.0/25.4;
    }

    public static void main(String[] args) {
        EventQueue.invokeLater(() -> {
            PrinterJob job = PrinterJob.getPrinterJob();
            Test doc = new Test();
            job.setPrintable(doc);
            if (job.printDialog()) {
                try {
                    job.print();
                } catch (Exception ex) {
                    ex.printStackTrace();
                }
            }
        });
    }
}
 

Neue Themen


Zurück
Oben