【发布时间】:2015-01-27 20:37:28
【问题描述】:
我需要使用 Java 打印到 Epson Endorsement TM-h6000iv 打印机(USB 版本)。但是,我阅读手册并没有希望找到可以帮助的东西。我也毫无希望地改变了打印机偏好!我尝试使用 java 中的 TextPrinter 类进行打印工作的这段 java 代码。
主“打印”功能:
// ----- start printing ------
public int print(Graphics g, PageFormat pf, int pageIndex) {
double ww, hh, x, y;
String s;
pf = PF; // The PF indicates for defaultPage PF= Pj.defaultPage();
GG = (Graphics2D) g;
s = "Serif";
GG.setFont(new Font(s, Font.BOLD, Fy));
GG.setColor(Color.black);
GFont = GG.getFont();
FM = GG.getFontMetrics();
// Insure printing of ONE page
if (pageIndex != 0)
return Printable.NO_SUCH_PAGE;
ww = pf.getImageableWidth();
hh = pf.getImageableHeight();
x = pf.getImageableX();
y = pf.getImageableY();
GG.translate(x, y);
int xpos = 0;
draw(getLine(10), xpos, 5);//getLine to return line of String from 0-9 this line will return "0123456789"
draw(getLine(20), xpos, 6);//"01234567890123456789"
draw(getLine(30), xpos, 7); // etc.
draw(getLine(40), xpos, 8);
int x0 = 0, x1 = (int) ww - 10;
// GG.drawRect(x0, x0, x1, x1);
// draw Rectangular
GG.drawLine(x0, x0, x1, x0);
GG.drawLine(x0, x0, x0, x1);
GG.drawLine(x0, x1, x1, x1);
GG.drawLine(x1, x1, x1, x0);
return Printable.PAGE_EXISTS;
}
但是,预期的输出如下图所示:
但是,实际输出如下图:
其中你可以看到没有边框也没有出现一些字符!我不知道我的代码哪里错了?!
您可以在这里看到这台打印机的主要性能,其中“背书”之一:
对不起这个冗长的解释,但任何帮助将不胜感激,
【问题讨论】:
-
我建议先尝试将此绘制到屏幕上,并且只有当您看到想要看到的内容时,才将其更改为打印。这实际上与打印机无关,而与布局有关。您的矩形没有任何意义,而且您根本没有使用字体度量。在屏幕图形上下文中正确完成绘图后,您可以使用相同的代码进行打印。
-
@RealSkeptic 感谢您的评论,真的我尝试了您的所有建议!问题是打印机不能在几乎 50 毫米的特定区域之外打印!不知道为什么?!!我也毫无希望地改变了打印机布局!这会让我发疯!!
-
不确定你是否理解我所说的。无论打印机做什么,您的绘图都是错误。请先将其绘制到一个窗口上,然后将其固定在窗口上,然后尝试在打印机上打印。如果它不起作用,请编辑您的问题并输入您的新代码。
-
您是否更改了
PageFormat?打印机可能无法打印超出给定范围 -
请问PageFormat是什么意思?规模?还是方向?还是 ImageableArea?我毫无希望地改变所有这些!打印机不打印特定区域!!我不知道的问题在哪里!!!
标签: java epson java-print