刚进公司 , 要实现一个报表生成的功能 , 前端提供html 代码 , 后端转换成PDF并且可以导出到OSS服务器 , 我现在知道是要干什么了 , 现在无从下手怎么办? 在公司呆了3给月了 , 平常都是CRUD , 写写SQL , 现在这个需求我完全懵逼 , 自信都心整丢了
crud 会了,该学怎么cv了,git拉个demo,成功实现功能后融合到自己的项目里,完工
根据你的任务,让公司的同事帮你分解一下,给你理清思路。然后百度找相关代码。
先学好基础,后端最基础就是与数据库操作部分,然后就向前端出发,后面各种架构设计,刚进去,最重要是掌握现有项目的代码架构设计,这样才能快速上手。
如果对你有帮助,可以点击我这个回答右上方的【采纳】按钮,给我个采纳吗,谢谢
wkhtmltopdf是一个用webkit网页渲染引擎开发的用来将html转成 pdf的工具,可跟多种脚本语言进行集成来转换文档,有windows、linux等平台版本。官网地址 http://wkhtmltopdf.org/
技术特点:
Wkhtmltopdf可直接把浏览器中浏览的网页转换成一个pdf,他是一个把html页面转换成pdf的软件(需要安装在服务器上)。使用时可通过java代码调用cmd指令完成网页转换为pdf的功能。
功能测试:
直接在cmd里输入测试指令,可查看处理进度。
原理:
使用wkhtmltopdf工具对url或html进行转换
使用命令:
Wkhtmltopdf https:baidu.com /usr/local/temp/baidu.pdf
安装
下载地址:https://wkhtmltopdf.org/downloads.html
wkhtmltopdf安装方法
1.解压wkhtmltox.tar到某个文件夹$DIR
2.设置环境变量
vim /etc/profile
在最后一行加 export PATH=DIR/wkhtmltox/bin:DIR/wkhtmltox/bin:PATH 保存退出、
source /etc/profile
3.运行 wkhtmltopdf 报wkhtmltopdf: error while loading shared libraries: libXrender.so.1: cannot open shared object file: No such file or directory这个错,请运行 apt-get/yum install libXrender*
运行 wkhtmltopdf 报wkhtmltopdf: error while loading shared libraries: libfontconfig.so.1: cannot open shared object file: No such file or directory这个错,请运行apt-get/yum install libfontconfig*
运行 wkhtmltopdf 报wkhtmltopdf: error while loading shared libraries: libXext.so.6: cannot open shared object file: No such file or directory这个错,请运行 apt-get/yum install libXext*
运行 wkhtmltopdf
yum install xorg-x11-fonts-75dpi.noarch
yum install xorg-x11-fonts-Type1.noarch
yum install icu.x86_64
yum install libjpeg
yum install libpng
优点:
支持中文、图片、CSS等
缺点:
有时对于html文件的转化可能比较慢,对于url的转化速度较快。存在失真情况
具体实现:
Java调用命令。
1 public class HtmlToPdf { 2 3 // wkhtmltopdf在系统中的路径 4 private static String toPdfTool = Consts.WEB.CONVERSION_PLUGSTOOL_PATH_WINDOW; 5 6 /** 7 * html转pdf 8 * 9 * @param srcPath 10 * html路径,可以是硬盘上的路径,也可以是网络路径 11 * @param destPath 12 * pdf保存路径 13 * @return 转换成功返回true 14 */ 15 public static boolean convert(String srcPath, String destPath) { 16 File file = new File(destPath); 17 File parent = file.getParentFile(); 18 // 如果pdf保存路径不存在,则创建路径 19 if (!parent.exists()) { 20 parent.mkdirs(); 21 } 22 StringBuilder cmd = new StringBuilder(); 23 if (System.getProperty("os.name").indexOf("Windows") == -1) { 24 // 非windows 系统 25 toPdfTool = Consts.WEB.CONVERSION_PLUGSTOOL_PATH_LINUX; 26 } 27 cmd.append(toPdfTool); 28 cmd.append(" "); 29 cmd.append(" \""); 30 cmd.append(srcPath); 31 cmd.append("\" "); 32 cmd.append(" "); 33 cmd.append(destPath); 34 35 System.out.println(cmd.toString()); 36 boolean result = true; 37 try { 38 Process proc = Runtime.getRuntime().exec(cmd.toString()); 39 HtmlToPdfInterceptor error = new HtmlToPdfInterceptor(proc.getErrorStream()); 40 HtmlToPdfInterceptor output = new HtmlToPdfInterceptor(proc.getInputStream()); 41 error.start(); 42 output.start(); 43 proc.waitFor(); 44 } catch (Exception e) { 45 result = false; 46 e.printStackTrace(); 47 } 48 49 return result; 50 } 51 52 public static void main(String[] args) { 53 // HtmlToPdf.convert("http://www.baidu.com", "F:/pdf/baidu.pdf"); 54 String filename = "JAVA将图片转换成pdf文件-CSDN博客"; 55 HtmlToPdf.convert("F:/pdf/"+filename+".html", "F:/pdf/"+filename+".pdf"); 56 // HtmlToPdf.convert("http://api.gyingyuan.com/", "F:/pdf/"+ UUID.randomUUID().toString()+".pdf"); 57 // HtmlToPdf.convert("https://www.aliyun.com/jiaocheng/285649.html", "F:/pdf/baidu.pdf"); 58 } 59 }
1 public class HtmlToPdfInterceptor extends Thread { 2 private InputStream is; 3 4 public HtmlToPdfInterceptor(InputStream is){ 5 this.is = is; 6 } 7 8 @Override 9 public void run(){ 10 try{ 11 InputStreamReader isr = new InputStreamReader(is, "utf-8"); 12 BufferedReader br = new BufferedReader(isr); 13 String line = null; 14 while ((line = br.readLine()) != null) { 15 System.out.println(line.toString()); //输出内容 16 } 17 }catch (IOException e){ 18 e.printStackTrace(); 19 } 20 } 21 }
效果:
URL转换
您的问题已经有小伙伴解答了,请点击【采纳】按钮,采纳帮您提供解决思路的答案,给回答的人一些鼓励哦~~
ps:开通问答VIP,享受5次/月 有问必答服务,了解详情↓↓↓
【电脑端】戳>>> https://vip.csdn.net/askvip?utm_source=1146287632
【APP 】 戳>>> https://mall.csdn.net/item/52471?utm_source=1146287632