public class JacobPDFConverter implements PDFConverter { |
02 | |
03 | private ActiveXComponent app; |
04 | private Dispatch docs; |
05 | |
06 | private boolean isInit = false ; |
07 | |
08 | public void wordToPDF(String wordFilePath, String pdfFilePath) { |
09 | |
10 | if (!isInit) { |
11 | this .init(); |
12 | } |
13 | |
14 | |
15 | Dispatch doc = Dispatch.call(docs, "Open" , wordFilePath, false , true ) |
16 | .toDispatch(); |
17 | Dispatch.call(doc, "ExportAsFixedFormat" , pdfFilePath, 17 ); // word保存为pdf格式宏,值为17 |
18 | |
19 | // 关闭文档 |
20 | Dispatch.call(doc, "Close" , false ); |
21 | } |
22 | |
23 | public void init() { |
24 | app = new ActiveXComponent( "Word.Application" ); |
25 | app.setProperty( "Visible" , false ); |
26 | docs = app.getProperty( "Documents" ).toDispatch(); |
27 | isInit = true ; |
28 | } |
29 | |
30 | public void destroy() { |
31 | if (isInit) app.invoke( "Quit" , 0 ); // 关闭word应用程序 |
32 | |
33 | } |
34 | |
35 | public static void main(String[] args) throws InterruptedException { |
36 | final JacobPDFConverter jacobPDFConverter = new JacobPDFConverter() ; |
37 | long start = System.currentTimeMillis(); |
38 | for ( int i = 0 ; i < 2 ; i++){ |
39 | System.out.println(i); |
40 | jacobPDFConverter.wordToPDF( "D:\\wordpdf\\test.docx" , "D:\\wordpdf\\test" +i+ ".pdf" ) ; |
41 | } |
42 | System.out.println((System.currentTimeMillis() - start)); |
43 | jacobPDFConverter.destroy() ; |
44 | |
45 | } |
46 | |
47 | |
48 | } |