当前位置: 首页 > 知识库问答 >
问题:

docx4j:docx到pdf的转换-docx内容不会逐页显示到pdf

狄钧
2023-03-14

问题:使用DOCX4J将docx转换为pdf。问题是docx的内容无法逐页转换为pdf文档。pdf的第1页显示了第2页的几行内容。

波姆。xml:

<dependency>
    <groupId>org.docx4j</groupId>
    <artifactId>docx4j</artifactId>
    <version>6.1.2</version>
</dependency>
<dependency>
    <groupId>org.docx4j</groupId>
    <artifactId>docx4j-export-fo</artifactId>
    <version>6.1.0</version>
</dependency>
<dependency>
    <groupId>javax.xml.bind</groupId>
    <artifactId>jaxb-api</artifactId>
    <version>2.1</version>
</dependency>
<dependency>
    <groupId>com.itextpdf</groupId>
    <artifactId>itextpdf</artifactId>
    <version>5.4.3</version>
</dependency>

代码:

private static void convertToPDFDocx4j() throws Exception {

    InputStream is = new FileInputStream(new File(inputfilepath));
    WordprocessingMLPackage wordMLPackage = WordprocessingMLPackage
            .load(is);
    List sections = wordMLPackage.getDocumentModel().getSections();
    for (int i = 0; i < sections.size(); i++) {
        wordMLPackage.getDocumentModel().getSections().get(i)
                .getPageDimensions();
    }
    Mapper fontMapper = new IdentityPlusMapper();
    PhysicalFont font = PhysicalFonts.getPhysicalFonts().get(
            "Comic Sans MS");//set your desired font
    fontMapper.getFontMappings().put("Algerian", font);
    wordMLPackage.setFontMapper(fontMapper);
    PdfSettings pdfSettings = new PdfSettings();
    org.docx4j.convert.out.pdf.PdfConversion conversion = new org.docx4j.convert.out.pdf.viaXSLFO.Conversion(
            wordMLPackage);

    OutputStream out = new FileOutputStream(new File(outputfilepath));
    conversion.output(out, pdfSettings);
    System.out.println("DONE!!");

}

想知道docx4j是否有控制它的设置?

尝试过了,但没有太多帮助,无法用Java将docx文件转换为PDF

共有1个答案

呼延博易
2023-03-14

从6升级您的Docx4j版本。X到8。X使用以下依赖项解决此问题。

<dependency>
    <groupId>org.docx4j</groupId>
    <artifactId>docx4j-JAXB-Internal</artifactId>
    <version>8.0.0</version>
</dependency>
<dependency>
    <groupId>org.docx4j</groupId>
    <artifactId>docx4j-JAXB-ReferenceImpl</artifactId>
    <version>8.0.0</version>
</dependency>
<dependency>
    <groupId>org.docx4j</groupId>
    <artifactId>docx4j-JAXB-MOXy</artifactId>
    <version>8.0.0</version>
</dependency>
<dependency>
    <groupId>org.docx4j</groupId>
    <artifactId>docx4j-export-fo</artifactId>
    <version>8.0.0</version>
</dependency>

使用以下代码进行docx到pdf对话。

import org.docx4j.Docx4J;
import org.docx4j.openpackaging.packages.WordprocessingMLPackage;
import org.docx4j.openpackaging.parts.WordprocessingML.MainDocumentPart;

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;

public class DocToPDF {

    public static void main(String[] args) {
        
        try {
            InputStream templateInputStream = new FileInputStream("D:\\\\Workspace\\\\New\\\\Sample.docx");
            WordprocessingMLPackage wordMLPackage = WordprocessingMLPackage.load(templateInputStream);
            MainDocumentPart documentPart = wordMLPackage.getMainDocumentPart();

            String outputfilepath = "D:\\\\Workspace\\\\New\\\\Sample.pdf";
            FileOutputStream os = new FileOutputStream(outputfilepath);
            Docx4J.toPDF(wordMLPackage,os);
            os.flush();
            os.close();
        } catch (Throwable e) {

            e.printStackTrace();
        } 
    }

}
 类似资料:
  • http://www.janolaw.de/export/livingwillgeneratedbyme.pdf http://www.janolaw.de/export/livingwillorg.docx

  • 我需要添加表到现有的docx文档,然后转换成Pdf文件,所以我使用Apache POI和Apache POI转换器库。这是我的代码: 但我有一个例外: org.apache.poi.xwpf.converter.core.xwpfConverterException:java.lang.IllegalArgumentException:PdfPTable构造函数中的列数必须大于零。在org.apa

  • 我正在尝试将包含表格和图像的文件转换为格式文件。 我四处寻找但没有得到妥善的解决方案,请求给出妥善正确的解决方案: 这里我尝试了: 请建议。 使用的罐子:

  • 我正在尝试将. docx文件转换为. pdf文件。现在我有以下代码: 以下是版本: 但是当我运行它时,我只得到一个空的pdf文件。我还得到以下堆栈跟踪: 我还应该做些什么?

  • 我有pdf格式的数据,我想把它转换成文本。我想删除图像,页眉和页脚,而数据将只以多行表格的形式保留,你能建议转换它的最佳方式吗?我尝试了Tabula和apache tika,但结果并不理想。