现在的位置: 首页 > 综合 > 正文

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

2018年05月19日 ⁄ 综合 ⁄ 共 1331字 ⁄ 字号 评论关闭

在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方法来做指定打印机的打印。

抱歉!评论已关闭.