JAVA萌新这么在公司站稳脚跟

刚进公司 , 要实现一个报表生成的功能 , 前端提供html 代码 , 后端转换成PDF并且可以导出到OSS服务器 , 我现在知道是要干什么了 , 现在无从下手怎么办? 在公司呆了3给月了 , 平常都是CRUD ,  写写SQL , 现在这个需求我完全懵逼 , 自信都心整丢了 

crud 会了,该学怎么cv了,git拉个demo,成功实现功能后融合到自己的项目里,完工

根据你的任务,让公司的同事帮你分解一下,给你理清思路。然后百度找相关代码。

先学好基础,后端最基础就是与数据库操作部分,然后就向前端出发,后面各种架构设计,刚进去,最重要是掌握现有项目的代码架构设计,这样才能快速上手。

如果对你有帮助,可以点击我这个回答右上方的【采纳】按钮,给我个采纳吗,谢谢

 

PDF技术 -Java实现Html转PDF文件  

 

wkhtmltopdf是一个用webkit网页渲染引擎开发的用来将html转成 pdf的工具,可跟多种脚本语言进行集成来转换文档,有windows、linux等平台版本。官网地址 http://wkhtmltopdf.org/

 

技术特点:

Wkhtmltopdf可直接把浏览器中浏览的网页转换成一个pdf,他是一个把html页面转换成pdf的软件(需要安装在服务器上)。使用时可通过java代码调用cmd指令完成网页转换为pdf的功能。

功能测试:

直接在cmd里输入测试指令,可查看处理进度。

https://images2017.cnblogs.com/blog/626790/201707/626790-20170728145110133-2123660962.png

原理:

使用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