Java:使用 apache POI 如何将 ms word 文件转换为 pdf?

新手上路,请多包涵

通过使用 apache POI 如何将 ms word 文件转换为 pdf

我正在使用以下代码,但它无法正常工作并给出错误我想我导入了错误的类?

 import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.OutputStream;

import org.apache.poi.hslf.record.Document;
import org.apache.poi.hwpf.HWPFDocument;
import org.apache.poi.hwpf.extractor.WordExtractor;
import org.apache.poi.hwpf.usermodel.Paragraph;
import org.apache.poi.hwpf.usermodel.Range;
import org.apache.poi.poifs.filesystem.POIFSFileSystem;

public class TestCon {

    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub

        POIFSFileSystem fs = null;
         Document document = new Document();

         try {
             System.out.println("Starting the test");
             fs = new POIFSFileSystem(new FileInputStream("/document/test2.doc"));

             HWPFDocument doc = new HWPFDocument(fs);
             WordExtractor we = new WordExtractor(doc);

             OutputStream file = new FileOutputStream(new File("/document/test.pdf"));

             PdfWriter writer = PdfWriter.getInstance(document, file);

             Range range = doc.getRange();
             document.open();
             writer.setPageEmpty(true);
             document.newPage();
             writer.setPageEmpty(true);

             String[] paragraphs = we.getParagraphText();
             for (int i = 0; i < paragraphs.length; i++) {

                 org.apache.poi.hwpf.usermodel.Paragraph pr = range.getParagraph(i);
                // CharacterRun run = pr.getCharacterRun(i);
                // run.setBold(true);
                // run.setCapitalized(true);
                // run.setItalic(true);
                 paragraphs[i] = paragraphs[i].replaceAll("\\cM?\r?\n", "");
             System.out.println("Length:" + paragraphs[i].length());
             System.out.println("Paragraph" + i + ": " + paragraphs[i].toString());

             // add the paragraph to the document
             document.add(new Paragraph(paragraphs[i]));
             }

             System.out.println("Document testing completed");
         } catch (Exception e) {
             System.out.println("Exception during test");
             e.printStackTrace();
         } finally {
                         // close the document
            document.close();
                     }
         }
    }

原文由 Harinder 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 900
2 个回答

解决了

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.OutputStream;

import com.lowagie.text.Document;
import com.lowagie.text.DocumentException;
import com.lowagie.text.Paragraph;
import com.lowagie.text.pdf.PdfWriter;

import org.apache.poi.hwpf.HWPFDocument;
import org.apache.poi.hwpf.extractor.WordExtractor;

import org.apache.poi.hwpf.usermodel.Range;
import org.apache.poi.poifs.filesystem.POIFSFileSystem;

public class TestCon {

    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub

        POIFSFileSystem fs = null;
        Document document = new Document();

         try {
             System.out.println("Starting the test");
             fs = new POIFSFileSystem(new FileInputStream("D:/Resume.doc"));

             HWPFDocument doc = new HWPFDocument(fs);
             WordExtractor we = new WordExtractor(doc);

             OutputStream file = new FileOutputStream(new File("D:/test.pdf"));

             PdfWriter writer = PdfWriter.getInstance(document, file);

             Range range = doc.getRange();
             document.open();
             writer.setPageEmpty(true);
             document.newPage();
             writer.setPageEmpty(true);

             String[] paragraphs = we.getParagraphText();
             for (int i = 0; i < paragraphs.length; i++) {

                 org.apache.poi.hwpf.usermodel.Paragraph pr = range.getParagraph(i);
                // CharacterRun run = pr.getCharacterRun(i);
                // run.setBold(true);
                // run.setCapitalized(true);
                // run.setItalic(true);
                 paragraphs[i] = paragraphs[i].replaceAll("\\cM?\r?\n", "");
             System.out.println("Length:" + paragraphs[i].length());
             System.out.println("Paragraph" + i + ": " + paragraphs[i].toString());

             // add the paragraph to the document
             document.add(new Paragraph(paragraphs[i]));
             }

             System.out.println("Document testing completed");
         } catch (Exception e) {
             System.out.println("Exception during test");
             e.printStackTrace();
         } finally {
                         // close the document
            document.close();
                     }
         }
    }

原文由 Harinder 发布,翻译遵循 CC BY-SA 3.0 许可协议

这对我有用:-

资料来源:- http://www.programcreek.com/java-api-examples/index.php?api=org.apache.poi.xwpf.converter.pdf.PdfConverter

 package pdf;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.OutputStream;

import org.apache.poi.xwpf.converter.pdf.PdfConverter;
import org.apache.poi.xwpf.converter.pdf.PdfOptions;
import org.apache.poi.xwpf.usermodel.XWPFDocument;

public class PDF {
    public static void main(String[] args) throws Exception {
          String inputFile="D:/TEST.docx";
          String outputFile="D:/TEST.pdf";
          if (args != null && args.length == 2) {
            inputFile=args[0];
            outputFile=args[1];
          }
          System.out.println("inputFile:" + inputFile + ",outputFile:"+ outputFile);
          FileInputStream in=new FileInputStream(inputFile);
          XWPFDocument document=new XWPFDocument(in);
          File outFile=new File(outputFile);
          OutputStream out=new FileOutputStream(outFile);
          PdfOptions options=null;
          PdfConverter.getInstance().convert(document,out,options);
        }
}

原文由 Kushagra Sahni 发布,翻译遵循 CC BY-SA 3.0 许可协议

推荐问题