admin管理员组

文章数量:1605301

先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7

深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。





既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上Java开发知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以添加V获取:vip1024b (备注Java)

正文

com.aspose.words aspose-words 15.8.0 system ${project.basedir}/src/main/resources/lib/aspose-words-15.8.0-jdk16.jar

在打包的依赖中添加:

true

5:转换

String s = “Aspose.Total for JavaAspose.Words for JavaEnterprise20991231209912318bfe198c-7f0c-4ef8-8ff0-acc3237bf0d7sNLLKGMUdF0r8O1kKilWAGdgfs2BvJb/2Xp8p5iuDVfZXmhppo+d0Ran1P9TKdjV4ABwAgKXxJ3jcQTqE/2IRfqwnPf8itN8aFZlV3TJPYeD3yWE7IT55Gz6EijUpC7aKeoohTb4w2fpox58wWoF3SNp6sK6jDfiAUGEHYJ9pjU=”;
//去除水印
ByteArrayInputStream is = new ByteArrayInputStream(s.getBytes());
License license = new License();
license.setLicense(is);

//将XWPFDocument转换为InputStream
ByteArrayOutputStream b = new ByteArrayOutputStream();
//这里的document=XWPFDocument document,在下面的word转换中
document.write(b);
InputStream inputStream = new ByteArrayInputStream(b.toByteArray());

//这里的Document 的引入是
//import com.aspose.words.Document;
//import com.aspose.words.License;
//import com.aspose.words.SaveFormat;
Document doc = new Document(inputStream);
doc.save(outStream, SaveFormat.PDF);
b.close();
inputStream.close();
//下面再是转word里面最后的代码,关闭流

3:使用documents4j 的方式将word转换为PDF

1:引入依赖:

com.documents4j documents4j-local 1.0.3 com.documents4j documents4j-transformer-msoffice-word 1.0.3

2:转换如下:

//将XWPFDocument转换为InputStream
ByteArrayOutputStream b = new ByteArrayOutputStream();
//这里的document=XWPFDocument document,在下面的word转换中
document.write(b);
InputStream docxInputStream = new ByteArrayInputStream(b.toByteArray());

//下面的引入类为:
//import com.documents4j.api.DocumentType;
//import com.documents4j.api.IConverter;
//import com.documents4j.job.LocalConverter;
IConverter converter = LocalConverter.builder().build();
boolean execute = converter.convert(docxInputStream)
.as(DocumentType.DOCX)
.to(outStream)
.as(DocumentType.PDF).schedule().get();

b.close();
docxInputStream.close();

3:这里之前转换word方式记录如下

1:制作word模板,将需要转换的数值写成了${变量名}。

2:转换

//模板文件的地址
String filePath = “/usr/local/data/模板.docx”;
//Map存储需要替换的值
Map<String, Object> map = new HashMap<>();
map.put(“ d a t e " , d a t e ) ; m a p . p u t ( " {date}", date); map.put(" date",date);map.put("{datetime}”, datetime);
//写入
try {
// 替换的的关键字存放到Set集合中
Set set = map.keySet();
// 读取模板文档
XWPFDocument document = new XWPFDocument(new FileInputStream(filePath ));
/**
* 替换段落中的指定文字
*/
// 读取文档中的段落,回车符为一个段落。
// 同一个段落里面会被“:”等符号隔开为多个对象
Iterator itPara = document.getParagraphsIterator();
while (itPara.hasNext()) {
// 获取文档中当前的段落文字信息
XWPFParagraph paragraph = (XWPFParagraph) itPara.next();
List run = paragraph.getRuns();
// 遍历段落文字对象
for (int i = 0; i < run.size(); i++) {
// 获取段落对象
if (run.get(i) == null) { //段落为空跳过
continue;
}
String sectionItem = run.get(i).getText(run.get(i).getTextPosition()); //段落内容
//System.out.println("替换前 === "+sectionItem);
// 遍历自定义表单关键字,替换Word文档中的内容
Iterator iterator = set.iterator();
while (iterator.hasNext()) {
// 当前关键字
String key = iterator.next();
// 替换内容
sectionItem = sectionItem.replace(key, String.valueOf(map.get(key)));
}
//System.out.println(sectionItem);
run.get(i).setText(sectionItem, 0);
}
}

/**
* 替换表格中的指定文字
*/
//获取文档中所有的表格,每个表格是一个元素
Iterator itTable = document.getTablesIterator();
while (itTable.hasNext()) {
XWPFTable table = (XWPFTable) itTable.next(); //获取表格内容
int count = table.getNumberOfRows(); //表格的行数
//遍历表格行的对象
for (int i = 0; i < count; i++) {
XWPFTableRow row = table.getRow(i); //表格每行的内容
List cells = row.getTableCells(); //每个单元格的内容
//遍历表格的每行单元格对象
for (int j = 0; j < cells.size(); j++) {
XWPFTableCell cell = cells.get(j); //获取每个单元格的内容
List paragraphs = cell.getParagraphs(); //获取单元格里所有的段落
for (XWPFParagraph paragraph : paragraphs) {
//获取段落的内容
List run = paragraph.getRuns();
// 遍历段落文字对象
for (int o = 0; o < run.size(); o++) {
// 获取段落对象
if (run.get(o) == null || run.get(o).equals(“”)) {
continue;
}
String sectionItem = run.get(o).getText(run.get(o).getTextPosition()); //获取段落内容
if (sectionItem == null || sectionItem.equals(“”)) { //段落为空跳过
continue;
}
//遍历自定义表单关键字,替换Word文档中表格单元格的内容

结尾

这不止是一份面试清单,更是一种”被期望的责任“,因为有无数个待面试者,希望从这篇文章中,找出通往期望公司的”钥匙“,所以上面每道选题都是结合我自身的经验于千万个面试题中经过艰辛的两周,一个题一个题筛选出来再次对好答案和格式做出来的,面试的答案也是再三斟酌,深怕误人子弟是小,影响他人仕途才是大过,也希望您能把这篇文章分享给更多的朋友,让他帮助更多的人,帮助他人,快乐自己,最后,感谢您的阅读。

由于细节内容实在太多啦,在这里我花了两周的时间把这些答案整理成一份文档了,在这里只把部分知识点截图出来粗略的介绍,每个小节点里面都有更细化的内容!

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip1024b (备注Java)

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**

需要这份系统化的资料的朋友,可以添加V获取:vip1024b (备注Java)
[外链图片转存中…(img-sBCM0vCE-1713607663061)]

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

本文标签: 三种乱码器上方式格式