当前位置: 首页 > news >正文

java将doc文件转pdf

将doc文件转为pdf

itextpdf+poi 方案,针对doc文件,非docx
缺点,不支持负责的格式,不支持图标,图片等。

需要的依赖

  <!-- https://mvnrepository.com/artifact/com.itextpdf/itextpdf --><dependency><groupId>com.itextpdf</groupId><artifactId>itextpdf</artifactId><version>5.5.13.3</version></dependency><!-- https://mvnrepository.com/artifact/org.apache.poi/poi-ooxml --><dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</artifactId><version>4.1.2</version></dependency><!-- https://mvnrepository.com/artifact/org.apache.poi/poi-ooxml-schemas --><dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml-schemas</artifactId><version>4.1.2</version></dependency><dependency><groupId>org.apache.poi</groupId><artifactId>ooxml-schemas</artifactId><version>1.1</version></dependency><!-- https://mvnrepository.com/artifact/org.apache.poi/poi-scratchpad --><dependency><groupId>org.apache.poi</groupId><artifactId>poi-scratchpad</artifactId><version>4.1.2</version></dependency>

java代码


import com.google.common.io.Files;
import com.itextpdf.text.Document;
import com.itextpdf.text.DocumentException;
import com.itextpdf.text.Font;
import com.itextpdf.text.Paragraph;
import com.itextpdf.text.pdf.BaseFont;
import com.itextpdf.text.pdf.PdfWriter;
import lombok.extern.slf4j.Slf4j;
import org.apache.poi.hwpf.HWPFDocument;
import org.apache.poi.hwpf.extractor.WordExtractor;import java.io.*;/*** @Description 将doc文件转换为pdf*/
@Slf4j
public class DocToPdfUtil {public static void toPdf(File orgFile, String outputFile) throws IOException {File file = new File(outputFile);try {ByteArrayOutputStream outputStream = toPdf(orgFile);Files.write(outputStream.toByteArray(), new File(outputFile));} catch (Exception e) {e.printStackTrace();}}public static ByteArrayOutputStream toPdf(File file) throws IOException, DocumentException {Document pdfDoc = null;WordExtractor extractor = null;try {// 读取DOC文件HWPFDocument doc = new HWPFDocument(new FileInputStream(file));extractor = new WordExtractor(doc);ByteArrayOutputStream outputStream = new ByteArrayOutputStream();// 创建PDF文档pdfDoc = new Document();PdfWriter.getInstance(pdfDoc, outputStream);pdfDoc.open();// 写入内容String[] paragraphs = extractor.getParagraphText();// 加载中文字体BaseFont baseFont = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.EMBEDDED);Font font = new Font(baseFont, 12);for (String text : paragraphs) {Paragraph p = new Paragraph(text, font);pdfDoc.add(p);}log.info("==========doc转换pdf成功===============" + file.getAbsolutePath());return outputStream;} catch (Exception e) {log.info("==========doc转换pdf失败===============" + file.getAbsolutePath());e.printStackTrace();throw e;} finally {// 关闭资源if (null != pdfDoc) {pdfDoc.close();}if (null != extractor) {extractor.close();}}}
}

测试用例

 DocToPdfUtil.toPdf(new File("C:\\mydoc\\明朝那点事.doc"), "C:\\mydoc\\明朝那点事" + System.currentTimeMillis() + ".pdf");

在这里插入图片描述

遇到的问题

转换的文件不显示中文

原因:字体问题,请设置字体。

// 加载中文字体BaseFont baseFont = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.EMBEDDED);Font font = new Font(baseFont, 12);
http://www.dtcms.com/a/353119.html

相关文章:

  • PDF补丁丁:开源多年,完全免费的多功能 PDF 工具箱
  • Magicodes.IE.Pdf 生成导出PDF文件 bytes Stream FileStreamResult 下载
  • 像WPS Office 一样处理pdf页面尺寸
  • OpenGL 视差贴图
  • UVa11607 Cutting Cakes
  • Java垃圾回收器:从SerialGC到G1的演进/速通
  • 流程控制语句(1)
  • 如何检查 Linux 系统的内存使用情况
  • vue2实现背景颜色渐变
  • 【目标检测】论文阅读4
  • 分布式2PC理论
  • 大脑的藏宝图——神经科学如何为自然语言处理(NLP)的深度语义理解绘制新航线
  • (11)用于无GPS导航的制图师SLAM(一)
  • 【Android】原安卓生态发起网络GET请求 Post请求
  • 【87页PPT】智慧方案智慧校园智能化综合建设方案(附下载方式)
  • Linux操作系统—进程
  • 基于Prometheus Pushgateway与Alertmanager的自定义指标监控与告警实践指南
  • 【HTML】隐藏滚动条但保留功能
  • 年度优质会议推荐:【西安石油大学主办|IEEE出版|往届均EI】第七届智能控制、测量与信号处理国际学术会议 (ICMSP 2025)
  • Playwright进阶指南 (6) | 自动化测试实战
  • 从 GRIT 到 WebUI:Chromium 内置资源加载与前端展示的完整链路解析
  • 寻找AI——初识墨刀AI
  • 【FPGA】VGA显示-贪吃蛇
  • oracle 表空间扩容(增加新的数据文件)
  • 浅聊达梦数据库物理热备的概念及原理
  • VESA时序检测模块设计verilog实现
  • 力扣hot100:字母异位词分组和最长连续序列(49,128)
  • Ansible的介绍+ansible平台部署
  • 互联网大厂Java面试深度解析:从基础到微服务云原生的全场景模拟
  • 公开课程 | 大规模图数据管理与分析 第二讲:图的度量、性质与生成模型