我需要使用

java打印一个字符串,所以我喜欢以下解决方案经过google搜索了很多.我做了一些更改来打印字符串而不显示打印对话框.我的问题是虽然这个方法正确地打印了字符串,但它不会像我定义的那样破坏行.请告诉我如何打印带换行符的字符串.

public class PrintBill implements Printable {

private static final String mText = "SHOP MA\n"

+ "----------------------------\n"

+ "Pannampitiya\n"

+ "09-10-2012 harsha no: 001\n"

+ "No Item Qty Price Amount\n"

+ "1 Bread 1 50.00 50.00\n"

+ "____________________________\n";

private static final AttributedString mStyledText = new AttributedString(mText);

static public void main(String args[]) throws PrinterException {

PrinterService ps = new PrinterService();

PrintService pss = ps.getCheckPrintService("Samsung-ML-2850D-2");//get the printer service by printer name

PrinterJob printerJob = PrinterJob.getPrinterJob();

printerJob.setPrintService(pss);

Book book = new Book();

book.append(new PrintBill(),new PageFormat());

printerJob.setPageable(book);

try {

printerJob.print();

System.out.println(printerJob.getPrintService().getName());

System.out.println("Print compleated..");

} catch (PrinterException exception) {

System.err.println("Printing error: " + exception);

exception.printStackTrace();

}

@Override

public int print(Graphics g,PageFormat format,int pageIndex) {

Graphics2D g2d = (Graphics2D) g;

g2d.translate(format.getImageableX(),format.getImageableY());

g2d.setPaint(Color.black);

Point2D.Float pen = new Point2D.Float();

AttributedCharacterIterator charIterator = mStyledText.getIterator();

LineBreakMeasurer measurer = new LineBreakMeasurer(charIterator,g2d.getFontRenderContext());

float wrappingWidth = (float) format.getImageableWidth();

while (measurer.getPosition() < charIterator.getEndIndex()) {

TextLayout layout = measurer.nextLayout(wrappingWidth);

pen.y += layout.getAscent();

float dx = layout.isLeftToRight() ? 0 : (wrappingWidth - layout.getAdvance());

layout.draw(g2d,pen.x + dx,pen.y);

pen.y += layout.getDescent() + layout.getLeading();

}

return Printable.PAGE_EXISTS;

}

}

打印机服务提供课程

public class PrinterService {

public PrintService getCheckPrintService(String printerName) {

PrintService ps = null;

DocFlavor doc_flavor = DocFlavor.STRING.TEXT_PLAIN;

PrintRequestAttributeSet attr_set =

new HashPrintRequestAttributeSet();

attr_set.add(new Copies(1));

attr_set.add(Sides.ONE_SIDED);

PrintService[] service = PrintServiceLookup.lookupPrintServices(doc_flavor,attr_set);

for (int i = 0; i < service.length; i++) {

System.out.println(service[i].getName());

if (service[i].getName().equals(printerName)) {

ps = service[i];

}

}

return ps;

}

}

java中print换行符_如何在java中打印带换行符的字符串相关推荐

  1. python怎么去掉换行符_如何在Python中删除尾部换行符?

    如何在Python中删除尾部换行符? 什么是Perl的chomp函数的Python等价物,如果它是换行符,它会删除字符串的最后一个字符? 26个解决方案 1473 votes 尝试方法lstrip() ...

  2. java 合并两个列表_如何在Java中合并两个列表?

    java 合并两个列表 Merging two lists in Java is often a useful operation. These lists can be ArrayLists or ...

  3. java 查找链表中间元素_如何在Java中一次性查找Java中链表的中间元素

    如何在一次传递中找到LinkedList的中间元素?这是一个 Java 和非Java程序员面试时经常被问到的编程问题.这个问题类似于检查回文或计算阶乘,有时也会要求编写代码.为了回答这个问题,候选人必 ...

  4. java类添加单元测试代码_如何在java中单元测试时跳过一段代码

    如果问题确实是: 如何在Java 然后我给出的答案同意单元测试时,我跳过一段代码.依赖注入,嘲讽框架绝对是真正的单元测试的正确途径. 但是,如果问题是: 使用JUnit(或其他单元测试框架) 然后我想 ...

  5. java注释中添加删除线_如何在Word中添加和删除注释

    java注释中添加删除线 Leaving comments in a Word document is a good way to leave feedback on a piece you're r ...

  6. java中long如何使用_如何在Java中将long转换为int?

    问题 如何在Java中将long转换为int? #1 热门回答(218 赞) 简单类型转换应该这样做: long l = 100000; int i = (int) l; 但请注意,大数(通常大于21 ...

  7. eval在python中是什么意思_如何在Python中使用eval ?

    Python中的 eval是什么? 在Python中,我们有许多内置方法,这些方法对于使Python成为所有人的便捷语言至关重要,而eval是其中一种.eval函数的语法如下: eval(expres ...

  8. python中while语句是_如何在Python中使用while语句[适合初学者]

    while语句是重复循环的语句,那么如何用Python编写,下面Gxl网就带领大家来学习一下Python中使用while语句.[推荐阅读:Python视频教程] 一:什么是while语句?Python ...

  9. linux中设置环境变量_如何在Linux中设置环境变量

    linux中设置环境变量 Wondering how to set environment variables in Linux? This is exactly what we'll be doin ...

最新文章

  1. HPAIC人类蛋白质图谱分类挑战赛金牌经验分享
  2. freeCodeCamp:Find the Longest Word in a String
  3. 【Android 应用开发】Android应用的自动更新模块
  4. 嫌微软要价“太狠” 东莞网吧巨头拒绝付费
  5. 八十五、store数据,actionCreators 与 constants 的拆分和redux-immutable的使用
  6. 潍坊学院计算机系崔玲玲,人工免疫算法在引水工程中的应用.pdf
  7. Java 8:按集合分组
  8. r语言读写word_R语言:在word中插入ggplot
  9. python-变量操作-字符串
  10. Leetcode——1. Two Sum
  11. easyui datagrid中添加右键菜单事件
  12. 软件工程师的技能知识图谱0.1(偏后台方向)
  13. 西门子PLC,STEP7 v5.5安装以及仿真软件Plcsim v5.4 sp5安装
  14. 常见的笔记本电池使用技巧
  15. 修改opencv3.4 VideoCapture dshow模块以支持圆刚cv710等需要配置CrossBar的采集卡
  16. 国际化翻译navigator.language与语种对照表
  17. java爬虫系列(三)——漫画网站爬取实战
  18. C++下的OpenCV中Mat类型存储的图像格式
  19. 298day(点触验证)
  20. element组件---Form

热门文章

  1. 东方通如何查看版本linux命令,东方通tongweb linux安装 Web程序 - 贪吃蛇学院-专业IT技术平台...
  2. 用户变量tmp修改了怎么恢复_恢复ext4文件系统被误删的文件
  3. vivos7和华为p40哪个好 vivos7和华为p40参考配置区别评测
  4. syh计算机术语,计算机科学与工程学院第四届“计e荣耀”年度盛典微采访
  5. 最强5G生态联盟诞生!苏宁天猫携手打造最大5G换新平台
  6. NuGet获取的包的版权问题
  7. java将固定日期后推几天的功能实现
  8. 什么是锚点?锚点有什么作用?
  9. java面向对象的设计思想,java设计形式之面向对象的思想(think in OO(Object Oriented))...
  10. 软件测试之安装和卸载测试用例设计