gpt4 book ai didi

pdf - 使用 POI 从 docx 生成 pdf 时出错

转载 作者:行者123 更新时间:2023-12-03 21:29:31 26 4
gpt4 key购买 nike

我想使用 apache poi 将 docx 转换为 pdf,使用 docx4j 正确生成 docx。对于简单文档,转换工作正常,但是当我想转换更具风格化的文档时,POI 会引发异常:

org.apache.xmlbeans.impl.values.XmlValueOutOfRangeException: union value '0000FF">http://schemas.openxmlformats.org/wordprocessingml/2006/main' 15:09:20 org.apache.poi.xwpf.converter.core.XWPFConverterException: org.apache.xmlbeans.impl.values.XmlValueOutOfRangeException: union value '0000FF">http://schemas.openxmlformats.org/wordprocessingml/2006/main' at org.apache.poi.xwpf.converter.pdf.PdfConverter.doConvert(PdfConverter.java:70) ~[org.apache.poi.xwpf.converter.pdf-1.0.6.jar:1.0.6]



有这个异常的原因:
<w:r>
<w:rPr>
<w:rFonts w:ascii="Arial" w:hAnsi="Arial" w:cs="Arial"/>
<w:color w:val="0000FF"><span style="background-color: rgb(51, 153, 102);"><span style="background-color: rgb(255, 0, 0);"><font color="99CC00"/>
<w:sz w:val="20"/>
<w:szCs w:val="20"/>
<w:highlight w:val="red"/>
</w:rPr>
<w:t xml:space="preserve">Juillet-Aout</w:t>
</w:r>

Screen of my document

这是我的代码:
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;


import org.apache.poi.xwpf.usermodel.XWPFDocument;

import fr.opensagres.poi.xwpf.converter.pdf.PdfConverter;
import fr.opensagres.poi.xwpf.converter.pdf.PdfOptions;

public class ConvertDocxPdf
{

public static void main( String[] args )
{
long startTime = System.currentTimeMillis();

try
{
// 1) Load docx with POI XWPFDocument
InputStream source = new FileInputStream("test.docx");
XWPFDocument document = new XWPFDocument(source);

// 2) Convert POI XWPFDocument 2 PDF with iText
File outFile = new File("result.pdf" );
outFile.getParentFile().mkdirs();

OutputStream out = new FileOutputStream( outFile );
PdfOptions options = null;// PDFViaITextOptions.create().fontEncoding( "windows-1250" );
PdfConverter.getInstance().convert( document, out, options );
}
catch ( Throwable e )
{
e.printStackTrace();
}

System.out.println( "Generate DocxStructures.pdf with " + ( System.currentTimeMillis() - startTime ) + " ms." );
}
}

这是导致问题的 XML 行:
<w:r>
<w:rPr>
<w:rFonts w:ascii="Arial" w:hAnsi="Arial" w:cs="Arial"/>
<w:color w:val="0000FF"><span style="background-color: rgb(51, 153, 102);"><span style="background-color: rgb(255, 0, 0);"><font color="99CC00"/> //<-- That line
<w:sz w:val="20"/>
<w:szCs w:val="20"/>
<w:highlight w:val="red"/>
</w:rPr>
<w:t xml:space="preserve">Juillet-Aout </w:t>
</w:r>

最佳答案

我无法在 XDocReport 网站和存储库中找到更新的预构建 jar。我最终在 Google 上搜索了我正在寻找的特定版本号,并在 https://mvnrepository.com/artifact/fr.opensagres.xdocreport/fr.opensagres.poi.xwpf.converter.pdf/2.0.1 找到了它。

我不确定这是否真的回答了这个问题,但它确实回答了如何获取库更新版本的相关问题。不过,从源代码构建可能更安全。

关于pdf - 使用 POI 从 docx 生成 pdf 时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44950017/

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