当前位置: 首页 > 面试题库 >

Java:使用Apache POI如何将MS Word文件转换为PDF?

经兴安
2023-03-14
问题内容

通过使用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();  
                     }  
         }  
    }

问题答案:

得到了解决

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();  
                     }  
         }  
    }


 类似资料:
  • 我想使用@RunFor(Parameterized.class)和 实际的测试数据应由业务人员通过Excel创建。 是否有一种简单/通用的方法可以将Apache POI XSSFSheet获取到指定的字符串数组集合? 如果是:有人能提供一个例子吗? 我发现了这个问题:使用Apache POI在TestNG中进行Datadriven测试---但我希望是一种3线测试;-)

  • 问题内容: 如何使用Java将pdf文件转换为word文件? 而且,它看起来像它一样容易吗? 问题答案: 试试PDFBOX

  • 问题内容: 我可以使用任何开放源代码库吗? 问题答案: itext可能会帮助您。您实际上并没有将png转换为pdf,而是创建了其中包含png的pdf。简单的例子:

  • 问题内容: 我有一个包含一些非utf8特征的文件(例如“ ISO-8859-1”),因此我想将该文件(或读取的)转换为UTF8编码,我该怎么办? 代码是这样的: 编辑:放置一个编码示例 问题答案: 在那里,文本已解码。您可以通过simmetric Writer / OutputStream方法使用您喜欢的编码(例如UTF-8)来编写它。

  • 对于Maven,除了JUNIT 4之外,我还有jackson的“databind”和“dataformat xml”依赖项。我创建了一个名为“simple Bean”的简单Java类,其中包含两个初始化的整数。使用XmlMapper类的一个实例,我试图编写其“方法writeValue”,但它引发了异常:“InvalidDefinitionException”,并显示消息“未找到SimpleBean

  • 问题内容: 我需要帮助来理解使用java将XML文件转换为CSV文件所涉及的步骤。这是XML文件的示例 这是生成的CSV文件。 我当时正在考虑使用DOM解析器读取xml文件。我遇到的问题是,我需要按名称指定要编码的特定元素,但我希望它能够解析它而不这样做。 Java中是否有任何工具或库可以帮助我实现这一目标。 如果我下面有这种格式的XML文件,并且想在与MSgId相同的行中添加InitgPty的值