pdf - DOCX Apache POI - 内部带有文本的形状/图像/艺术字未转换为 PDF
问题描述
我使用了以下代码:
package com.allianz.re.gim.service.util;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
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 PDF {
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
String inputFile = "C:/TEMP/question.docx";
String outputFile = "C:/TEMP/question.pdf";
if ((args != null) && (args.length == 2)) {
inputFile = args[0];
outputFile = args[1];
}
System.out.println("inputFile:" + inputFile + ",outputFile:" + outputFile);
FileInputStream in = new FileInputStream(inputFile);
XWPFDocument document = new XWPFDocument(in);
File outFile = new File(outputFile);
OutputStream out = new FileOutputStream(outFile);
PdfOptions options = null;
PdfConverter.getInstance().convert(document, out, options);
}
}
使用的依赖:
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>4.0.1</version>
</dependency>
<dependency>
<groupId>fr.opensagres.xdocreport</groupId>
<artifactId>fr.opensagres.poi.xwpf.converter.pdf</artifactId>
<version>2.0.1</version>
</dependency>
输入:
下面的 docx 在文本上放置了一个矩形,矩形的布局选项在“文本后面”,您可以从图像中看到它
pdf输出,我只有文字。矩形形状不存在。放置在文本后面的图像或放置在图像上的文字艺术也会发生同样的情况:
在使用这些依赖项和代码片段时,我能够
1.convert 使用相同字体的 docx 中的图像。
2.将简单的文本转换为 docx 相同的字体。
但有几个缺点是:
1. 无法转换图像,文本后面的布局选项(在图像顶部显示文本)无法正常工作。仅在 PDF 中转换文本。
2.同样的问题发生在艺术字或里面有一些文字的形状上。只有测试被转换。
有人能帮我吗?
解决方案
推荐阅读
- vuex - Vuejs - 将属性添加到具有反应性的数组中的每个项目
- html - 反应按钮悬停css伪类不起作用
- laravel - laravel Eloquent Relations withCount on 关系
- python - Jinja 2 - 显示我所有的话而不是一个
- makefile - C++ Makefile 路径包含和 src 目录 makefile
- r - noframenumbering:在 rmarkdown::beamer_presentation 中没有特定幻灯片的页码
- java - 带有@NamedNativeQueries 的休眠实体中的实体列表
- javascript - 光标跟随器在 Chrome 上滞后,在 Firefox 上流畅
- matlab - 在 Matlab 中制作表格
- go - 无法更新具有相同值的实体列