Как я могу напечатать бумагу нестандартного размера (отметки 8 «х 4»)?

Я пытаюсь напечатать нестандартный размер бумаги из апплета Java. Я установил размер бумаги, но он игнорируется.

Я также попытался использовать метод book, так как видел кое-что об этом, помогающем заставить его работать, но когда я использую это, он просто печатает пустую страницу и все еще, кажется, о A4 (яхочу распечатать чеки, которые, очевидно, намного меньше (8 " х 4 ")).

Я пытаюсь напечатать HTML из JEditorPane, если это имеет какое-либо значение.

Если у вас есть идеи, я был бы очень признателен, яЯ срываю свои волосы с этим.

Я должен также добавить, что я очень начинающий, когда дело доходит до Java.

Вот что у меня так далеко:

Обновлено: Теперь я правильно понял размер страницы, но могуКажется, я не получил HTML-страницуm загружается, чтобы соответствовать или соответствовать размеру страницы.

Обновить: Теперь я просто могуЗапустите апплет в браузере. Он работает от затмения, а не браузера. Мне также нужно будет передать URL из параметра.

Вот тег HTML апплета I 'используя и обновляя код Java:



Printing Cheque








package com.yunatech.pns.chequeprint;

import java.applet.Applet;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.print.Book;
import java.awt.print.PageFormat;
import java.awt.print.Paper;
import java.awt.print.Printable;
import java.awt.print.PrinterException;
import java.awt.print.PrinterJob;
import javax.swing.JEditorPane;

public class HTMLPrinter extends Applet {

    /**
     * 
     */
    private static final long serialVersionUID = 8065834484717197790L;
    private static JEditorPane editor;

    public HTMLPrinter() {


        try {

            editor = new JEditorPane();
            editor.setPage("http://localhost/print_test/test.html");

            PrinterJob pj = PrinterJob.getPrinterJob();
            if (pj.printDialog()) {
                PageFormat pf = pj.defaultPage();
                Paper paper = pf.getPaper();
                double width = 8d * 72d;
                double height = 4d * 72d;
                double margin = 1d * 72d;
                paper.setSize(width, height);
                paper.setImageableArea(
                        margin,
                        0,
                        width - (margin * 2),
                        height);
                System.out.println("Before- " + dump(paper));
                pf.setOrientation(PageFormat.PORTRAIT);
                pf.setPaper(paper);
                System.out.println("After- " + dump(paper));
                System.out.println("After- " + dump(pf));
                dump(pf);
                PageFormat validatePage = pj.validatePage(pf);
                System.out.println("Valid- " + dump(validatePage));

                Book pBook = new Book();
                pBook.append(new Page(), pf);
                pj.setPageable(pBook);

                try {
                    pj.print();
                } catch (PrinterException ex) {
                    ex.printStackTrace();
                }
            }

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

    protected static String dump(Paper paper) {
        StringBuilder sb = new StringBuilder(64);
        sb.append(paper.getWidth()).append("x").append(paper.getHeight())
                .append("/").append(paper.getImageableX()).append("x").
                append(paper.getImageableY()).append(" - ").append(paper
                .getImageableWidth()).append("x").append(paper.getImageableHeight());
        return sb.toString();
    }

    protected static String dump(PageFormat pf) {
        Paper paper = pf.getPaper();
        return dump(paper);
    }

    public static class Page implements Printable {

        public int print(Graphics graphics, PageFormat pageFormat, int pageIndex) {
            if (pageIndex >= 1) return Printable.NO_SUCH_PAGE;

            Graphics2D g2d = (Graphics2D)graphics;
            g2d.translate((int)pageFormat.getImageableX(), (int)pageFormat.getImageableY());

            editor.setSize((int)pageFormat.getImageableWidth(), (int)pageFormat.getImageableHeight());
            editor.print(g2d);

            return Printable.PAGE_EXISTS;
        }
    }
}

Заранее благодарим за любую помощь, которую вы можете предложить.

Ответы на вопрос(1)

Ваш ответ на вопрос