First, Software Installation and Jar Package Download
The official website is as follows (English):
OpenOffice http://www.openoffice.org/
Jodconverter http://sourceforge.net/projects/jodconverter/files/JODConverter/
You can also Baidu to search, on the csdn above can also download to the required package.
jodconverter:http://download.csdn.net/download/yali1990515/4443791
After decompression, all the jar packages under the directory are placed under the project Lib or referenced in a way that invokes these jar packages.
OpenOffice:
Http://www.baidu.com/link?url= Nprmkalzg44nn-spouwjsrrlgohs5qzn7aejtc2ccsukjjwo6rxfjhh5g4kw0ckzm4zjs2kr2grdwsq8tarcswjb08oujq_ih4wqeeml_lm
Install after download, I install the path to C:/openoffice 4
Second, Start the service
This part will be implemented as thread-initiated in the program, without the need for additional cmd windows to invoke the system to start the service.
The implementation starts the service and shuts down the service after all operations are completed. In other words, each execution of the program goes through the process of service startup and service shutdown. If you think this is an impact on system performance, you can also start the OpenOffice service separately.
Third, Program Code
Package Com.sheke.wenku;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import Com.artofsolving.jodconverter.DocumentConverter;
import com.artofsolving.jodconverter.openoffice.connection.OpenOfficeConnection;
import com.artofsolving.jodconverter.openoffice.connection.SocketOpenOfficeConnection;
import Com.artofsolving.jodconverter.openoffice.converter.OpenOfficeDocumentConverter;
Public class office2pdf {
/**
* Convert Office documents to PDF. Running this function requires the use of OpenOffice, OpenOffice
* http://www.openoffice.org/
*
* <pre>
* Method Example:
* String SourcePath = "F:\\office\\source.doc";
* String destfile = "f:\\pdf\\dest.pdf";
* Converter.office2pdf (SourcePath, destfile);
* </pre>
*
* @param sourcefile
* source file, absolute path. It can be a document of office2003-2007 in all formats, Office2010 not tested. including. Doc,
* . docx,. xls,. xlsx,. ppt,. pptx and so on. Example: F:\\office\\source.doc
* @param destfile
* Target file. Absolute path. Example: f:\\PDF\\dest.pdf
* @return Prompt for the success or absence of the operation. If 1 is returned, the source file is not found, or the url.properties configuration error; If you return 0,
* Indicates the operation is successful; Returns 1, which indicates that the conversion failed
*/
Public Static int office2pdf (string sourcefile, String destfile) {
Try {
File Inputfile = new file (sourcefile);
if (!inputfile.exists ()) {
return -1;//The source file is not found, returns-1
}
If the destination path does not exist, the path is created
File OutputFile = new file (destfile);
if (!outputfile.getparentfile (). exists ()) {
Outputfile.getparentfile (). Mkdirs ();
}
Start the OpenOffice service
String command = "C:/openoffice 4/program/soffice.exe-headless-accept=\" socket,host=127.0.0.1,port=8100;urp;\ "";
Process Pro = Runtime. GetRuntime (). exec (command);
Connect to a OpenOffice.org instance running on port 8100
Openofficeconnection connection = new socketopenofficeconnection ("127.0.0.1", 8100);
Connection.connect ();
Convert
Documentconverter converter = new openofficedocumentconverter (
connection);
Converter.convert (Inputfile, outputFile);
Close the connection
Connection.disconnect ();
Shutting down the process of the OpenOffice service
Pro.destroy ();
return 0;
} catch (FileNotFoundException e) {
E.printstacktrace ();
return -1;
} catch (IOException e) {
E.printstacktrace ();
}
return 1;
}
Public Static void Main (string[] args) {
String Source = "D:\\trs/trswcmv7\\protect\\p0201501\\p020150109\\p020150109485061451482.doc";
String dest = "C:\\1.pdf";
int result = office2pdf(source, dest);
System. out. println (result);
}
}
You can comment out the annotations appropriately.
Four, Common Errors
Error message:
Java.net.ConnectException:connection Failed:socket,host=10.101.50.71,port=8100,tcpnodelay=1: Java.net.ConnectException:Connection Refused:connect
At Com.artofsolving.jodconverter.openoffice.connection.AbstractOpenOfficeConnection.connect ( abstractopenofficeconnection.java:79)
At COM.YGSOFT.EAM.DEMO.DOCCONVERTER.WORDTOPDF (docconverter.java:65)
At Com.ygsoft.eam.demo.DocConverter.conver (docconverter.java:156)
At Com.ygsoft.eam.demo.DocConverter.main (docconverter.java:206)
Java.lang.NullPointerException
At Com.artofsolving.jodconverter.openoffice.connection.AbstractOpenOfficeConnection.disconnect ( ABSTRACTOPENOFFICECONNECTION.JAVA:88)
At COM.YGSOFT.EAM.DEMO.DOCCONVERTER.WORDTOPDF (docconverter.java:72)
At Com.ygsoft.eam.demo.DocConverter.conver (docconverter.java:156)
At Com.ygsoft.eam.demo.DocConverter.main (docconverter.java:206)
Cause: The newly installed OpenOffice has not been registered, and when you use the program to call Soffice.exe will be blocked, and then connection refused error.
Workaround: Find this Soffice.exe program installed on the computer, double-click Open, after registration can be used normally.
Java converts word to PDF with OpenOffice