Apache POI преобразует docx в PDF - PullRequest
0 голосов
/ 25 июня 2019

Я пытаюсь использовать Apache POI для создания документа Word (это нормально), а затем я хотел бы преобразовать этот документ в PDF.

Я использую PdfConverter для этого, но у меня возникла очень странная ошибка при генерации ....

Вот код:

    public static void main(String[] args)throws Exception {
        //Blank Document
        XWPFDocument document = new XWPFDocument();
        FileOutputStream out = new FileOutputStream(new File("C:\\temp\\Rapport" + "_" + "00" + ".docx"));
        document.createNumbering();

        CTDocument1 doc = document.getDocument();
        CTBody body = doc.getBody();

        XWPFStyles styles = document.createStyles();
        if (!body.isSetSectPr()) {
             body.addNewSectPr();
        }
        CTSectPr section = body.getSectPr();

        if(!section.isSetPgSz()) {
            section.addNewPgSz();
        }
        CTPageSz pageSize = section.getPgSz();
        pageSize.setOrient(STPageOrientation.PORTRAIT);
        pageSize.setW(BigInteger.valueOf(595));
        pageSize.setH(BigInteger.valueOf(842));

        XWPFParagraph paragraph0 = document.createParagraph();
        paragraph0.setAlignment(ParagraphAlignment.CENTER );
        XWPFRun run0 = paragraph0.createRun();
        run0.setBold(true);  
        run0.setFontSize(14);
        run0.addBreak();
        run0.addBreak();
        run0.setText("RAPPORT\n");

        //Close document
        document.write(out);
        out.close();
        System.out.println("word document written successfully");

        try {
            InputStream docu = new FileInputStream(new File("C:\\temp\\Rapport" + "_" + "00" + ".docx"));
            PdfOptions options = PdfOptions.create();
            OutputStream outWord = new FileOutputStream(new File("C:\\temp\\Rapport" + "_" + "00" + ".pdf"));
            PdfConverter.getInstance().convert(document, outWord, options);
            System.out.println("Done");
        } catch (FileNotFoundException ex) {
            System.out.println(ex.getMessage());
        } catch (IOException ex) {

            System.out.println(ex.getMessage());
        }

        System.out.println("PDF document written successfully");

}

и вот возникшее исключение:

Exception in thread "main" fr.opensagres.poi.xwpf.converter.core.XWPFConverterException: fr.opensagres.poi.xwpf.converter.core.XWPFConverterException: com.lowagie.text.DocumentException: java.lang.RuntimeException: The table width must be greater than zero.
at fr.opensagres.poi.xwpf.converter.pdf.PdfConverter.doConvert(PdfConverter.java:71)
at fr.opensagres.poi.xwpf.converter.pdf.PdfConverter.doConvert(PdfConverter.java:39)
at fr.opensagres.poi.xwpf.converter.core.AbstractXWPFConverter.convert(AbstractXWPFConverter.java:46)
at com.jre.word.wordGeneration2.main(wordGeneration2.java:69)

Мой документ Word создан правильно, но я сталкиваюсь с несколькими проблемами при создании PDF - Мне пришлось создавать стили - определить размер страницы

и теперь у меня есть ошибка, связанная с таблицей (даже если я не создаю таблицу), связанной со стилями:

Caused by: fr.opensagres.poi.xwpf.converter.core.XWPFConverterException: com.lowagie.text.DocumentException: java.lang.RuntimeException: The table width must be greater than zero.
at fr.opensagres.poi.xwpf.converter.pdf.internal.elements.StylableDocument.flushTable(StylableDocument.java:378)
at fr.opensagres.poi.xwpf.converter.pdf.internal.elements.StylableDocument.close(StylableDocument.java:179)
at fr.opensagres.poi.xwpf.converter.pdf.internal.PdfMapper.endVisitDocument(PdfMapper.java:177)
at fr.opensagres.poi.xwpf.converter.core.XWPFDocumentVisitor.start(XWPFDocumentVisitor.java:217)
at fr.opensagres.poi.xwpf.converter.pdf.PdfConverter.doConvert(PdfConverter.java:57)

Любая идея, почему я получаю такое исключение?

...