java - 打印页面宽度大于高度的 jpanel 数据

标签 java swing printing desktop-application jpanel

在我的桌面应用程序中,我需要在点阵打印机上打印 jPanel 数据,其中纸张尺寸应为 10x6。在java中我们有一个限制,宽度不能大于高度。但我怎样才能突破这个限制来完成我的任务呢?如果我将页面格式设置为高度小于宽度,则会将其视为 A4 纸并从纸张底部送入。

如果我没有指定页面格式,它打印得很好,但有很多边距(上、下、左、右)。我无法更改边距。如果仅设置边距,则会将页面视为 A4 并在底部提供提要。

我需要在预打印页上打印数据并对齐。还有其他方法可以做到这一点吗?我可以使用横向,如果可以的话如何控制文本流(从下到上 - X 轴)。

这是我的代码

PrinterJob job = PrinterJob.getPrinterJob();
PageFormat pageFormat = job.defaultPage();
pageFormat.setOrientation(PageFormat.LANDSCAPE);
job.setPrintable(this,pageFormat);
try {
          job.print();
     } catch (PrinterException ex) {
      System.out.println(ex);
     }

绘制方法

    public int print(Graphics g, PageFormat pf, int page) throws PrinterException {

        if (page > 0) { 
            return NO_SUCH_PAGE;
        }
        g.setFont(new java.awt.Font("Sans Serif", java.awt.Font.PLAIN, 10));
        Graphics2D g2d = (Graphics2D)g;
        AffineTransform old = g2d.getTransform();
        if (pf.getOrientation() == PageFormat.LANDSCAPE) {
            g2d.rotate( -Math.PI / 2, 0, 0);
            g2d.translate( -pf.getImageableWidth(), 0);
        }
        else {
            g2d.rotate(Math.PI / 2, 0, 0);
            g2d.translate(0, -pf.getImageableHeight());
        }
        jPanel1.printAll(g2d);
        g2d.setTransform(old);
        //g2d.translate(70, 30);
        return PAGE_EXISTS;
    }

提前致谢。

最佳答案

将 PageFormat 的方向设置为横向并旋转内容。在 print() 方法中旋转和平移内容。

Graphics2D g2d = (Graphics2D) g;
AffineTransform old = g2d.getTransform();
if (contentOrientation == ORIENTATION_DOWN_UP) {
    g2d.rotate( -Math.PI / 2, 0, 0);
    g2d.translate( -w, 0);
}
else {
    g2d.rotate(Math.PI / 2, 0, 0);
    g2d.translate(0, -h);
}
//paint all your content here
g2d.setTransform(old);

关于java - 打印页面宽度大于高度的 jpanel 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8410913/

相关文章:

Python 自动完成用户输入

java - Excel Apache POI 打印问题

java - 在 Java 中生成空格

java - 如何将音频文件播放到麦克风输入

java - JFrame:单击按钮时如何隐藏主窗口?

java - 在不同的类中使用 ActionListener

java - 如何在bin文件的字节数组[]中搜索字节序列?

javascript - vue js中如何获取组件的html内容

java - 继承、动态绑定(bind)、父类(super class)中的构造函数。 java

java - Java GUI 中单选按钮的对齐方式