-
JAVA打印文件0
我的是JAVAWEB项目,页面传给后台一个fileID,然后获取文件完整路径。怎样在后台直接打印这个文件。不用跳出那个预览框。网上找了一段程序,但好像不行。求大神赐教。
String fileId=request.getParameter("fileId");
File file = (File) this.queryForObject(File.class, fileId);
String dir = request.getSession(true).getServletContext()
.getRealPath("\\document");
FileInputStream textStream = null;
try {
textStream = new FileInputStream(dir+"\\"+file.getFileCode()+"."+file.getFileType());
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
String printStr = "打印测试内容";// 获取需要打印的目标文本
if (textStream != null) // 当打印内容不为空时
{
// 指定打印输出格式
DocFlavor flavor = DocFlavor.INPUT_STREAM.PDF;//SERVICE_FORMATTED.PRINTABLE
// 定位默认的打印服务
PrintService printService = PrintServiceLookup.lookupDefaultPrintService();
// 创建打印作业
DocPrintJob job = printService.createPrintJob();
// 设置打印属性
PrintRequestAttributeSet pras = new HashPrintRequestAttributeSet();
// 设置纸张大小,也可以新建MediaSize类来自定义大小
pras.add(MediaSizeName.ISO_A4);
DocAttributeSet das = new HashDocAttributeSet();
// 指定打印内容
Doc doc = new SimpleDoc(textStream, flavor, das);
// 不显示打印对话框,直接进行打印工作
try {
job.print(doc, pras); // 进行每一页的具体打印操作
} catch (PrintException pe) {
pe.printStackTrace();
}
} else {
// 如果打印内容为空时,提示用户打印将取消
JOptionPane.showConfirmDialog(null,
"Sorry, Printer Job is Empty, Print Cancelled!",
"Empty", JOptionPane.DEFAULT_OPTION,
JOptionPane.WARNING_MESSAGE);
}2014年11月11日 15:37
3个答案 按时间排序 按投票排序
-
打印MSOFFIC系统的文档可以使用jacob
jacob可以使java与MS平台com对接,以对象的形式调用com组件
注意使用jacob.dll时,要把dll放到path或classpath设置的路径下import java.io.File; import com.jacob.activeX.ActiveXComponent; import com.jacob.com.ComThread; import com.jacob.com.Dispatch; import com.jacob.com.Variant; public class JacobPrint { public static void main(String[] args){ JacobPrint.printOfficeFile(new File("D:/文档.docx")); } public static boolean printOfficeFile(File f) { if (f != null && f.exists()) { String fileNameString = f.getName(); String postfixString = fileNameString.substring(fileNameString.lastIndexOf(".")+1); if(postfixString.equalsIgnoreCase("doc") || postfixString.equalsIgnoreCase("docx")) { //初始化当前java线程作为单线程套间 //支持STA的COM对象只能在创建它的线程里被使用,其它线程如果再创建它就会失败。 ComThread.InitSTA(); //ActiveXComponent是对Dispatch对象高级别的封装, //directly map to Microsoft C API including the first parameter //that is almost always the target of the message ActiveXComponent wd = new ActiveXComponent("Word.Application");//初始化word应用程序 try { //每个Dispatch指向一些微软windows平台的数据结构 //设置wd的属性,操作word时是显示执行还是隐式执行 true为显示执行 false为隐式 wd.setProperty("Visible", new Variant(false)); //获取所有文档对象,当然这里还没设置文档 Dispatch documents = wd.getProperty("Documents").toDispatch(); //载入文档,指定文档路径 Dispatch doc = Dispatch.invoke(documents, "Open", Dispatch.Method, new Object[] { f.getAbsolutePath() , new Variant(false), new Variant(false)}, new int[1]) .toDispatch(); // 开始打印 if (doc != null) { Dispatch.call(doc, "PrintOut"); // 增加以下三行代码解决文件无法删除bug Dispatch.call(doc, "save"); Dispatch.call(doc, "Close", new Variant(true)); doc = null; } wd.invoke("Quit", new Variant[] {}); wd = null; return true; } catch (Exception e) { e.printStackTrace(); return false; } finally { // 始终释放资源 ComThread.Release(); } } else { return false; } } else { return false; } } }
2014年11月13日 10:44
-
使用你的代码测试通过,不会出现预览对话框,可以检查下打印设置或其他非代码方向的问题
import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import javax.print.Doc; import javax.print.DocFlavor; import javax.print.DocPrintJob; import javax.print.PrintException; import javax.print.PrintService; import javax.print.PrintServiceLookup; import javax.print.SimpleDoc; import javax.print.attribute.DocAttributeSet; import javax.print.attribute.HashDocAttributeSet; import javax.print.attribute.HashPrintRequestAttributeSet; import javax.print.attribute.PrintRequestAttributeSet; import javax.print.attribute.standard.MediaSizeName; import javax.swing.JOptionPane; public class DocPrint { public static void main(String[] args){ DocPrint dp = new DocPrint(); dp.printFile(); } public void printFile(){ FileInputStream textStream = null; try { textStream = new FileInputStream(new File("D:/SGLZ3/212ip.png")); } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } if (textStream != null) // 当打印内容不为空时 { // 指定打印输出格式 DocFlavor flavor = DocFlavor.INPUT_STREAM.PNG;//SERVICE_FORMATTED.PRINTABLE // 定位默认的打印服务 PrintService printService = PrintServiceLookup.lookupDefaultPrintService(); // 创建打印作业 DocPrintJob job = printService.createPrintJob(); // 设置打印属性 PrintRequestAttributeSet pras = new HashPrintRequestAttributeSet(); // 设置纸张大小,也可以新建MediaSize类来自定义大小 pras.add(MediaSizeName.ISO_A4); DocAttributeSet das = new HashDocAttributeSet(); // 指定打印内容 Doc doc = new SimpleDoc(textStream, flavor, das); // 不显示打印对话框,直接进行打印工作 try { job.print(doc, pras); // 进行每一页的具体打印操作 } catch (PrintException pe) { pe.printStackTrace(); } } else { // 如果打印内容为空时,提示用户打印将取消 JOptionPane.showConfirmDialog(null, "Sorry, Printer Job is Empty, Print Cancelled!", "Empty", JOptionPane.DEFAULT_OPTION, JOptionPane.WARNING_MESSAGE); } } }
2014年11月11日 16:48
相关推荐
输入一个路径,如果该路径是一个文件,打印文件,否则如果是目录, 打印目录名,并且打印该目录下所有文件
### Java打印PDF文件及批量打印实现 #### 一、引言 在企业级应用开发中,经常需要处理各种文档操作,其中包括PDF文件的打印。Java作为一种广泛应用的企业级开发语言,提供了多种方式来实现这一功能。本文将详细...
`jatoolsP.cab`可能是一个包含Java打印工具包或者库的压缩文件,`print.htm`则可能是关于如何使用该组件的文档或者示例代码,通常HTML格式的文档会详细解释如何配置和调用打印服务。 在使用Java Print Service API...
"JAVA打印机插件java打印失败打印机工具"这个标题暗示了一个问题:在尝试使用Java进行打印时遇到了失败,可能涉及到打印机插件或者Java环境的问题。下面将详细讨论Java打印机制,以及如何解决可能出现的打印失败问题...
Java打印PDF文件是一种常见的任务,尤其在开发报告生成、文档转换或者数据可视化等场景中。在Java中,我们可以借助第三方库来实现这个功能,其中最常用的就是iText库。iText是一个强大的PDF处理库,它提供了创建、...
java 如何调用系统打印机打印文件,也是从别人借鉴过来,免费的
在IT行业中,尤其是在文档处理领域,Java是一种广泛使用的编程语言,可以实现各种复杂的功能,如动态生成模板Word文件,将其转换为PDF,并进行预览打印。以下是对标题、描述和标签所涉及知识点的详细说明: 1. **...
本话题主要关注如何在Java环境下实现Web批量打印功能。通过提供的信息,我们可以推测这是一个利用某种技术将HTML内容转换为PDF,进而进行打印的过程。 首先,我们需要理解批量打印的基本概念。批量打印是指一次性...
Java打印和定位打印是Java开发中的重要组成部分,主要用于在控制台、文件或图形用户界面(GUI)上输出信息。在Java中,打印功能主要通过`System.out.println()`方法实现,而定位打印则涉及到更复杂的文本格式化技巧...
Java打印Excel技术主要涉及到Java应用程序如何与打印机进行交互,以便将Excel文档的内容输出到纸质媒介上。在这个过程中,一个常见的第三方库是Jacob(Java COM Bridge),它为Java提供了与COM组件交互的能力,使得...
根据提供的文件信息,本文将详细解析与Java Web打印、Java PDF打印相关的技术点及实现方法。主要内容包括: 1. Java Web打印的基本概念。 2. 使用Struts框架进行Web页面开发的相关知识点。 3. Java PDF打印的技术...
在Java开发中,Web打印和PDF打印是两个重要的技术领域,尤其在企业级应用中,它们经常被用来生成报告、发票、合同等文档。本文将深入探讨这些技术,并结合项目描述,提供一个详尽的解释。 首先,让我们从Java Web...
### Java打印Excel知识点详解 #### 一、概述 在日常工作中,经常需要将Java程序中的数据导出到Excel文件中,以便于进一步分析或与其他系统共享。Apache POI是Java领域内一个非常强大的用于处理Microsoft Office...
JAVA的Web打印方式详解 JAVA的Web打印方式是指在Web应用程序中实现打印功能的各种方法和技术。本文将主要介绍使用PageOffice、POI、jacob、html打印等方式来实现Web打印。 一、使用浏览器自带的打印功能直接打印 ...
- 提供的压缩包子文件名为"javafx-print",可能意味着JavaFX提供了一种更现代且直观的方式来处理打印。JavaFX的`Printer`类提供了与`java.awt.print`类似的API,但是它更易于使用,尤其是当你已经使用JavaFX构建UI...
在Java编程语言中,文件读取是常见的任务,可以用于处理各种类型的数据,如文本、图像、音频等。本文将详细介绍Java中四种不同的文件读取方法:按字节读取、按字符读取、按行读取以及随机读取。 1. **按字节读取...
在本文中,我们将深入探讨如何使用Java实现二维码批量打印,主要基于给定的标题"java 实现二维码批量打印"和描述中的技术环境。首先,我们要理解二维码(Quick Response Code)是一种二维条码,能存储大量数据,常...
用java 打印目录下所有文件名称 包括子目录, 默认目录 "C:/" 打印完 目录列表 输出在 选择的根目录的 "path/TestResultList.txt" 文件夹里。
在Java编程环境中,进行小票打印时,我们经常会遇到需要自定义小票纸张大小和分辨率的需求。这通常涉及到对打印机API的深入理解和利用。以下将详细解释如何实现这一目标。 首先,Java提供了`java.awt.print`包,该...
在实际应用中,开发者可能需要先使用Apache POI等库读取并解析`.docx`文件,然后将解析得到的数据转换为Java打印API可以理解的格式,再进行打印操作。 总结来说,Java打印API是一个强大的工具,它允许开发者集成...