Word转PDF(Java实现)

目前在做一个与文档有关的项目,网上看到的都是利用OpenOffice来转化word为pdf的,其实局限性很大,下载那么大一个软件,却只是为了它的服务。所以决定找一下有没有别的方法,终于遇到了docx4j这个神一样的JAR包,完美解决了我的问题!不说了,直接上代码!

所需Jar包 
avalon-framework-4.1.5 
commons-io-2.4 
docx4j-2.7.1 
log4j-1.2.15 
serializer-2.7.1 
xmlgraphics-commons-1.3 
batik-util-1.6-1 
commons-logging-1.1.3 
fop-0.93 
xalan-2.7.1

代码:

package in.javadomain;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.List;

import org.docx4j.convert.out.pdf.viaXSLFO.PdfSettings;
import org.docx4j.fonts.IdentityPlusMapper;
import org.docx4j.fonts.Mapper;
import org.docx4j.fonts.PhysicalFont;
import org.docx4j.fonts.PhysicalFonts;
import org.docx4j.openpackaging.packages.WordprocessingMLPackage;

public class Word2Pdf {
    public static void main(String[] args) {
        try {

            long start = System.currentTimeMillis();

            InputStream is = new FileInputStream(
                    new File("D:\\javadomain.docx"));
            WordprocessingMLPackage wordMLPackage = WordprocessingMLPackage
                    .load(is);
            List sections = wordMLPackage.getDocumentModel().getSections();
            for (int i = 0; i < sections.size(); i++) {

                System.out.println("sections Size" + sections.size());
                wordMLPackage.getDocumentModel().getSections().get(i)
                        .getPageDimensions().setHeaderExtent(3000);
            }
            Mapper fontMapper = new IdentityPlusMapper();

            PhysicalFont font = PhysicalFonts.getPhysicalFonts().get(
                    "Comic Sans MS");

            fontMapper.getFontMappings().put("Algerian", font);

            wordMLPackage.setFontMapper(fontMapper);
            PdfSettings pdfSettings = new PdfSettings();
            org.docx4j.convert.out.pdf.PdfConversion conversion = new org.docx4j.convert.out.pdf.viaXSLFO.Conversion(
                    wordMLPackage);

            OutputStream out = new FileOutputStream(new File(
                    "D:\\javadomain.pdf"));
            conversion.output(out, pdfSettings);
            System.err.println("Time taken to Generate pdf  "
                    + (System.currentTimeMillis() - start) + "ms");

        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要将Word文档换为PDF,可以使用Apache POI和iText两个Java库来实现。下面是一段使用这两个库进行WordPDF换的Java代码示例: ``` import java.io.*; import org.apache.poi.xwpf.usermodel.XWPFDocument; import com.itextpdf.text.Document; import com.itextpdf.text.pdf.PdfWriter; import com.itextpdf.text.pdf.BaseFont; import com.itextpdf.text.Font; import com.itextpdf.text.Paragraph; public class WordToPdfConverter { public static void main(String[] args) { try { // 读入Word文档 FileInputStream input = new FileInputStream("input.docx"); XWPFDocument document = new XWPFDocument(input); // 新建PDF文档 Document pdfDocument = new Document(); FileOutputStream output = new FileOutputStream("output.pdf"); PdfWriter.getInstance(pdfDocument, output); // 打开文档 pdfDocument.open(); // 设置字体 BaseFont chineseFont = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED); Font font = new Font(chineseFont, 12, Font.NORMAL); // 遍历Word文档的段落 for (XWPFParagraph paragraph : document.getParagraphs()) { // 新建PDF段落 Paragraph pdfParagraph = new Paragraph(paragraph.getText(), font); pdfDocument.add(pdfParagraph); } // 关闭文档 pdfDocument.close(); output.close(); input.close(); System.out.println("换完成!"); } catch (Exception ex) { ex.printStackTrace(); } } } ``` 在此示例中,我们使用Apache POI库读取Word文档,并使用iText库将其换为PDF文档。请注意,我们还需要在classpath中包含iText库和中文字体文件。 这只是一个简单的示例,实际上WordPDF实现可能会更加复杂,因为Word文档可能包含表格、图片、图表等复杂内容。因此,您需要根据实际情况进行适当修改。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值