栏目分类:
子分类:
返回
终身学习网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
终身学习网 > IT > 软件开发 > 后端开发 > .Net

java 计算打印纸大小

.Net 更新时间:发布时间: 百科书网 趣学号

打印设计为每英寸像素.基本打印API使用DPI为72.

您需要相应地转换测量值…

double paperWidth = 8 * 72d;

double paperHeight = 4 * 72d;

double margin = 1 * 72d;

用例子更新

g2d.setClip(0,0,(int)pageFormat.getImageableWidth(),(int)pageFormat.getImageableHeight());是不明智的,危险的,通常,不是必需的,除此之外,你使用了错误的宽度和高度值.可成像参数考虑了边距,但是您没有翻译图形,这将更有可能切割您必须打印到的区域的底部左侧部分…

我只是避免使用剪辑

public class TestPrinting01 {

public static void main(String[] args) {

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,

margin,

width - (margin * 2),

height - (margin * 2));

System.out.println("Before- " + dump(paper));

pf.setOrientation(PageFormat.LANDSCAPE);

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();

}

}

}

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;

// Be careful of clips...

g2d.translate((int) pageFormat.getImageableX(), (int) pageFormat.getImageableY());

double width = pageFormat.getImageableWidth();

double height = pageFormat.getImageableHeight();

g2d.drawRect(0, 0, (int)pageFormat.getImageableWidth() - 1, (int)pageFormat.getImageableHeight() - 1);

FontMetrics fm = g2d.getFontMetrics();

String text = "top";

g2d.drawString(text, 0, fm.getAscent());

text = "bottom";

double x = width - fm.stringWidth(text);

double y = (height - fm.getHeight()) + fm.getAscent();

g2d.drawString(text, (int)x, (int)y);

return Printable.PAGE_EXISTS;

}

}

}

更新

打印组件时,您将对其布局负责.

public class TestPrinting01 {

private static JEditorPane editor;

public static void main(String[] args) {

try {

editor = new JEditorPane();

editor.setPage(new File("C:/hold/search.htm").toURI().toURL());

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,

margin,

width - (margin * 2),

height - (margin * 2));

System.out.println("Before- " + dump(paper));

pf.setOrientation(PageFormat.LANDSCAPE);

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;

// Be careful of clips...

// g2d.setClip(0, 0, (int) pageFormat.getWidth(), (int) pageFormat.getHeight());

g2d.translate((int) pageFormat.getImageableX(), (int) pageFormat.getImageableY());

double width = pageFormat.getImageableWidth();

double height = pageFormat.getImageableHeight();

System.out.println("width = " + width);

System.out.println("height = " + height);

editor.setLocation(0, 0);

editor.setSize((int)width, (int)height);

editor.printAll(g2d);

g2d.setColor(Color.BLACK);

g2d.draw(new Rectangle2D.Double(0, 0, width, height));

return Printable.PAGE_EXISTS;

}

}

}

转载请注明:文章转载自 www.051e.com
本文地址:http://www.051e.com/it/985093.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 ©2023-2025 051e.com

ICP备案号:京ICP备12030808号