0 0

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个答案 按时间排序 按投票排序

0 0



如何自定义大小,MediaSize只能x<y

2016年3月25日 16:24
0 0

打印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
0 0

使用你的代码测试通过,不会出现预览对话框,可以检查下打印设置或其他非代码方向的问题


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打印文件及目录源码

    输入一个路径,如果该路径是一个文件,打印文件,否则如果是目录, 打印目录名,并且打印该目录下所有文件

    java 打印pdf文件 也可批量打印

    ### Java打印PDF文件及批量打印实现 #### 一、引言 在企业级应用开发中,经常需要处理各种文档操作,其中包括PDF文件的打印。Java作为一种广泛应用的企业级开发语言,提供了多种方式来实现这一功能。本文将详细...

    java打印组件非常好用的java打印组件

    `jatoolsP.cab`可能是一个包含Java打印工具包或者库的压缩文件,`print.htm`则可能是关于如何使用该组件的文档或者示例代码,通常HTML格式的文档会详细解释如何配置和调用打印服务。 在使用Java Print Service API...

    JAVA打印机插件java打印失败打印机工具

    "JAVA打印机插件java打印失败打印机工具"这个标题暗示了一个问题:在尝试使用Java进行打印时遇到了失败,可能涉及到打印机插件或者Java环境的问题。下面将详细讨论Java打印机制,以及如何解决可能出现的打印失败问题...

    java打印pdf文件

    Java打印PDF文件是一种常见的任务,尤其在开发报告生成、文档转换或者数据可视化等场景中。在Java中,我们可以借助第三方库来实现这个功能,其中最常用的就是iText库。iText是一个强大的PDF处理库,它提供了创建、...

    java 如何调用系统打印机打印文件

    java 如何调用系统打印机打印文件,也是从别人借鉴过来,免费的

    java实现word预览打印

    在IT行业中,尤其是在文档处理领域,Java是一种广泛使用的编程语言,可以实现各种复杂的功能,如动态生成模板Word文件,将其转换为PDF,并进行预览打印。以下是对标题、描述和标签所涉及知识点的详细说明: 1. **...

    批量打印(java)

    本话题主要关注如何在Java环境下实现Web批量打印功能。通过提供的信息,我们可以推测这是一个利用某种技术将HTML内容转换为PDF,进而进行打印的过程。 首先,我们需要理解批量打印的基本概念。批量打印是指一次性...

    java打印 java定位打印

    Java打印和定位打印是Java开发中的重要组成部分,主要用于在控制台、文件或图形用户界面(GUI)上输出信息。在Java中,打印功能主要通过`System.out.println()`方法实现,而定位打印则涉及到更复杂的文本格式化技巧...

    java打印Excel(与打印机通信、jacob)

    Java打印Excel技术主要涉及到Java应用程序如何与打印机进行交互,以便将Excel文档的内容输出到纸质媒介上。在这个过程中,一个常见的第三方库是Jacob(Java COM Bridge),它为Java提供了与COM组件交互的能力,使得...

    Java web 打印,Java pdf打印,Java打印

    根据提供的文件信息,本文将详细解析与Java Web打印、Java PDF打印相关的技术点及实现方法。主要内容包括: 1. Java Web打印的基本概念。 2. 使用Struts框架进行Web页面开发的相关知识点。 3. Java PDF打印的技术...

    Java web 打印,Java pdf打印,Java 打印

    在Java开发中,Web打印和PDF打印是两个重要的技术领域,尤其在企业级应用中,它们经常被用来生成报告、发票、合同等文档。本文将深入探讨这些技术,并结合项目描述,提供一个详尽的解释。 首先,让我们从Java Web...

    java 打印excel

    ### Java打印Excel知识点详解 #### 一、概述 在日常工作中,经常需要将Java程序中的数据导出到Excel文件中,以便于进一步分析或与其他系统共享。Apache POI是Java领域内一个非常强大的用于处理Microsoft Office...

    JAVA的Web打印方式(PageOffice、POI、jacob,html打印等)

    JAVA的Web打印方式详解 JAVA的Web打印方式是指在Web应用程序中实现打印功能的各种方法和技术。本文将主要介绍使用PageOffice、POI、jacob、html打印等方式来实现Web打印。 一、使用浏览器自带的打印功能直接打印 ...

    java打印html

    - 提供的压缩包子文件名为"javafx-print",可能意味着JavaFX提供了一种更现代且直观的方式来处理打印。JavaFX的`Printer`类提供了与`java.awt.print`类似的API,但是它更易于使用,尤其是当你已经使用JavaFX构建UI...

    java 读取文件 文件读取操作

    在Java编程语言中,文件读取是常见的任务,可以用于处理各种类型的数据,如文本、图像、音频等。本文将详细介绍Java中四种不同的文件读取方法:按字节读取、按字符读取、按行读取以及随机读取。 1. **按字节读取...

    java 实现二维码批量打印

    在本文中,我们将深入探讨如何使用Java实现二维码批量打印,主要基于给定的标题"java 实现二维码批量打印"和描述中的技术环境。首先,我们要理解二维码(Quick Response Code)是一种二维条码,能存储大量数据,常...

    java 打印目录下所有文件名称 包括文件夹下的子文件夹

    用java 打印目录下所有文件名称 包括子目录, 默认目录 "C:/" 打印完 目录列表 输出在 选择的根目录的 "path/TestResultList.txt" 文件夹里。

    Java打印小票自定义小票纸张大小,分辨率

    在Java编程环境中,进行小票打印时,我们经常会遇到需要自定义小票纸张大小和分辨率的需求。这通常涉及到对打印机API的深入理解和利用。以下将详细解释如何实现这一目标。 首先,Java提供了`java.awt.print`包,该...

    java打印API详解

    在实际应用中,开发者可能需要先使用Apache POI等库读取并解析`.docx`文件,然后将解析得到的数据转换为Java打印API可以理解的格式,再进行打印操作。 总结来说,Java打印API是一个强大的工具,它允许开发者集成...

Global site tag (gtag.js) - Google Analytics