java-pdf转word,java开发面试笔试题

本文详细介绍了如何使用Java进行PDF到Word的转换,包括文字、图片和表格的处理。提供了不同方法,如PDF转图片、PDF转HTML等,讨论了转换过程中的样式和编码问题。还分享了相关代码资源和转换工具,适合开发者参考和学习。
摘要由CSDN通过智能技术生成


我总结出了很多互联网公司的面试题及答案,并整理成了文档,以及各种学习的进阶学习资料,免费分享给大家。
扫描二维码或搜索hairyang001加VX好友,拉你进【程序员面试学习交流群】免费领取。也欢迎各位一起在群里探讨技术。

 

注:原文来至 《 java-pdf转word

 

一: java Pdf 文字 转 Word

废话不说,直接上图

这里写图片描述

这里写图片描述

很简单的用法:
1、new个PDFBox对象
2、调用pdfToDoc()方法,再传一个参数(文件路径)

最新jar下载地址:链接:https://pan.baidu.com/s/1snqjpSx 密码:jujg 或者加QQ群: 464429490(在群文件中)

二:Java Pdf 图片表格 转 word

文章来源: 《 java-pdf转图片

很多人反应pdf转doc 图片丢失,表格丢失,样式丢失,编码问题等等。
没错这段代码就是只能把文字转为doc文件的

这里写图片描述

这里写图片描述

因为:stripper.writeText(doc,writer);
doc指doc文件
writer指 FileOutputStream fos=new FileOutputStream(“pdf文件地址”);
Writer writer=new OutputStreamWriter(fos,”UTF-8”);

所以我们想出了用js生成图片,或者pdf先转成图片

js全屏截图:

 

  1 function takeScreenshot() {

  2     html2canvas(document.body, {

  3         onrendered: function(canvas) {

  4             document.body.appendChild(canvas);

  5         },

  6     });

  7 }

 

js生成pdf:

 

  1 html2canvas(document.body, {

  2   onrendered: function(canvas) {

  3     var url = canvas.toDataURL();

  4     //document.body.appendChild(canvas);

  5     var doc = new jsPDF();

  6    doc.setFontSize(40);

  7    //doc.text(35, 25, "yanhui"); 

  8 

  9    var imgAsDataURL = url;

 10    doc.addImage(imgAsDataURL, 'JPEG', 15, 40, 420, 180);

 11    doc.save('艳辉网.pdf');

 12   },

 13   width: 600,

 14   height: 600

 15 });

 

js预览pdf

 

  1 window.onload = function () {

  2          var success = new PDFObject({

  3              url: "pdf/test.pdf",

  4              pdfOpenParams: {

  5                  scrollbars: '0',

  6                  toolbar: '0',

  7                  statusbar: '0'

  8                  }

  9           }).embed("pdf");

 10      };

 

js那么强大,我们的java也不甘示弱

java实现pdf转图片 图片转pdf

 

  1 //将pdf装图片 并且自定义图片得格式大小

  2         File file = new File(pdfPath);

  3         try {

  4             PDDocument doc = PDDocument.load(file);

  5             PDFRenderer renderer = new PDFRenderer(doc);

  6             int pageCount = doc.getNumberOfPages();

  7             for (int i = 0; i < pageCount; i++) {

  8                 BufferedImage image = renderer.renderImageWithDPI(i, 240);

  9                 BufferedImage srcImage = resize(image, image.getWidth(), image.getHeight());

 10                 ImageIO.write(srcImage, "PNG", new File(pngPath.replace(".",i+".")));

 11             }

 12         } catch (IOException e) {

 13             e.printStackTrace();

 14         }

 

 

  1 BufferedImage image = ImageIO.read(new FileInputStream(pngPath));

  2          List<BufferedImage> images=new ArrayList<BufferedImage>();

  3              BufferedImage srcImage = resize(image, image.getWidth(), image.getHeight());

  4              images.add(srcImage);

  5          //合成图片转pdf

  6          createPDFFromImage(pdfPath,images);

 

java生成pdf,支持中文编码

 

  1 Document document = createDoc(filename);

  2         // 打开文档

  3         document.open();

  4         // 文档里写入

  5         Paragraph centerPar = convertParToChinese("艳辉网", 20, bold, red);

  6         centerPar.setAlignment(Element.ALIGN_CENTER);

  7 

  8         document.add(centerPar);

  9 //      document.add(new Paragraph("
"));

 10 //      document.add(convertParToChinese("黑色", 18, boldItalic, black));

 11         document.add(new Paragraph("
"));

 12         document.add(convertParToChinese("你最爱上的艳辉博客,加QQ群494808400,即可获取更多java资料。", 12, normal, black));

 13         document.add(new Paragraph("
"));

 14         // 文档写入图片

 15         if (checkFile(imgPath)) {

 16             Image image = writeImg(imgPath);

 17             document.add(image);

 18             document.add(new Paragraph("
"));

 19         }

 20 //      document.add(new Paragraph("
"));

 21 //      // 生成三列表格 

 22 //      PdfPTable table = new PdfPTable(3); 

 23 //      // 设置表格具体宽度 

 24 //      table.setTotalWidth(90); 

 25 //      // 设置每一列所占的长度 

 26 //      table.setWidths(new float[] { 50f, 15f, 25f }); 

 27 //      PdfPCell cell1 = new PdfPCell(); 

 28 //      Paragraph para = new Paragraph("aaaaa"); 

 29 //      cell1.setPhrase(para); 

 30 //      table.addCell(cell1); 

 31 //      table.addCell(new PdfPCell(new Phrase("IText"))); 

 32 //      table.addCell(new PdfPCell(new Phrase("IText"))); 

 33 //      document.add(table); 

 34 

 35 //      document.add(new Paragraph("
")); 

 36 //      document.add(new Paragraph("
")); 

 37         // PDF同行显示 

 38 //      Paragraph par = new Paragraph(); 

 39 //      Chunk chunk1 = new Chunk( convertChunkByChinese("考试分数:", 20, bold, black)); 

 40 //      Chunk chunk2 = new Chunk(convertChunkByChinese("93", 20, bold, red));

 41 //      par.add(chunk1);

 42 //      par.add(chunk2); 

 43 //      // 设置整体缩进

 44 //      par.setFirstLineIndent(setting); 

 45 //      // 居中 

 46 //      Paragraph centerPar = convertParToChinese("剧中测试", 16, italic, black); 

 47 //      centerPar.setAlignment(Element.ALIGN_CENTER); 

 48 //      document.add(par);

 49         // 新建章节 

 50         // 章节标题 

 51 //      Paragraph chapterTitle = new Paragraph(convertParToChinese("章节标题", 18, boldItalic, blue));

 52 //      Chapter chapter1 = new Chapter(chapterTitle, 1);

 53 //      chapter1.setNumberDepth(0);

 54 //      Paragraph p = new Paragraph("test!!!!!");

 55 //      chapter1.add(p);

 56 //      document.add(chapter1); 

 57 

 58         //关闭文档 

 59         document.close();

 

还有pdf2word2.0

 

  1 PDDocument doc=PDDocument.load(new File(name1));

  2         int pagenumber=doc.getNumberOfPages();

  3 

  4         name1 = name1.substring(0, name1.lastIndexOf("."));

  5 //      String dirName = "D:\pdf\";// 创建目录D:\pdf\a.doc

  6         String dirName = name1;// 创建目录D:\pdf\a.doc

  7         //createDir(dirName);// 调用方法创建目录

  8         String fileName = dirName + ".doc";// 创建文件

  9         createFile(fileName);

 10         FileOutputStream fos=new FileOutputStream(fileName);

 11         Writer writer=new OutputStreamWriter(fos,"UTF-8");

 12         PDFTextStripper stripper=new PDFTextStripper();

 13 

 14 //      doc.addSignature(arg0, arg1, arg2);

 15 

 16         stripper.setSortByPosition(true);//排序

 17         //stripper.setWordSeparator("");//pdfbox对中文默认是用空格分隔每一个字,通过这个语句消除空格(视频是这么说的)

 18         stripper.setStartPage(1);//设置转换的开始页

 19         stripper.setEndPage(pagenumber);//设置转换的结束页

 20         stripper.writeText(doc,writer);

 21         writer.close();

 22         doc.close();

 23         System.out.println("pdf转换word成功!");

 

这里写图片描述

这里写图片描述

这里写图片描述

三:java-pdf转word3.0

注:原文来源 《 java-pdf转word3.0

java-pdf转word3.0
这里写图片描述

2.0是pdf转图片,现在出3.0图片再转成word,写1.0的时候目的是使用pdfbox.jar将pdf文件转成word文件,在wps中转的话需要充会员,如果使用java的话,只需要配置环境,大大节省了一笔money,渐渐大部分很多做java的都需要写这个需求,有的我加了别人,别人不提供源代码,只说了方法,但是我也很感激。。。有很多人加我QQ,就说我这个那个pdf转word能不能实现,说我没提供代码是不是骗子什么的,对于这个pdf转word要求保留样式,保留图片,,别人wps转也需要收钱的,他们开发不一定是用java开发的,你也可以用C++开发一个,这里pdf转word这个需求只是简单的实现文字转换,当然你也可以加QQ一起讨论,以后会出4.0 5.0 5.2 。。。版本的。说了很多煽情的话,是时候展现正真的技术了。

首先分享pdf转html:
这是小编在网上copy下来的,先整个下载pdf2htmlEX-v1.0文件夹

 

  1 pdf2html("D:\DesignSoftware\pdf\pdf2htmlEX-v1.0\pdf2htmlEX.exe",

  2                  "D:\a.pdf",

  3                  "D:\HTMLPDF","a1.html");

 

意思是将D盘的a.pdf转成a1.html并保存在D盘HTMLPDF目录中。

然后分享的是html转word:
也是百度下来的

 

  1 new Html2Doc().writeWordFile("D:/a3.html","D:/test222.doc",1);

 

意思是将D盘的a3.html转成test222.doc并保存在D盘目录中。
其中1表示本地html 2表示在线 在线并没有开放,我测试了在线的转成doc后样式全丢失,就像感觉怀疑人生。。。

本章博客的代码全部公开免费,因为大部分代码都是东拼西凑下来完成需求的,但是1.0和2.0的代码需要开通我们艳辉vip才能获取。

这样你的需求就能实现pdf转word时,只要pdf读取出图片,然后再将图片写入word文档,就能实现pdf转word保存图片的效果。然后有人就会问,保存图片却不能编辑,有毛线用啊。
所以可以看看2.0的,pdf转word时,我们先做一个word模板,然后再将数据填进去,这样word就能实现编辑效果,缺点就是要有固定的模板,变化能力差。想到更好的方法可留言。喷我也可留言,反正被喷都不是第一次,这部分代码可以免费下载,可以加QQ490647751,回复java-pdf转word3.0,即可获取代码学习。

小编想了pdf转html,html再转word,但是html转word样式和图片也丢失,无奈放弃。。。

 


转载:https://www.cnblogs.com/ios9/p/8661750.html

推荐内容:
以技术面试官的经验分享毕业生和初级程序员通过面试的技巧(Java后端方向)
Java面试知识点之计算机网络篇(一)
JAVA一路走来面试过的问题
Java面试通关要点
一次Java解析数独的经历
java高级面试感想
大白话说Java反射:入门、使用、原理
15个顶级Java多线程面试题及答案
java面试题整理
Java通过BCrypt加密

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值