linux java中使用POI将word转为PDF时无法显示文字

背景:

在windos上本地调试时使用POI将word转为PDF时, PDF无法显示文字的原因以及解决方案:
我的是在linux7.9上,原因是生成world时候汉字正常,转pdf时没有汉字,多次调查后发现没有
宋体:

原因1:字体不存在问题, word中使用的字体在系统(windows或者linux)上一定要已经安装, 否则PDF无法显示文字, 将需要的字体下载下来, 复制到

1)windows的C:\Windows\Fonts文件夹下面, 然后重启机器将新添加的字体加载到内存.

2)linux系统中将字体放到/usr/share/fonts文件夹下面,

fc-list #查看字体列表
mkfontscale #建立字体缓存
mkfontdir
fc-cache -fv #刷新缓存

可以在这个目录下创建一个目录,在目录里放你的字体,记住目录权限是755,字体权限是644,完事刷新一下,不行重启。

cp xx.ttf /usr/share/fonts/myfonts
mkfontscale
mkfontdir
#-f强制扫描,-v过程
fc-cache -fv

原因2: 字体使用问题, 本地windows系统调试时,word转PDF无法显示文字, 因为word中使用的加粗功能, 有时POI将word转为PDF时无法加粗, 导致PDF无法出现文字,

解决办法: 将所有加粗字体去掉, 使用宋体字, 字号可以随便设置大小.
本人是使用宋体11号字,PDF可以出现文字, 加粗不可以.
在这里插入图片描述

————————————————
原文链接:https://blog.csdn.net/qq_42889751/article/details/120350523

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Java使用POI可以将Word文档转换为PDF格式。具体步骤如下: 1. 导入POI库 在Java项目,需要导入POI库,以便使用POI提供的API。 2. 读取Word文档 使用POI的XWPFDocument类可以读取Word文档。代码如下: FileInputStream fis = new FileInputStream("test.docx"); XWPFDocument document = new XWPFDocument(fis); 3. 创建PDF文档 使用iText库可以创建PDF文档。代码如下: PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream("test.pdf")); document.open(); 4. 将Word文档内容写入PDF文档 使用iText的PdfContentByte类可以将Word文档内容写入PDF文档。代码如下: PdfContentByte cb = writer.getDirectContent(); List<XWPFParagraph> paragraphs = document.getParagraphs(); for (XWPFParagraph paragraph : paragraphs) { List<XWPFRun> runs = paragraph.getRuns(); for (XWPFRun run : runs) { String text = run.getText(); cb.showText(text); } } 5. 关闭文档 最后需要关闭文档。代码如下: document.close(); 这样就可以将Word文档转换为PDF格式了。 ### 回答2: Java是一种广泛使用的编程语言,而POIJava语言的一个开源项目,主要用于读取、创建和编辑Microsoft Office格式的文档,包括Word、Excel、PowerPoint等。在Java,我们可以使用POI来将一个Word文档转换成PDF格式的文档。具体的做法如下: 1. 首先我们需要将POI的相关依赖加入到我们的项目,通常可以使用Maven或Gradle来进行依赖管理。 2. 然后我们需要使用POI打开需要转换的Word文档,可以使用XWPFDocument类来实现。 3. 接下来,我们需要使用Apache FOP来生成PDF文档。FOP是一个Apache开源项目,用于将XML和XSL-FO文档转换成PDF、PostScript、PCL等格式的文档。在Java,我们可以通过Maven或Gradle将其引入到项目。 4. 然后,我们创建一个XSL-FO模板文件,它描述了我们需要生成的PDF文档的样式和内容。我们可以使用Apache FOP提供的示例文件作为起点。这个过程需要一定的XSLT编程知识。 5. 接下来,我们使用Java代码来生成PDF文档。我们可以使用Apache FOP提供的API来生成PDF文档。我们需要将XWPFDocument对象转换成XSL-FO对象,再使用Apache FOP将XSL-FO对象转换成PDF文档。这个过程需要一定的Java编程知识。 6. 最后,我们将生成的PDF文档保存到本地或上传到云端。我们可以使用Java提供的IO类来实现这个过程。 总之,通过使用POI和Apache FOP,我们可以轻松地将Word文档转换成PDF格式的文档。这对于一些需要在Web应用生成和展示PDF文档的业务场景非常有用。 ### 回答3: Java使用POI可以很方便地将Word文档转换为PDF文件。POI是一个开源的Java API,它支持用Java操作Microsoft Office文档,包括Word、Excel、PowerPoint等。 POI的操作非常简单,主要的操作步骤如下: 1. 加载Word文档 首先需要使用POI加载Word文档。可以使用HWPFDocument类加载.doc格式的Word文档,或者使用XWPFDocument类加载.docx格式的Word文档。 2. 设置PDF输出路径和文件名 在将Word文档转换为PDF文件,需要指定输出路径和文件名。可以使用Java的File类来设置输出路径和文件名。 3. 将Word文档写入PDF文件 使用iText库将Word文档写入PDF文件。可以使用iText的PdfWriter类打开PDF文件并写入Word文档。 4. 保存PDF文件 最后,在将Word文档写入PDF文件后,需要使用Java的FileOutputStream类来将PDF文件保存到指定的输出路径和文件名。 上述步骤的代码实现可以参考以下示例: ```java import java.io.*; import org.apache.poi.hwpf.HWPFDocument; import org.apache.poi.xwpf.usermodel.XWPFDocument; import com.itextpdf.text.Document; import com.itextpdf.text.pdf.PdfWriter; public class WordToPDF { public static void convertToPDF(File wordFile, File pdfFile) { try { InputStream in = new FileInputStream(wordFile); OutputStream out = new FileOutputStream(pdfFile); if (wordFile.getName().endsWith(".doc")) { HWPFDocument doc = new HWPFDocument(in); Document pdfDoc = new Document(); PdfWriter.getInstance(pdfDoc, out); pdfDoc.open(); pdfDoc.addAuthor(doc.getSummaryInformation().getAuthor()); pdfDoc.addCreator(doc.getSummaryInformation().getAuthor()); pdfDoc.addTitle(doc.getSummaryInformation().getTitle()); pdfDoc.addSubject(doc.getSummaryInformation().getSubject()); pdfDoc.addKeywords(doc.getSummaryInformation().getKeywords()); pdfDoc.addCreationDate(); pdfDoc.addProducer(); pdfDoc.newPage(); pdfDoc.close(); } else if (wordFile.getName().endsWith(".docx")) { XWPFDocument doc = new XWPFDocument(in); PdfWriter.getInstance(new Document(), out); new PDFWordConverter().convert(doc, out); } in.close(); out.close(); System.out.println("转换成功!"); } catch (Exception e) { System.out.println("转换失败: " + e.getMessage()); } } public static void main(String[] args) { File wordFile = new File("word.doc"); File pdfFile = new File("pdf.pdf"); convertToPDF(wordFile, pdfFile); } } ``` 上述示例可以将.doc或.docx格式的Word文档转换为PDF文件,并输出转换结果。有了POI和iText库,Java可以很方便地实现Word文档转换为PDF文件的功能。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值