文件如何转换成pdf或html格式

时间:2021-09-11 12:17:09

1、使用jacob插件

2、使用方法

1)于word、ppt等上传文件转换为PDF格式文件的环境搭建,步骤如下:
① 首先电脑要先安装office软件(不可以是WPS软件)
② 需要把jacob.dll文件复制到JDK的bin目录下面,否则无法调用转换为PDF的功能。

2)使用的服务器上必须安装有office软件,因为原理是调用office的pdf转换器来实现的。

3)必须也要有PDF软件,因为office要通过调用本地的pdf软件来实现格式的转换。

3、office文件转PDF


  1. import java.io.File;
  2. import com.jacob.activeX.ActiveXComponent;
  3. import com.jacob.com.ComThread;
  4. import com.jacob.com.Dispatch;
  5. public class OfficeToPdf {
  6. private static final int wdFormatPDF = 17;
  7. private static final int xlTypePDF = 0;
  8. private static final int ppSaveAsPDF = 32;
  9. public static void main(String[] args) {
  10. convert2PDF("I:\\使用方法.txt","I:\\使用方法.pdf");
  11. }
  12. /*
  13. * 转换生存PDF文件,支持格式 doc docx txt ppt pptx xls xlsx
  14. * 1、需安装office软件,并有将office转化为PDF的插件 2、需有jacob(java com bridge),
  15. * java与com组件之间的桥梁
  16. */
  17. public static boolean convert2PDF(String inputFile, String pdfFile) {
  18. String suffix = getFileSufix(inputFile);
  19. File file = new File(inputFile);
  20. if (!file.exists()) {
  21. System.out.println("文件不存在!");
  22. return false;
  23. }
  24. if (suffix.equals("pdf")) {
  25. System.out.println("PDF not need to convert!");
  26. return false;
  27. }
  28. OfficeToPdf officeToPdf = new OfficeToPdf();
  29. if (suffix.equals("doc") || suffix.equals("docx")
  30. || suffix.equals("txt")) {
  31. return officeToPdf.word2PDF(inputFile, pdfFile);
  32. } else if (suffix.equals("ppt") || suffix.equals("pptx")) {
  33. return officeToPdf.ppt2PDF(inputFile, pdfFile);
  34. } else if (suffix.equals("xls") || suffix.equals("xlsx")) {
  35. return officeToPdf.excel2PDF(inputFile, pdfFile);
  36. } else {
  37. System.out.println("文件格式不支持转换!");
  38. return false;
  39. }
  40. }
  41. public static String getFileSufix(String fileName) {
  42. int splitIndex = fileName.lastIndexOf(".");
  43. return fileName.substring(splitIndex + 1);
  44. }
  45. public boolean word2PDF(String inputFile, String pdfFile) {
  46. try {
  47. // 打开word应用程序
  48. ActiveXComponent app = new ActiveXComponent("Word.Application");
  49. // 设置word不可见
  50. app.setProperty("Visible", false);
  51. // 获得word中所有打开的文档,返回Documents对象
  52. Dispatch docs = app.getProperty("Documents").toDispatch();
  53. // 调用Documents对象中Open方法打开文档,并返回打开的文档对象Document
  54. Dispatch doc = Dispatch.call(docs, "Open", inputFile, false, true)
  55. .toDispatch();
  56. // 调用Document对象的SaveAs方法,将文档保存为pdf格式
  57. /*
  58. * Dispatch.call(doc, "SaveAs", pdfFile, wdFormatPDF
  59. * //word保存为pdf格式宏,值为17 );
  60. */
  61. Dispatch.call(doc, "ExportAsFixedFormat", pdfFile, wdFormatPDF // word保存为pdf格式宏,值为17
  62. );
  63. // 关闭文档
  64. Dispatch.call(doc, "Close", false);
  65. // 关闭word应用程序
  66. app.invoke("Quit", 0);
  67. return true;
  68. } catch (Exception e) {
  69. return false;
  70. } finally {
  71. ComThread.Release();
  72. }
  73. }
  74. public boolean excel2PDF(String inputFile, String pdfFile) {
  75. try {
  76. ActiveXComponent app = new ActiveXComponent("Excel.Application");
  77. app.setProperty("Visible", false);
  78. Dispatch excels = app.getProperty("Workbooks").toDispatch();
  79. Dispatch excel = Dispatch.call(excels, "Open", inputFile, false,
  80. true).toDispatch();
  81. Dispatch.call(excel, "ExportAsFixedFormat", xlTypePDF, pdfFile);
  82. Dispatch.call(excel, "Close", false);
  83. app.invoke("Quit");
  84. return true;
  85. } catch (Exception e) {
  86. return false;
  87. } finally {
  88. ComThread.Release();
  89. }
  90. }
  91. public boolean ppt2PDF(String inputFile, String pdfFile) {
  92. try {
  93. ActiveXComponent app = new ActiveXComponent(
  94. "PowerPoint.Application");
  95. // app.setProperty("Visible", msofalse);
  96. Dispatch ppts = app.getProperty("Presentations").toDispatch();
  97. Dispatch ppt = Dispatch.call(ppts, "Open", inputFile, true,// ReadOnly
  98. true,// Untitled指定文件是否有标题
  99. false// WithWindow指定文件是否可见
  100. ).toDispatch();
  101. Dispatch.call(ppt, "SaveAs", pdfFile, ppSaveAsPDF);
  102. Dispatch.call(ppt, "Close");
  103. app.invoke("Quit");
  104. return true;
  105. } catch (Exception e) {
  106. return false;
  107. } finally {
  108. ComThread.Release();
  109. }
  110. }
  111. }

4、office文件转html


  1. import java.io.File;
  2. import com.jacob.activeX.ActiveXComponent;
  3. import com.jacob.com.ComThread;
  4. import com.jacob.com.Dispatch;
  5. public class OfficeToHtml {
  6. public static final int WORD_HTML = 8;
  7. public static final int WORD_TXT = 7;
  8. public static final int EXCEL_HTML = 44;
  9. public static final int PPT_HTML = 44;
  10. public static void main(String[] args) {
  11. convert2HTML("I:\\使用方法.txt","I:\\使用方法.html");
  12. }
  13. /*
  14. * 转换生存PDF文件,支持格式 doc docx txt xls xlsx 1、需安装office软件,并有将office转化为PDF的插件
  15. * 2、需有jacob(java com bridge), java与com组件之间的桥梁
  16. */
  17. public static boolean convert2HTML(String inputFile, String pdfFile) {
  18. String suffix = getFileSufix(inputFile);
  19. File file = new File(inputFile);
  20. if (!file.exists()) {
  21. System.out.println("文件不存在!");
  22. return false;
  23. }
  24. OfficeToHtml officeToHtml = new OfficeToHtml();
  25. if (suffix.equals("doc") || suffix.equals("docx")
  26. || suffix.equals("txt")) {
  27. return officeToHtml.word2HTML(inputFile, pdfFile);
  28. } else if (suffix.equals("xls") || suffix.equals("xlsx")) {
  29. return officeToHtml.excel2HTML(inputFile, pdfFile);
  30. } else {
  31. System.out.println("文件格式不支持转换!");
  32. return false;
  33. }
  34. }
  35. public static String getFileSufix(String fileName) {
  36. int splitIndex = fileName.lastIndexOf(".");
  37. return fileName.substring(splitIndex + 1);
  38. }
  39. /**
  40. * WORD转HTML
  41. *
  42. * @param docfile
  43. *            WORD文件全路径
  44. * @param htmlfile
  45. *            转换后HTML存放路径
  46. */
  47. public boolean word2HTML(String docfile, String htmlfile) {
  48. ActiveXComponent app = new ActiveXComponent("Word.Application"); // 启动word
  49. try {
  50. app.setProperty("Visible", false);
  51. app.setProperty("DisplayAlerts", false);// 设置不显示弹出覆盖警告
  52. Dispatch docs = app.getProperty("Documents").toDispatch();
  53. Dispatch doc = Dispatch.invoke(docs, "Open", Dispatch.Method,
  54. new Object[] { docfile, false, true }, new int[1])
  55. .toDispatch();
  56. Dispatch.invoke(doc, "SaveAs", Dispatch.Method, new Object[] {
  57. htmlfile, WORD_HTML }, new int[1]);
  58. Dispatch.call(doc, "Close", false);
  59. app.invoke("Quit", 0);
  60. return true;
  61. } catch (Exception e) {
  62. return false;
  63. } finally {
  64. ComThread.Release();
  65. }
  66. }
  67. /**
  68. * EXCEL转HTML
  69. *
  70. * @param xlsfile
  71. *            EXCEL文件全路径
  72. * @param htmlfile
  73. *            转换后HTML存放路径
  74. */
  75. public boolean excel2HTML(String xlsfile, String htmlfile) {
  76. ActiveXComponent app = new ActiveXComponent("Excel.Application"); // 启动exel
  77. try {
  78. app.setProperty("Visible", false);
  79. app.setProperty("DisplayAlerts", false);// 设置不显示弹出覆盖警告
  80. Dispatch excels = app.getProperty("Workbooks").toDispatch();
  81. Dispatch excel = Dispatch.invoke(excels, "Open", Dispatch.Method,
  82. new Object[] { xlsfile, false, true }, new int[1])
  83. .toDispatch();
  84. Dispatch.invoke(excel, "SaveAs", Dispatch.Method, new Object[] {
  85. htmlfile, EXCEL_HTML }, new int[1]);
  86. Dispatch.call(excel, "Close", false);
  87. app.invoke("Quit");
  88. return true;
  89. } catch (Exception e) {
  90. return false;
  91. } finally {
  92. ComThread.Release();
  93. }
  94. }
  95. }

附件源码:

下载地址:https://gitee.com/KingXin666/FormatToPDFandHTML