当前位置: 首页 > 面试题库 >

Java打印-设置边框的大小

樊琦
2023-03-14
问题内容

我尝试将大小设置为零或在Java中删除打印文档的边框。它始终具有标准的白色边框。

这是我打印JPanel和一些组件的功能:

    public void printComponent(){

          PrinterJob pj = PrinterJob.getPrinterJob();
          pj.setJobName(" Print Component ");

          pj.setPrintable (new Printable() {

            @Override
            public int print(Graphics pg, PageFormat pf, int pageNum) throws PrinterException {
                if (pageNum > 0){
                      return Printable.NO_SUCH_PAGE;
                      }

                      Graphics2D g2 = (Graphics2D) pg;
                      g2.translate(pf.getImageableX(), pf.getImageableY());
                      TournamentView.this.paint(g2);
                      return Printable.PAGE_EXISTS;
            }

          });
          if (pj.printDialog() == false)
          return;

          try {
              PrintRequestAttributeSet aset = new HashPrintRequestAttributeSet();
              aset.add(OrientationRequested.LANDSCAPE);
              PrinterResolution pr = new PrinterResolution(200, 200, PrinterResolution.DPI);
              aset.add(pr);
              pj.print( aset);
          } catch (PrinterException ex) {
                // handle exception
          }
        }

我正在使用Adobe PDF打印机,因为这里没有任何打印机。有什么建议?


问题答案:

使用带有参数的PrinterJob.setPrintable()版本PageFormat

在PageFormat中,设置纸张的可成像区域没有边框(x
= 0,y = 0,width =纸张的宽度,height =纸张的高度)。

您可能想通过PrinterJob.validatePage()来提供该文件,该文件:

返回页面的克隆,其设置已调整为与该PrinterJob的当前打印机兼容。例如,返回的PageFormat可以将其可成像区域调整为适合当前打印机使用的纸张物理区域。

这是一个好主意,因为打印机可能不支持无边界打印,并且它将通过此​​方法来调整您的PageFormat设置,以使设置与打印机兼容。

这是一个示例,该示例在带有删除边框的页面上打印一些文本:

PrinterJob pj = PrinterJob.getPrinterJob();
PageFormat format = pj.getPageFormat(null);
Paper paper = format.getPaper();
//Remove borders from the paper
paper.setImageableArea(0.0, 0.0, format.getPaper().getWidth(), format.getPaper().getHeight());
format.setPaper(paper);

pj.setPrintable(new Printable()
{
    @Override
    public int print(Graphics pg, PageFormat pf, int pageNum)
            throws PrinterException
    {
        if (pageNum > 0)
            return Printable.NO_SUCH_PAGE;

        Graphics2D g2 = (Graphics2D)pg;
        g2.translate(pf.getImageableX(), pf.getImageableY());
        int textHeight = g2.getFontMetrics().getHeight();
        g2.drawString("Good morning, what will be for eating?", 0, textHeight);
        return Printable.PAGE_EXISTS;
    }
}, format);

if (!pj.printDialog())
    return;

pj.print();

在Windows上使用Postscript-> File Printer测试。仍然留有小边框,但这可能是打印机驱动程序的限制。



 类似资料:
  • 打印复合图稿 复合图是一种单页图稿,与您在插图窗口中看到效果的一致 — 换言之,就是直观的打印作业。复合图像还可用于校样整体页面设计、验证图像分辨率以及查找照排机上可能发生的问题(如 PostScript 错误)。 1选择 “文件 ”>“打印 ”。 2从 “打印机 ”菜单中选择一种打印机。若要打印到文件而不是打印机,请选择 “Adobe PostScript® 文件 ”或 “Adobe PDF”。

  • 前端使用vue框架,如何通过ip地址连接打印机,并触发打印呢,并且打印的内容可设置等

  • 问题内容: 我正在寻找有关在打印网页时制作像样的CSS的任何建议/规则/指南。你有什么要提供的吗? 问题答案: 以下是一些一般的打印样式,可用于获得更好的打印效果: 前一个防止在表行内分页 thead样式使thead标记中的所有行针对表所跨越的每个页面重复。 NoPrint是我用来在屏幕上显示某些内容的类,但不是用于打印的类。 而且,我喜欢关闭链接颜色。

  • 当前结果:下边框为灰色 所需结果:所有边框均为白色 问题:CSS中的边框颜色设置为白色

  • setPrintedPortrait(): self 实例 $config = ['path' => './tests']; $excel = new \Vtiful\Kernel\Excel($config); ​ $excel->fileName('printed_portrait.xlsx', 'sheet1') ->setPrintedPortrait() // 设置打印方向为

  • setPrintedLandscape(): self 实例 $config = ['path' => './tests']; $excel = new \Vtiful\Kernel\Excel($config); ​ $excel->fileName('printed_landscape.xlsx', 'sheet1') ->setPrintedLandscape() // 设置打印