创建打印HTML页面的预览

时间:2013-05-31 15:32:46

标签: java swing html-rendering

我想创建一个HTML的小预览,它将在Swing应用程序中打印。基本上,它会以PageFormat类的大小(即可打印页面的大小)显示页面,但大小为页面大小的1/4。

到目前为止,我已经尝试了以下内容:

    //Create components
    JDialog frame = new JDialog(new JFrame("Test"), "Test", true);
    JPanel panel = new JPanel(){
    @Override
    public void paintComponent(Graphics g) {
        Graphics2D g2 = (Graphics2D) g;
        g2.scale(0.5,0.5);
        super.paintComponent(g2);
    }};  
    PageFormat pf = new PageFormat();
    Dimension dimension = new Dimension();
    dimension.setSize(pf.getImageableWidth(), pf.getImageableHeight());
    panel.setPreferredSize(dimension);

    panel.add(new JEditorPane("text/html", "<i>Testing, testing, one two three</i>"));

    //Finalize everything
    frame.setContentPane(panel);
    frame.pack();
    frame.setVisible(true);

不幸的是,这会创建一个整页大小的JPanel,但会将JEditorPane缩放到屏幕的左上角,因为JPanel的大小似乎也不会缩放。此外,如果您单击JEditorPane,它将以完整大小显示。我怎样才能得到我想要的效果?

此外,这不一定是一个可编辑的HTML页面,所以如果有一些聪明的解决方案不涉及直接显示HTML,我愿意接受它。

2 个答案:

答案 0 :(得分:2)

http://java-sl.com/JEditorPanePrinter.html您可以使用该代码查看如何实施预览。

或者,yu可以定义通过所需宽度/高度的BufferedImage&gt;使用图片的getGraphics()并应用您需要的AffineTransform(最简单的缩放)。然后只需拨打yourJEditorPane.paint(g),其中g是图片的Graphics

答案 1 :(得分:0)

尝试使用setmaximumsize而不是分配,而不是使用setpreferredsize() 直接pf.getImageableWidth(),pf.getImageableHeight(),将其分配给某个int并尝试打印它。然后根据所需的大小更改int