日期:2014-05-20  浏览次数:20880 次

java 程序打印中文文件出现乱码、、且格式不对
下面是我的打印方法:
public void doPrint() {
if(null!=tabPane&&tabPane.getSelectedIndex()!=-1){
//构建打印请求属性集
PrintRequestAttributeSet pras=new HashPrintRequestAttributeSet();
//设置打印格式,这里设置为自动匹配
DocFlavor docF=DocFlavor.INPUT_STREAM.AUTOSENSE;
//查询所有可用的打印服务
PrintService[] printService=PrintServiceLookup.lookupPrintServices(docF, pras);
if(null==printService||printService.length<=0){
JOptionPane.showMessageDialog(null, "没有可使用的打印服务....");
return;
}
//定位默认的打印服务
PrintService defaultPrintService=PrintServiceLookup.lookupDefaultPrintService();
//显示打印对话框
PrintService service=ServiceUI.printDialog(null, 400, 400, printService, defaultPrintService, docF, pras);
if(null!=service){
DocPrintJob printJob=service.createPrintJob();
String filePath=tabPane.getTitleAt(tabPane.getSelectedIndex());

File file=new File(filePath);
if (null != file && file.exists()) {

// try {
// FileInputStream fis=new FileInputStream(file);
// InputStreamReader in=new InputStreamReader(fis,"GBK");
// DocAttributeSet das=new HashDocAttributeSet();
// Doc doc=new SimpleDoc(in,docF,das);
// printJob.print(doc, pras);
// } catch (Exception e1) {
// JOptionPane.showMessageDialog(null, "打印出错....");
// e1.printStackTrace();
// return;
// }
try {
FileInputStream fis = new FileInputStream(file);
// FileReader fis=new FileReader(file);
DocAttributeSet das = new HashDocAttributeSet();
Doc doc = new SimpleDoc(fis, docF, das);
try {
printJob.print(doc, pras);
} catch (PrintException e) {
JOptionPane.showMessageDialog(null, "打印出错....");
e.printStackTrace();
return;
}
} catch (FileNotFoundException e) {
JOptionPane.showMessageDialog(null, "文件找不到....");
e.printStackTrace();
return;
}

} else {
JOptionPane.showMessageDialog(null, "请先保存文件....");
return;
}

}
}


}

求大虾们解决,若文件中全部是英文就打印正确,但是打印出来的格式不是和文本编辑器里看见的一样,就是该
换行的没有,缩进也不对。
如:文件a.txt中内容:
dasdaslkdas
dvsadvasdvv
svsdvsdvsdv
应该打印成:
dasdaslkdas
dvsadvasdvv
svsdvsdvsdv
可却打印出来了:
dasdaslkdas
  dvsadvasdvv
  svsdvsdvsdv

这样。求大虾们帮忙啦。。。。。


------解决方案--------------------
转为图片再打印

参照人家怎么写
http://topic.csdn.net/u/20081130/00/8D3D2535-E2AD-4DA9-948F-44CCC7A25EE5.html#r_54032801
http://topic.csdn.net/t/20030815/09/2148624.html#r_14596546
http://topic.csdn.net/t/20040107/17/2642896.html#r_18594292