gpt4 book ai didi

java - java将word转换为pdf

转载 作者:行者123 更新时间:2023-12-01 18:20:26 25 4
gpt4 key购买 nike

我正在尝试将word转换为pdf,我的代码是:

public static void main(String[] args) {
try {
XWPFDocument document = new XWPFDocument();
document.createStyles();
XWPFParagraph paragraph = document.createParagraph();
XWPFRun title = paragraph.createRun();
title.setText("gLETS GO");

PdfOptions options = PdfOptions.create();
OutputStream out = new FileOutputStream(new File("C:/Users/pepe/Desktop/DocxToPdf1.pdf"));
PdfConverter.getInstance().convert(document, out, options);
System.out.println("Done");
} catch (Exception e) {
e.printStackTrace();
}
}

我收到错误:

fr.opensagres.poi.xwpf.converter.core.XWPFConverterException: org.apache.xmlbeans.XmlException: error: Unexpected end of file after null
at fr.opensagres.poi.xwpf.converter.pdf.PdfConverter.doConvert(PdfConverter.java:71)
at fr.opensagres.poi.xwpf.converter.pdf.PdfConverter.doConvert(PdfConverter.java:39)

Caused by: org.apache.xmlbeans.XmlException: error: Unexpected end of file

我尝试过其他解决方案,但不起作用。我创建一个java项目,如果有人可以帮助我或其他方式来做

最佳答案

这可能是 Trying to make simple PDF document with Apache poi 的重复项。但是,让我们再次通过一个完整的示例来展示如何使用最新的 apache poi 4.1.2 从头开始​​创建一个新的 XWPFDocument,然后将其转换为 PDF 使用 fr.opensagres.poi.xwpf.converter 版本 2.0.2iTextPdfConverter

正如所言,由 apache poi 创建的默认 *.docx 文档缺少 PdfConverter 需要的一些内容。

必须有一个样式文档,即使它是空的。

并且必须有至少设置了页面大小的页面的部分属性。为了实现这一点,我们必须在程序中额外添加一些代码。不幸的是,这需要所有架构 ooxml-schemas-1.4.jar 的完整 jar,如 Faq-N10025 中提到的。 .

并且因为我们需要更改底层低级对象,所以必须编写文档以便提交底层对象。否则我们交给 PdfConverterXWPFDocument 将不完整。

最小完整工作示例:

import java.io.*;
import java.math.BigInteger;

//needed jars: fr.opensagres.poi.xwpf.converter.core-2.0.2.jar,
// fr.opensagres.poi.xwpf.converter.pdf-2.0.2.jar,
// fr.opensagres.xdocreport.itext.extension-2.0.2.jar,
// itext-4.2.1.jar
import fr.opensagres.poi.xwpf.converter.pdf.PdfOptions;
import fr.opensagres.poi.xwpf.converter.pdf.PdfConverter;

//needed jars: apache poi and it's dependencies
// and additionally: ooxml-schemas-1.4.jar
import org.apache.poi.xwpf.usermodel.*;
import org.apache.poi.util.Units;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.*;

public class XWPFToPDFConverterSampleMin {

public static void main(String[] args) throws Exception {

XWPFDocument document = new XWPFDocument();

// there must be a styles document, even if it is empty
XWPFStyles styles = document.createStyles();

// there must be section properties for the page having at least the page size set
CTSectPr sectPr = document.getDocument().getBody().addNewSectPr();
CTPageSz pageSz = sectPr.addNewPgSz();
pageSz.setW(BigInteger.valueOf(12240)); //12240 Twips = 12240/20 = 612 pt = 612/72 = 8.5"
pageSz.setH(BigInteger.valueOf(15840)); //15840 Twips = 15840/20 = 792 pt = 792/72 = 11"

// filling the body
XWPFParagraph paragraph = document.createParagraph();
XWPFRun title = paragraph.createRun();
title.setText("gLETS GO");

//document must be written so underlaaying objects will be committed
ByteArrayOutputStream out = new ByteArrayOutputStream();
document.write(out);
document.close();

document = new XWPFDocument(new ByteArrayInputStream(out.toByteArray()));
PdfOptions options = PdfOptions.create();
PdfConverter converter = (PdfConverter)PdfConverter.getInstance();
converter.convert(document, new FileOutputStream("XWPFToPDFConverterSampleMin.pdf"), options);

document.close();

}
}

关于java - java将word转换为pdf,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60301297/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com