`
lggege
  • 浏览: 375571 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Java调用cmd的静默打印PDF方法

    博客分类:
  • Java
阅读更多
http://riashanghai.com/zh-hant/node/42

在Windows下用Java实现静默打印PDF,而又不想用别人的PDF库来打印PDF的,在这里总结两个比较流行的偷懒方法。

支持在Windows cmd下打印PDF的命令有很多。之所以介绍下面的两个方法,是因为其软件使用普及率比较高。

两个方法都要安装一下三方的PDF浏览软件。

分别是利用Acrobat Reader 和  GSview。



Acrobat Reader 方法

前提是安装 Adobe Reader

代码如下

public static boolean printPdf(String pdfPath){
		try{
			Runtime.getRuntime().exec("cmd.exe /C start acrord32 /P /h " + pdfPath);
			return true;
		}catch(Exception e){
			e.printStackTrace();
			return false;
		}
	}


这里调用了Adobe的acrord32.exe方法,相应的,介绍下这个命令的参数。

AcroRd32.exe filename - 执行Adobe Reader,并且浏览PDF

其他还支持的参数有:

AcroRd32.exe /p filename - 执行Adobe Reader,并且打印一个PDF文件

AcroRd32.exe /t path printername drivername portname

初始化Adobe Reader, 不弹出打印对话框,然后结束打印

/t 命令所需的四个参数有

path - 打印文件路径

printername - 打印机名字

drivername - 打印机驱动名字

portname - 打印机端口

其他的参数:

/n 开一个新的Adobe Reader, 尽管有Adobe Reader已经打开 (静默打印不用)

/s 打开一个Adobe Reader不开splash screen

/o 打开一个Adobe Reader不开打开文件对话框

/h 以最小化方式打开一个Adobe Reader (静默打印使用)




Ghostscript 8.63 for 32-bit Windows

GSView 4.9 Win32 self extracting archive

代码如下
public static boolean printKitchenPdf(String pdfPath){
		try{
			Runtime.getRuntime().exec("cmd.exe /C \"c:\\Program Files\\Ghostgum\\gsview\\gsprint\" -printer myprinter " + pdfPath);
			return true;
		}catch(Exception e)
		{
			e.printStackTrace();
			return false;
		}
	}


这里用到的cmd命令是gsprint. -printer 是指定用哪个打印机来进行打印。其它的参数过多,推荐到官方网页进行查看。

值得注意的是,gsprint在命令里面,不能通过参数来设置纸张的大小,只能在Windows的打印机驱动里面设置。

在用Adobe Reader方法指定打印机进行打印时(非默认打印机打印),Adobe Reader总是会从最小化状态变成激活状态,本人不知道用什么方式使Adobe Reader隐藏窗口。推荐用gsview方法来做指定打印机的打印。

分享到:
评论
3 楼 antony102201 2011-12-20  
有没有java调用Adobe_PDF_Printer来把一些能打印的文件都通过程序来打印成PDF啊
2 楼 xiaoqing20 2010-01-14  
谢谢楼主分享。!
1 楼 远方的你 2009-12-28  
好东西,谢谢,刚刚需要这个知识的..
Global site tag (gtag.js) - Google Analytics