java调用本地打印机实现打印PDF文件,怎么做?

不务正业程序熊 2014-10-27 10:48:31
使用java语言进行多个PDF文件的打印,需要给打印机设置参数,如打印机名称,图纸尺寸等
...全文
9528 14 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
Runtime.getRuntime().exec( "cmd.exe /C start acrord32 /h /p " + "D:\\xxxxx.pdf");这个是调用第三方软件来实现打印,我不知道用户安装的是哪款啊,所以不可行;本地打印PDF文件是可以的,试过
tony4geek 2014-10-27
  • 打赏
  • 举报
回复
你先尝试打印一个pdf 文件看看。
tony4geek 2014-10-27
  • 打赏
  • 举报
回复
我做过打印pdf 是可以的。就那些api ,那些方法。 Runtime.getRuntime().exec( "cmd.exe /C start acrord32 /h /p " + "D:\\xxxxx.pdf"); 和 DocPrintJob  都可以。你看打印机接受到任务没? 再看看你本地打印机设置好没? 你本地代码运行的时候会有提示信息发送打印任务等信息的。
  • 打赏
  • 举报
回复
现在问题是已经把PDF文件发送到打印机队列了,但是打印机不启动啊
  • 打赏
  • 举报
回复
全是一个套路,都是那些词语,我想要正真能执行的代码
  • 打赏
  • 举报
回复
您上面那些东西,我也看了好多了,不行啊
tony4geek 2014-10-27
  • 打赏
  • 举报
回复
那你把打印机列出来。让用户选择打印机啊。看api/
  • 打赏
  • 举报
回复

public class PrintPdf {
	public static void main(String[] args) {
		// System.out.println("Value:"+test());
		// 打印pdf的一个方法,首先安装下PDFCreator软件
		try {
			printFile("D:\\20140908_图纸打印\\20140908_图纸\\PDF文件\\");
		} catch (Exception e) {
			System.out.println("打印文件异常:" + e.getMessage());
			e.printStackTrace();
		}
	}

	public static void printFile(String path) throws Exception {
		File file = new File(path);
		File[] fies = file.listFiles();
		for (File f : fies) {
			System.out.println("file " + f.getName());
			String fileExt = f.getName().substring(
					f.getName().indexOf(".") + 1, f.getName().length());
			if ("pdf".equalsIgnoreCase(fileExt)) {
				String filepath = path + File.separator + f.getName();
				File pdfFile = new File(filepath);
				// 构建打印请求属性集
				PrintRequestAttributeSet pras = new HashPrintRequestAttributeSet();
				pras.add(new JobName(f.getName(), null));
				
				HashAttributeSet has = new HashAttributeSet();
//				has.add(new PrinterName("Officejet J5500 series", null)); // 添加打印机名称

				// 设置打印格式,因为未确定文件类型,这里选择AUTOSENSE
				DocFlavor flavor = DocFlavor.INPUT_STREAM.AUTOSENSE;
				
				// 查找所有的可用打印服务
				PrintService printService[] = PrintServiceLookup
						.lookupPrintServices(flavor, has);

				if (printService[1] != null) {
					//获得打印服务的文档打印作业
					DocPrintJob job = printService[1].createPrintJob(); // 创建打印任务
					
					DocAttributeSet das=new HashDocAttributeSet();				
					
					InputStream fis = new FileInputStream(pdfFile); // 构造待打印的文件流
					Doc doc = new SimpleDoc(fis, flavor, das); // 建立打印文件格式
					job.print(doc, pras); // 进行文件的打印
				}
			}
		}
	}
}
  • 打赏
  • 举报
回复
我需要传参数,不是调用默认打印机,用户可以选择的
tony4geek 2014-10-27
  • 打赏
  • 举报
回复
tony4geek 2014-10-27
  • 打赏
  • 举报
回复
tony4geek 2014-10-27
  • 打赏
  • 举报
回复
调用默认的打印机, Runtime.getRuntime().exec( "cmd.exe /C start acrord32 /h /p " + "D:\\xxxxx.pdf");
  • 打赏
  • 举报
回复

如图,当我点击打印按钮时,就从指定路径读取PDF文件,并打印
tony4geek 2014-10-27
  • 打赏
  • 举报
回复
acrord32.exe是Adobe Acrobat Reader阅读器的一部分,用于打开和察看PDF文档,它能够从Adobe.com下载 、 你这个应该在服务器上运行,服务器上打印这些。

51,396

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧