Converting docx into pdf in java
保存文档时,最好以'.docx'或'.pdf'格式,防止格式丢失。 #生活常识# #电脑#
I will provide 3 methods to convert docx to pdf :
Using itext and opensagres and apache poiCode :
import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import fr.opensagres.poi.xwpf.converter.pdf.PdfOptions; import fr.opensagres.poi.xwpf.converter.pdf.PdfConverter; import org.apache.poi.xwpf.usermodel.XWPFDocument; public class ConvertDocToPdfitext { public static void main(String[] args) { System.out.println( "Starting conversion!!!" ); ConvertDocToPdfitext cwoWord = new ConvertDocToPdfitext(); cwoWord.ConvertToPDF("C:/Users/avijit.shaw/Desktop/testing/docx/Account Opening Prototype Details.docx", "C:/Users/avijit.shaw/Desktop/testing/docx/Test-1.pdf"); System.out.println( "Ending conversion!!!" ); } public void ConvertToPDF(String docPath, String pdfPath) { try { InputStream doc = new FileInputStream(new File(docPath)); XWPFDocument document = new XWPFDocument(doc); PdfOptions options = PdfOptions.create(); OutputStream out = new FileOutputStream(new File(pdfPath)); PdfConverter.getInstance().convert(document, out, options); } catch (IOException ex) { System.out.println(ex.getMessage()); } } }
Dependencies: Use Maven to resolve dependencies.
New version 2.0.2 of fr.opensagres.poi.xwpf.converter.core runs with apache poi 4.0.1 and itext 2.17. You just need to add below dependency in Maven and then maven will auto download all dependent dependencies. (Updated your Maven project, so it downloaded all these libraries and all of its dependencies)
<dependency> <groupId>fr.opensagres.xdocreport</groupId> <artifactId>fr.opensagres.poi.xwpf.converter.pdf</artifactId> <version>2.0.2</version> </dependency> Using Documents4j
Note: You need to have MS Office installed on the machine in which this code is running.
Code :
import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.InputStream; import java.io.OutputStream; import com.documents4j.api.DocumentType; import com.documents4j.api.IConverter; import com.documents4j.job.LocalConverter; public class Document4jApp { public static void main(String[] args) { File inputWord = new File("C:/Users/avijit.shaw/Desktop/testing/docx/Account Opening Prototype Details.docx"); File outputFile = new File("Test_out.pdf"); try { InputStream docxInputStream = new FileInputStream(inputWord); OutputStream outputStream = new FileOutputStream(outputFile); IConverter converter = LocalConverter.builder().build(); converter.convert(docxInputStream).as(DocumentType.DOCX).to(outputStream).as(DocumentType.PDF).execute(); outputStream.close(); System.out.println("success"); } catch (Exception e) { e.printStackTrace(); } } }
Dependencies : Use Maven to resolve dependencies.
<dependency> <groupId>com.documents4j</groupId> <artifactId>documents4j-local</artifactId> <version>1.0.3</version> </dependency> <dependency> <groupId>com.documents4j</groupId> <artifactId>documents4j-transformer-msoffice-word</artifactId> <version>1.0.3</version> </dependency> Using openoffice nuoil
Note: You need to have OpenOffice installed on the machine in which this code is running. Code :
import java.io.File; import com.sun.star.beans.PropertyValue; import com.sun.star.comp.helper.BootstrapException; import com.sun.star.frame.XComponentLoader; import com.sun.star.frame.XDesktop; import com.sun.star.frame.XStorable; import com.sun.star.lang.XComponent; import com.sun.star.lang.XMultiComponentFactory; import com.sun.star.uno.Exception; import com.sun.star.uno.UnoRuntime; import com.sun.star.uno.XComponentContext; import ooo.connector.BootstrapSocketConnector; public class App { public static void main(String[] args) throws Exception, BootstrapException { System.out.println("Stating conversion!!!"); // Initialise String oooExeFolder = "C:\\Program Files (x86)\\OpenOffice 4\\program"; //Provide path on which OpenOffice is installed XComponentContext xContext = BootstrapSocketConnector.bootstrap(oooExeFolder); XMultiComponentFactory xMCF = xContext.getServiceManager(); Object oDesktop = xMCF.createInstanceWithContext("com.sun.star.frame.Desktop", xContext); XDesktop xDesktop = (XDesktop) UnoRuntime.queryInterface(XDesktop.class, oDesktop); // Load the Document String workingDir = "C:/Users/avijit.shaw/Desktop/testing/docx/"; //Provide directory path of docx file to be converted String myTemplate = workingDir + "Account Opening Prototype Details.docx"; // Name of docx file to be converted if (!new File(myTemplate).canRead()) { throw new RuntimeException("Cannot load template:" + new File(myTemplate)); } XComponentLoader xCompLoader = (XComponentLoader) UnoRuntime .queryInterface(com.sun.star.frame.XComponentLoader.class, xDesktop); String sUrl = "file:///" + myTemplate; PropertyValue[] propertyValues = new PropertyValue[0]; propertyValues = new PropertyValue[1]; propertyValues[0] = new PropertyValue(); propertyValues[0].Name = "Hidden"; propertyValues[0].Value = new Boolean(true); XComponent xComp = xCompLoader.loadComponentFromURL(sUrl, "_blank", 0, propertyValues); // save as a PDF XStorable xStorable = (XStorable) UnoRuntime.queryInterface(XStorable.class, xComp); propertyValues = new PropertyValue[2]; // Setting the flag for overwriting propertyValues[0] = new PropertyValue(); propertyValues[0].Name = "Overwrite"; propertyValues[0].Value = new Boolean(true); // Setting the filter name propertyValues[1] = new PropertyValue(); propertyValues[1].Name = "FilterName"; propertyValues[1].Value = "writer_pdf_Export"; // Appending the favoured extension to the origin document name String myResult = workingDir + "letterOutput.pdf"; // Name of pdf file to be output xStorable.storeToURL("file:///" + myResult, propertyValues); System.out.println("Saved " + myResult); // shutdown xDesktop.terminate(); } }
Dependencies : Use Maven to resolve dependencies.
<!-- https://mvnrepository.com/artifact/org.openoffice/unoil --> <dependency> <groupId>org.openoffice</groupId> <artifactId>unoil</artifactId> <version>3.2.1</version> </dependency> <!-- https://mvnrepository.com/artifact/org.openoffice/juh --> <dependency> <groupId>org.openoffice</groupId> <artifactId>juh</artifactId> <version>3.2.1</version> </dependency> <!-- https://mvnrepository.com/artifact/org.openoffice/bootstrap-connector --> <dependency> <groupId>org.openoffice</groupId> <artifactId>bootstrap-connector</artifactId> <version>0.1.1</version> </dependency>
网址:Converting docx into pdf in java https://c.klqsh.com/news/view/344709
相关内容
Convert Word doc, docx and Excel xls, xlsx to PDF with PHPConvert PDF to .docx with Python
Use AI Actions in File Explorer in Windows 11
PDF转Word转换器
Find your files in Windows
WebP转PNG在线工具
Cattle Breeds in Texas: A Comprehensive Guide
The 5 Best Espresso Martinis in Newport Beach
青少年心理健康促进和预防干预指南:帮助青少年茁壮成长.pdf
assets是什么意思