我试图将jscrollpane打印到收据热敏打印机,TSP100 / 143 USB。 问题是,如果我点击打印后从页面设置中选择A4,它将打印为好像是A4纸,它将具有A4高度。如果我选择72mm x收据,它将把收据扩展到一个巨大的高度,我必须关闭它,因为它打印像全长的页面。
我的收据可能很短或长达数米,具体取决于用户条目的数量,滚动窗格会展开。 现在,另一个问题是它只会打印滚动窗格的可见部分。
我真的不太了解java的印刷部分,所以你能帮帮我吗? 我真的卡住了,我需要尽快完成这项工作。 我在Android中做到了这一点很好,但在我看来,java在本章中非常混乱。
以下是一些截图和我的打印代码:
https://www.dropbox.com/s/5l8ausvgwpztoui/Screenshot%202013-12-11%2023.25.34.png 我的应用程序的样子截图,为我想做的事情做好准备。
https://www.dropbox.com/s/2fnyigcieqf7eyi/2013-12-11%2023.24.10.jpg 如您所见,它将内容传播为A4纸的高度。
https://www.dropbox.com/s/pppez3dz2s3t709/2013-12-11%2023.32.42.jpg 在这里,您可以看到除了展开它之外,它只显示滚动窗格的可见部分。
打印代码:
private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) {
PrinterJob pjob = PrinterJob.getPrinterJob();
PageFormat preformat = pjob.defaultPage();
preformat.setOrientation(PageFormat.PORTRAIT);
PageFormat postformat = pjob.pageDialog(preformat);
if (preformat != postformat) {
//Set print component
pjob.setPrintable(this, postformat);
if (pjob.printDialog()) {
try {
pjob.print();
} catch (PrinterException ex) {
Logger.getLogger(Test2.class.getName()).log(Level.SEVERE, null, ex);
}
}}
}
@Override
public int print(Graphics g, PageFormat format, int page_index)
throws PrinterException {
if (page_index > 0) {
return Printable.NO_SUCH_PAGE;
}
// get the bounds of the component
Dimension dim = jScrollPane2.getSize();
double cHeight = dim.getHeight();
double cWidth = dim.getWidth();
// get the bounds of the printable area
double pHeight = format.getImageableHeight();
double pWidth = format.getImageableWidth();
double pXStart = format.getImageableX();
double pYStart = format.getImageableY();
double xRatio = pWidth / cWidth;
double yRatio = pHeight / cHeight;
Graphics2D g2 = (Graphics2D) g;
g2.translate(pXStart, pYStart);
g2.scale(xRatio, yRatio);
jScrollPane2.paint(g2);
return Printable.PAGE_EXISTS;
}
我该如何修复它还是有其他方法可以简单地打印到TSP100 / 143 USB吗? JavaPOS真的很奇怪,看起来很复杂,除了旧的,没有更新,无法按你的意愿安排东西。
谢谢,祝你有个美好的一天!
编辑:嗯,现在一切都好起来了。我改变了#39; double yRatio = pHeight / cHeight;'到' double yRatio = pHeight / 0.75;'然后我将打印的视图更改为滚动窗格内的jpanel,现在它一切都很好。它打印即使不可见,如果我选择72xReceipt也不会缩放它。感谢MadProgrammer。你对我搜索的关于这个话题的每一个问题都有所了解,你帮了很多忙!