將word文件轉換為html、PDF等
阿新 • • 發佈:2018-12-28
在日常工作中我們常常要把資料匯入word後,在做列印功能,一般列印在前臺做的話會比在後臺做客戶體驗更好一些,這個時候交給前臺最好是html、pdf、或圖片格式的資料,我的另一篇部落格中講解了怎麼將PDF轉換成圖片,並且可以調整清晰度。
這些方法都是我在工作學習中在網路上借鑑各位前輩的經驗程式碼,總結而來,給大家提供個方便,如有侵權請聯絡博主刪除,謝謝。
一、 將word轉化為html
依賴jar包
/**
* @Title convert2Html
* @description 生成合同
* @param src file 讀取的檔案
* @param outPutFile File 輸出的檔案
* @param encoding String
* @return String
*/
public static String convert2Html(File src, File outPutFile, String encoding)
throws TransformerException, IOException,
ParserConfigurationException {
HWPFDocument wordDocument = new HWPFDocument(new FileInputStream(src));
WordToHtmlConverter wordToHtmlConverter = new WordToHtmlConverter(
DocumentBuilderFactory.newInstance().newDocumentBuilder()
.newDocument());
/**************圖片 有可能出現合同章等圖片 如果確定不會出現圖片以下不需要考慮************/
wordToHtmlConverter.setPicturesManager( new PicturesManager()
{
public String savePicture( byte[] content,
PictureType pictureType, String suggestedName,
float widthInches, float heightInches )
{
return "test/"+suggestedName; //儲存圖片的目錄
}
} );
wordToHtmlConverter.processDocument(wordDocument);
//save pictures
List pics=wordDocument.getPicturesTable().getAllPictures();
if(pics!=null){
for(int i=0;i<pics.size();i++){
Picture pic = (Picture)pics.get(i);
try {
pic.writeImageContent(new FileOutputStream("test/"
+ pic.suggestFullFileName()));
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
}
/***********************************end 圖片********************/
Document htmlDocument = wordToHtmlConverter.getDocument();
ByteArrayOutputStream out = new ByteArrayOutputStream();
DOMSource domSource = new DOMSource(htmlDocument);
StreamResult streamResult = new StreamResult(out);
TransformerFactory tf = TransformerFactory.newInstance();
Transformer serializer = tf.newTransformer();
//serializer.setOutputProperty(OutputKeys.ENCODING, "gbk");
serializer.setOutputProperty(OutputKeys.INDENT, "yes");
serializer.setOutputProperty(OutputKeys.METHOD, "html");
serializer.transform(domSource, streamResult);
out.close();
String content ="";// "<%@ page pageEncoding=\"gbk\"%>";
content += new String(out.toByteArray());
content=content.replace("<head>", "<head><title>"
+ "P2P網際網路居間平臺</title><link rel=\"shortcut icon\" href=\"favicon.ico\" type"
+ "=\"image/x-icon\"/>");
writeFile(content, outPutFile);
return content;
}
/**
* @Title writeFile
* @description 使用輸出流列印一份檔案
* @param content 檔案內容
* @param file 輸出的檔案路徑
*/
public static void writeFile(String content, File file) {
FileOutputStream fos = null;
BufferedWriter bw = null;
try {
fos = new FileOutputStream(file);
bw = new BufferedWriter(new OutputStreamWriter(fos));
bw.write(content);
} catch (FileNotFoundException fnfe) {
fnfe.printStackTrace();
} catch (IOException ioe) {
ioe.printStackTrace();
} finally {
try {
if (bw != null)
bw.close();
if (fos != null)
fos.close();
} catch (IOException ie) {
}
}
}
二、將word轉換成PDF
依賴jar包
/**
* word轉為PDF
*/
public synchronized static void doc2pdf(String orgAddr,String newAdd) {
if (!getLicense()) { //驗證License 若不驗證則轉化出的pdf文件會有水印產生
return;
}
try {
long old = System.currentTimeMillis();
File file = new File(newAdd); // 新建一個空白pdf文件
FileOutputStream os = new FileOutputStream(file);
com.aspose.words.Document doc = new com.aspose.words.Document(orgAddr); // Address是將要被轉化的word文件
doc.save(os, SaveFormat.PDF);// 全面支援DOC, DOCX, OOXML, RTF HTML,
// OpenDocument, PDF, EPUB, XPS, SWF
// 相互轉換
long now = System.currentTimeMillis();
System.out.println("共耗時:" + ((now - old) / 1000.0) + "秒"); // 轉化用時
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 驗證License 若不驗證則轉化出的pdf文件會有水印產生
* @return
*/
public static boolean getLicense() {
boolean result = false;
try {
String iss = WordUtil.class.getClassLoader().getResource("//").getPath()+"PgPubk.key";
InputStream is = ReadLicense.getStringInputStream();
//WordUtil.class.getClassLoader().getResourceAsStream("license.xml");//
System.out.println("PATH: ");
License aposeLic = new License();
aposeLic.setLicense(is);
result = true;
} catch (Exception e) {
e.printStackTrace();
}
return result;
}
用這個編輯器,程式碼格式不好調整,看著怪怪的,大家湊合著看吧。