提问人:Bruno RB 提问时间:10/17/2023 最后编辑:Rifat Rubayatul IslamBruno RB 更新时间:10/17/2023 访问量:71
DOCX 转 PDF 仅在保存文件后有效 [JAVA]
DOCX to PDF works after saving file only [JAVA]
问:
下面提供的代码有点有效,我试图解决的问题是我已经能够将我的 docx 保存在本地。当我试图将其转换为 pdf 时,我得到空白页或只有 docx 标题的页面。但是当我使用 Libre office 或免费办公室手动打开文件并在不进行任何更改的情况下保存它并再次运行转换时,该文件可以完美地转换到我需要的样子。有谁知道为什么会发生这种情况,以及我如何在不必实际操作和保存文件的情况下复制该行为,因为我需要以编程方式执行所有这些过程?
我试图使用以下方法将 DOCX 转换为 PDF:
<dependency>
<groupId>fr.opensagres.xdocreport</groupId>
<artifactId>org.apache.poi.xwpf.converter.pdf</artifactId>
<version>1.0.6</version>
</dependency>
到目前为止,我的代码是:
public byte[] converterXmlToDocx(Long idModeloDocumento) throws Docx4JException {
try {
byte[] gzipXml = buscarModeloDocumento(idModeloDocumento);
byte[] xmlData = descompactarGzip(gzipXml);
WordprocessingMLPackage pkg = WordprocessingMLPackage.load(new ByteArrayInputStream(xmlData));
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
pkg.save(outputStream);
//saves file localy
String outputFilePath = "src/main/resources/test1.docx";
File outputDocxFile = new File(outputFilePath);
pkg.save(outputDocxFile);
return outputStream.toByteArray();
} catch (Docx4JException | IOException e) {
e.printStackTrace();
throw new Docx4JException("Erro converting xml to docx", e);
}
}
public void convertLOCAL(String docxFilePath, String pdfFilePath) {
try {
FileInputStream docxFile = new FileInputStream(docxFilePath);
XWPFDocument document = new XWPFDocument(docxFile);
FileOutputStream pdfFile = new FileOutputStream(pdfFilePath);
PdfOptions options = PdfOptions.create();
PdfConverter.getInstance().convert(document, pdfFile, options);
docxFile.close();
pdfFile.close();
System.out.println("Sucess");
} catch (IOException ex) {
System.out.println(ex.getMessage());
throw new RuntimeException("Conversion Error", ex);
}
}
我上面所做的是使用第一种方法生成 docx 文件,他们在我的控制器中使用第二种方法对其进行转换,传递输入 docx 路径和输出 pdf 路径。
答: 暂无答案
评论
converterXmlToDocx()
pkg.save()
ByteArrayOutputStream
pkg.save()
save
save