Java将OFD文件转PDF文件

OFDRW 提供了将 OFD 文档导出为其他格式文档的能力,如导出为 PDF、图片、SVG、TXT、HTML 等。

OFDRW 转换模块在 2.0.0 之后抽象了多种文档导出接口,使用统一的 API 实现 OFD 文档导出功能。

如果你使用的是 2.0.0 以前版本,可参考 OFD 文件转换工具类(2.0.0版本之前)

注意: java >= 1.8

一、导入 jar 依赖包

1.1 Maven 项目引入 jar 包
<dependency>
    <groupId>org.ofdrw</groupId>
    <artifactId>ofdrw-converter</artifactId>
    <version>2.0.2</version>
</dependency>
1.2 非 Maven 项目直接下载导入 jar 包

点击下载:ofdrw-converter-2.0.2.jar

二、OFD 转 PDF

OFD 文档导出为 PDF 文件,该导出根据实现所使用的库不一致具有两种导出实现。

注意事项:

  • 导出无法保证文档效果一致性。
2.1基于 PDFBox 实现

实现类:org.ofdrw.converter.export.PDFExporterPDFBox

Path ofdPath = Paths.get("D:/ofd/daima.ofd");
Path pdfPath = Paths.get("D:/ofd/target/daima1.pdf");
try (OFDExporter exporter = new PDFExporterPDFBox(ofdPath, pdfPath)) {
    exporter.export();
} catch (IOException e) {
    e.printStackTrace();
}
2.2基于 iText 实现

实现类:org.ofdrw.converter.export.PDFExporterIText

Path ofdPath = Paths.get("D:/ofd/daima.ofd");
Path pdfPath = Paths.get("D:/ofd/target/daima2.pdf");
try (OFDExporter exporter = new PDFExporterIText(ofdPath, pdfPath)) {
    exporter.export();
} catch (IOException e) {
    e.printStackTrace();
}

三、OFD 转图片

OFD 文档导出为图片,图片格式支持 PNG、BPM、JPG。

实现类:org.ofdrw.converter.export.ImageExporter

注意事项:

  • 可以通过构造器指定导出的图片类型,目前支持 PNG、JPG、BPM,默认为 PNG 格式。
  • 可以通过构造器或方法设置导出图片的质量,也就是 ppm 参数,默认 ppm 为15。
  • 导出图片将存放于同一个目录,在该目录中图片以的页面索引作为文件名,如第1页的文件名为0.png。

示例:

Path ofdPath = Paths.get("D:/ofd/daima.ofd");
Path imgPath = Paths.get("D:/ofd/target");
try (ImageExporter exporter = new ImageExporter(ofdPath, imgPath, "PNG", 20d)) {
    exporter.export();
} catch (IOException e) {
    e.printStackTrace();
}

四、OFD 转 SVG 图形

OFD 文档导出为 SVG 图形,文本中的所有文字都将转换为矢量路径。

实现类:org.ofdrw.converter.export.SVGExporter

注意事项:

  • 可以通过构造器或方法设置导出 SVG 图形大小,也就是 ppm 参数,默认 ppm 为15。
  • 导出 SVG 图形文件将存放于同一个目录,在该目录中以页面索引作为文件名,如第1页的文件名为0.svg。

示例:

Path ofdPath = Paths.get("D:/ofd/daima.ofd");
Path svgPath = Paths.get("D:/ofd/target");
try (SVGExporter exporter = new SVGExporter(ofdPath, svgPath, 15d)) {
    exporter.export();
} catch (IOException e) {
    e.printStackTrace();
}

五、OFD 转 HTML 网页

OFD 文档导出为 HTML 网页,需要浏览器支持 HTML5 才可正常预览,由于是基于 SVG 方案导出的 HTML,因此导出文件可能较大。

实现类:org.ofdrw.converter.export.HTMLExporter

注意事项:

  • 若您需要调整 HTML 网页样式,可以通过继承 HTMLExporter 并覆盖 header、booter、margin_bottom 属性,使用自定义的 HTML 样式。
  • 导出的 HTML 网页需要浏览器支持 HTML5 才可正常预览。
    若页面文字内容由文字图元构成且都由 Unicode 组成,那么导出网页可能可以通过鼠标选中与复制。

示例:

Path ofdPath = Paths.get("D:/ofd/daima.ofd");
Path htmlPath = Paths.get("D:/ofd/target/daima.html");
try (HTMLExporter exporter = new HTMLExporter(ofdPath, htmlPath)) {
    exporter.export();
} catch (IOException e) {
    e.printStackTrace();
}

六、OFD 转 TXT 文本

OFD 文档导出为 TXT 文本文件,并非所有 OFD 页面都能导出文本,只有符合特定条件的 OFD 才可导出。

实现类:org.ofdrw.converter.export.TextExporter

注意事项:

  • 部分 OFD 文档由于采用字形索引来定位文字、有个 OFD 整个页面均为路径数据图元而不是文字图元、有的 OFD 页面整个都为图片等诸多原因,无法保证一定能够导出文本。
  • 由于文本布局等各种因素,导出文本顺序也难以与原文文本顺序一致。

示例:

Path ofdPath = Paths.get("D:/ofd/daima.ofd");
Path txtPath = Paths.get("D:/ofd/target/daima.txt");
try (TextExporter exporter = new TextExporter(ofdPath, txtPath)) {
    exporter.export();
} catch (IOException e) {
    e.printStackTrace();
}

大功告成,扫码下方二维码,查阅更多OFD读写库知识~


						█▀▀▀▀▀▀▀█████▀▀████▀▀▀▀▀▀▀█
						█ █▀▀▀█ █▄█▄▀█▄   █ █▀▀▀█ █
						█ █   █ █▄ ▄▀█ ▄█▀█ █   █ █
						█ ▀▀▀▀▀ █ ▄▀█ ▄ ▄ █ ▀▀▀▀▀ █
						█▀▀▀▀▀█▀▀▀ ▄▄▄▀ █▄▀█▀█▀█▀██
						█  ▄▄▄▄▀█▀█ ▄▀▀▀▀ ██ ▀▀█ ▀█
						█▀▀▀█  ▀██▀▀█▀▀▀▀█  ▄▀█▀▀ █
						█ █▀▄ ▄▀█▀▄▀▄▀█▀▀▄ ▀ ▀ █ ▀█
						█ █   █▀▄█▄█▄▀▀▀█ ▀   █▀█▄█
						█▀▀▀▀▀▀▀█ ▀▀▄█▀▄▄ █▀█ ▄▀▀▀█
						█ █▀▀▀█ █▀█▀ ▀▀▀  ▀▀▀ ▄▀ ▄█
						█ █   █ █  ▀▄█▀ ██▄▄█▄  ▄ █
						█ ▀▀▀▀▀ █ ▀▄ ▀▀▄▄▄     ▀▀ █
						▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀

  • 4
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

踮脚敲代码

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值