我有一个Java桌面服务。它目前使用Velocity模板来创建格式化的RTF文件。那些模板相当多,更改它们(或从Velocity移动)不是一个选项。我正在寻找一个快速和简单的方法来改变RTF文件到PDF格式,使用Java代码。我已经检查了以下途径。1。iText 2。OpenOffice 3。JodConverter不过,他们都是PDF创建者。我需要的东西,将RTF转换为PDF。请帮助。谢谢。
btqmn9zl1#
我已经在谷歌上搜索同样的问题很长一段时间了,这里是我的解决方案:使用documents 4j和microsoft office 2010(未尝试较新版本)(不需要在后台运行)。此解决方案将.rtf转换为.pdfPOM文件:
<dependencies> <dependency> <groupId>com.documents4j</groupId> <artifactId>documents4j-api</artifactId> <version>0.2.1</version> </dependency> <dependency> <groupId>com.documents4j</groupId> <artifactId>documents4j-util-conversion</artifactId> <version>0.2.1</version> </dependency> <dependency> <groupId>com.documents4j</groupId> <artifactId>documents4j-transformer</artifactId> <version>0.2.1</version> </dependency> <dependency> <groupId>com.documents4j</groupId> <artifactId>documents4j-util-all</artifactId> <version>0.2.1</version> </dependency> <dependency> <groupId>com.documents4j</groupId> <artifactId>documents4j-local</artifactId> <version>0.2.1</version> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>1.8.0-beta2</version> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-simple</artifactId> <version>1.8.0-beta2</version> </dependency> <dependency> <groupId>com.documents4j</groupId> <artifactId>documents4j-util-standalone</artifactId> <version>1.0.3</version> </dependency> <dependency> <groupId>com.documents4j</groupId> <artifactId>documents4j-transformer-msoffice-word</artifactId> <version>1.0.3</version> </dependency> <dependency> <groupId>com.google.guava</groupId> <artifactId>guava</artifactId> <version>23.0</version> </dependency> </dependencies>
包括所有的!在.rtf文件中,你需要一些字体和类似的东西。在java中使用的例子:
import com.documents4j.api.DocumentType; import com.documents4j.api.IConverter; import com.documents4j.job.LocalConverter; import java.io.BufferedInputStream; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.util.concurrent.ExecutionException; import java.util.concurrent.Future; import java.util.concurrent.TimeUnit; /** * * @author Neon/Jan Madle */ public class NewMain { /** * @param args the command line arguments * @throws java.io.FileNotFoundException */ public static void main(String[] args) throws FileNotFoundException, IOException, InterruptedException, ExecutionException { ByteArrayOutputStream bo = new ByteArrayOutputStream(); InputStream in = new BufferedInputStream(new FileInputStream(System.getProperty("user.dir") + File.separator +"out.rtf")); IConverter converter = LocalConverter.builder() .baseFolder(new File(System.getProperty("user.dir") + File.separator +"test")) .workerPool(20, 25, 2, TimeUnit.SECONDS) .processTimeout(5, TimeUnit.SECONDS) .build(); Future<Boolean> conversion = converter .convert(in).as(DocumentType.RTF) .to(bo).as(DocumentType.PDF) .prioritizeWith(1000) // optional .schedule(); conversion.get(); try (OutputStream outputStream = new FileOutputStream("out.pdf")) { bo.writeTo(outputStream); } in.close(); bo.close(); } }
希望有人觉得这个有用!
ymzxtsji2#
JODConverter帮助您使用Java将RTF文件转换为PDF。最新版本可以在here中找到。根据他们的网站JODConverter是Java OpenDocument Converter,它利用www.example.com在不同的Office格式之间转换文档,OpenOffice.org该网站为OpenDocument和Microsoft Office格式提供了可以说是最好的导入/导出过滤器。
2条答案
按热度按时间btqmn9zl1#
我已经在谷歌上搜索同样的问题很长一段时间了,这里是我的解决方案:使用documents 4j和microsoft office 2010(未尝试较新版本)(不需要在后台运行)。此解决方案将.rtf转换为.pdf
POM文件:
包括所有的!在.rtf文件中,你需要一些字体和类似的东西。在java中使用的例子:
希望有人觉得这个有用!
ymzxtsji2#
JODConverter帮助您使用Java将RTF文件转换为PDF。最新版本可以在here中找到。
根据他们的网站
JODConverter是Java OpenDocument Converter,它利用www.example.com在不同的Office格式之间转换文档,OpenOffice.org该网站为OpenDocument和Microsoft Office格式提供了可以说是最好的导入/导出过滤器。