前言
java實(shí)現(xiàn)word文檔轉(zhuǎn)PDF,PDF轉(zhuǎn)word
解決只能轉(zhuǎn)換4頁(yè)問題
解決每頁(yè)頭部存在水印問題
實(shí)現(xiàn)
引入依賴
<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>
破解的jar包
鏈接: https://pan.baidu.com/s/1MO8OBuf4FQ937R9KDtofPQ 提取碼: 4tsn
package com.common.util;
import com.aspose.pdf.Document;
import com.aspose.pdf.SaveFormat;
import com.documents4j.api.DocumentType;
import com.documents4j.api.IConverter;
import com.documents4j.job.LocalConverter;
import java.io.*;
/**
* PDF轉(zhuǎn)換工具類
* @author yyq
*/
public class PdfUtil {
public static void main(String[] args) {
//pdfToObj("C:\\Users\\Administrator\\Desktop\\測(cè)試.pdf", "docx");
String filePath = "C:\\Users\\Administrator\\Desktop\\測(cè)試.docx";
String outFilePath = "C:\\Users\\Administrator\\Desktop\\測(cè)試.pdf";
objToPdf(filePath, outFilePath, "docx");
}
/**
* PDF 轉(zhuǎn) doc、Excel、xml
* @param pdfPath 需要轉(zhuǎn)換的pdf路徑
* @param suffix 文件后綴
*/
public static void pdfToObj(String pdfPath, String suffix) {
long old = System.currentTimeMillis();
FileOutputStream os = null;
Document doc = null;
try {
// 新建一個(gè)word文檔
String wordPath = pdfPath.substring(0, pdfPath.lastIndexOf(".")) + "." + suffix;
os = new FileOutputStream(wordPath);
// doc是將要被轉(zhuǎn)化的word文檔
doc = new Document(pdfPath);
// 全面支持DOC, DOCX, OOXML, RTF HTML, OpenDocument, PDF, EPUB, XPS, SWF 相互轉(zhuǎn)換
if(suffix.equals("doc")){
doc.save(os, SaveFormat.Doc);
}else if(suffix.equals("docx")){
doc.save(os, SaveFormat.DocX);
}else if(suffix.equals("xls") || suffix.equals("xlsx")){
doc.save(os, SaveFormat.Excel);
}else if(suffix.equals("html")){
doc.save(os, SaveFormat.Html);
}else if(suffix.equals("xml")){
doc.save(os, SaveFormat.Xml);
}
os.flush();
os.close();
doc.close();
// 轉(zhuǎn)化耗時(shí)
long now = System.currentTimeMillis();
long useTime = ((now - old) / 1000);
System.out.println("Pdf 轉(zhuǎn) Word 共耗時(shí):" + useTime + "秒");
} catch (Exception e) {
System.out.println("Pdf 轉(zhuǎn) Word 失敗...");
e.printStackTrace();
}finally {
try {
if (os != null){
os.flush();
os.close();
}
if (doc != null){
doc.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
/**
* txt、doc、Excel、xml 轉(zhuǎn) PDF
* @param oidPath 需要轉(zhuǎn)的文件路徑
* @param newPath 轉(zhuǎn)成的PDF文件路徑
*/
public static void objToPdf(String oidPath, String newPath, String suffix){
InputStream inputStream = null;
OutputStream outputStream = null;
IConverter converter = null;
try {
// 源文件地址
File oidFile = new File(oidPath);
// 導(dǎo)出文件地址
File newFile = new File(newPath);
// 文件讀取
inputStream = new FileInputStream(oidFile);
outputStream = new FileOutputStream(newFile);
// 開始轉(zhuǎn)換
converter = LocalConverter.builder().build();
boolean flag = false;
if(suffix.equals("doc")){
flag = converter.convert(inputStream).as(DocumentType.DOC).to(outputStream).as(DocumentType.PDF).execute();
}else if(suffix.equals("docx")){
flag = converter.convert(inputStream).as(DocumentType.DOCX).to(outputStream).as(DocumentType.PDF).execute();
}else if(suffix.equals("txt")){
flag = converter.convert(inputStream).as(DocumentType.TEXT).to(outputStream).as(DocumentType.PDF).execute();
}else if(suffix.equals("xls")){
flag = converter.convert(inputStream).as(DocumentType.XLS).to(outputStream).as(DocumentType.PDF).execute();
}else if(suffix.equals("xlsx")){
flag = converter.convert(inputStream).as(DocumentType.XLSX).to(outputStream).as(DocumentType.PDF).execute();
}else if(suffix.equals("html")){
flag = converter.convert(inputStream).as(DocumentType.MHTML).to(outputStream).as(DocumentType.PDF).execute();
}else if(suffix.equals("xml")){
flag = converter.convert(inputStream).as(DocumentType.XML).to(outputStream).as(DocumentType.PDF).execute();
}
if (flag) {
converter.shutDown();
}
inputStream.close();
outputStream.flush();
outputStream.close();
System.out.println("轉(zhuǎn)換成功");
} catch (Exception e) {
converter.shutDown();
e.printStackTrace();
System.out.println("轉(zhuǎn)換失敗");
}finally {
try {
if (inputStream != null){
inputStream.close();
}
if (outputStream != null){
outputStream.flush();
outputStream.close();
}
if(converter != null){
converter.shutDown();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
源碼路徑:https://download.csdn.net/download/weixin_43992507/88215577
像流讀取文件這些要關(guān)閉釋放,不然異常報(bào)錯(cuò)文件的讀取不會(huì)斷開的文章來源:http://www.zghlxwxcb.cn/news/detail-648331.html
Excel轉(zhuǎn)PDF的實(shí)現(xiàn)方式可以參考:https://blog.csdn.net/m0_37969960/article/details/105519581文章來源地址http://www.zghlxwxcb.cn/news/detail-648331.html
到了這里,關(guān)于Java實(shí)現(xiàn)Word文檔轉(zhuǎn)PDF,PDF轉(zhuǎn)Word,PDF轉(zhuǎn)Excel,PDF轉(zhuǎn)換工具的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!