java调用虚拟打印机,该怎么解决
java调用虚拟打印机
要实现 将上传的word 或者 excel 在下载过程中,可以调用虚拟打印机,输出 PDF 格式。具体怎么操作和代码编写。求大神指点啊、。。急急急
------解决思路----------------------
word 也差不多,具体很多参数去网上搜搜看看。
要实现 将上传的word 或者 excel 在下载过程中,可以调用虚拟打印机,输出 PDF 格式。具体怎么操作和代码编写。求大神指点啊、。。急急急
------解决思路----------------------
public void saveExcelAsPdf(String filePath, String outFile)
throws SystemException {
ComThread.InitSTA();
ActiveXComponent actcom = new ActiveXComponent("Excel.Application");
Dispatch workbooks = null;
Dispatch workbook = null;
try {
actcom.setProperty("Visible", new Variant(false));
workbooks = actcom.getProperty("Workbooks").toDispatch();
workbook = Dispatch.invoke(
workbooks,
"Open",
Dispatch.Method,
new Object[] { filePath,
new Variant(false),
new Variant(false) //readonly
}, new int[9]).toDispatch();
Dispatch.invoke(workbook, "SaveAs", Dispatch.Method, new Object[] {
outFile, new Variant(57), new Variant(false),
new Variant(57), new Variant(57), new Variant(false),
new Variant(true), new Variant(57), new Variant(false),
new Variant(true), new Variant(false) }, new int[1]);
Dispatch.call(workbook, "Close", new Object[] { new Variant(false) });
if (actcom != null) {
actcom.invoke("Quit", new Variant[] {});
actcom = null;
}
ComThread.Release();
} catch (Exception e) {
throw new SystemException(e.getMessage());
} finally {
if (actcom != null) {
actcom.invoke("Quit", new Variant[] {});
actcom = null;
}
ComThread.Release();
}
}
public static void print(String path)throws SystemException {
String PRINT_NAME="xxxxxxxxx";//打印机名称
//初始化COM线程
ComThread.InitSTA();
ActiveXComponent xl=new ActiveXComponent("Excel.Application");
try {
//设置是否显示打开Excel
Dispatch.put(xl, "Visible", new Variant(true));
//打开具体的工作簿
Dispatch workbooks = xl.getProperty("Workbooks").toDispatch();
Dispatch excel=Dispatch.call(workbooks,"Open",path).toDispatch();
//设置打印属性并打印
Dispatch.callN(excel,"PrintOut",new Object[]{Variant.VT_MISSING, Variant.VT_MISSING, new Integer(1),
new Boolean(false),PRINT_NAME, new Boolean(true),Variant.VT_MISSING, ""});
//关闭文档
Dispatch.call(excel, "Close", new Variant(false));
} catch (Exception e) {
e.printStackTrace();
throw new SystemException(e.getMessage());
} finally{
xl.invoke("Quit",new Variant[0]);
//始终释放资源
ComThread.Release();
}
}
word 也差不多,具体很多参数去网上搜搜看看。