0

印刷ダイアログを表示せずに、ユーザー定義のプリンターで HTML ファイルを印刷したいと考えています。以下は私が実行したコードですが、IE に表示される実際のページではなく、HTML コードが出力されます。

import java.io.File;
import java.net.MalformedURLException;
import java.net.URL;
import javax.print.DocFlavor;
import javax.print.DocPrintJob;
import javax.print.PrintException;
import javax.print.PrintService;
import javax.print.PrintServiceLookup;
import javax.print.SimpleDoc;
import javax.print.attribute.HashPrintServiceAttributeSet;
import javax.print.attribute.PrintServiceAttributeSet;
import javax.print.attribute.standard.PrinterName;
public class Print {
    public static void main(String[] args) throws PrintException {
        String printerName = "\\\\network-path\\myPrinter";
        String fileName = "C:\\log\\myLog.html";

        PrintServiceAttributeSet printServiceAttributeSet = new HashPrintServiceAttributeSet();
        printServiceAttributeSet.add(new PrinterName(printerName, null));
        PrintService[] printServices = PrintServiceLookup.lookupPrintServices(null, printServiceAttributeSet); // list of printers

        URL url = null;
        try {
            url = (new File(fileName)).toURI().toURL();
        } catch (MalformedURLException e) {
            e.printStackTrace();
        }
        DocFlavor flavor = DocFlavor.URL.AUTOSENSE;
        SimpleDoc doc = new SimpleDoc(url, flavor, null);

        PrintService printService = printServices[0];
        DocPrintJob printJob = printService.createPrintJob();
        if(printService.isDocFlavorSupported(flavor)) {
            try {
                printJob.print(doc, null);
            } catch (PrintException e) {
                e.printStackTrace();
            }
        } else {
            throw new PrintException("HTML flavor not supported on this printer");
        }
    }
}

JEdi​​torPane.print() メソッドを使用して HTML を印刷できます。しかし、これが JEditorPane.print() なしで実行できるかどうか疑問に思っていました。誰か助けてくれませんか?

4

1 に答える 1

1

最初に HTML レンダリング エンジンを使用して HTML をレンダリングし、次に結果のイメージを印刷する必要があります。Java ベースの HTML レンダリング エンジンがいくつかあります。私はそれらを自分で試したことがないので、どれをお勧めするかわかりません。Google はhttp://cssbox.sourceforge.net/をリストの一番上に置きます。

CSSBox には、必要なことを実行できるクラス ImageRenderer があります。「ドキュメントをレンダリングし、結果をビットマップまたはベクター画像に保存します」. ビットマップを取得したら、それを印刷できます。

http://cssbox.sourceforge.net/api/org/fit/cssbox/demo/ImageRenderer.html

于 2015-01-22T14:25:17.860 に答える