Je veux convertir un docx en pdf avec apache poi, le docx est généré correctement avec docx4j. L'amende de travail de conversion avec le document simple, mais quand je veux convertir un document plus stylisé, POI jette une exception:Erreur lors de la génération de pdf à partir de docx avec POI
org.apache.xmlbeans.impl.values.XmlValueOutOfRangeException: valeur union « 0000FF"> http: //schemas.openxmlformats.org/wordprocessingml/2006/main ' 15:09:20 org.apache.poi.xwpf.converter.core.XWPFConverterException: org.apache.xmlbeans.impl.values.XmlValueOutOfRangeException: valeur de l'union' 0000FF "> http://schemas.openxmlformats.org/wordprocessingml/2006/main ' à org.apache.poi.xwpf.converter.pdf.PdfConverter.doConvert (PdfConverter.java:70) ~ [org.apache.poi. xwpf.converter.pdf-1.0.6.jar: 1.0.6]
Il est la cause de cette exception:
<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>
Et voici mon code:
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.");
}
}
Et ceci est la ligne XML qui causent problème:
<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>
En fonction de la pile, vous utilisez une ancienne version du convertisseur de rapports XDocs. Essayez de mettre à jour – Gagravarr
Je ne comprends pas quoi mettre à niveau, selon la mise à niveau de mon Org.apache.poi.xwpf.converter.pdf est la dernière version –
Vous ne devriez pas utiliser ce nom de paquet, c'est incorrect et trompeur. La dernière version est 2.0.1 – Gagravarr