使用 JS 和 CSS 做一个图片到 PDF 的转换器

本文正在参与【[ 面霸养成记 ] 】 征文活动,一起来聊聊校招的那些事吧,牛客周边和百元京东卡等你来领~

哈喽大家好,我是 海拥 ,专注于前端知识的分享。今天将给大家带来的是使用 JS 和 CSS 做一个图片到 PDF 的转换器,可以说是非常的实(duo)用(yu)了。

大家一定要记得点赞收藏呀!!!

这是一个比较简单的 JavaScript 项目,可以将图片转换为 PDF 文件。不过除了图片之外的其他文件类型暂时还转换不了(别问,问就是能力有限)。我们可以从 HTML 中获得不同类型的输入。其中之一就是文件,这里我选择用只接受输入".png, .jpg, .jpeg"中的图片,所以你们也只能选择这些图片类型。

JavaScript 实现图片转 PDF

在线演示地址:https://haiyong.site/tools/pdf.html

如你所见,我们现在已经在渐变背景上创建了一个框。这个盒子有一个小显示器,你可以在该框中看到选定的图片,这就是后面我们要转换为 PDF 的图片。

在这里插入图片描述

如何使用 JavaScript 将图片转换为 pdf ?这个PDF转换器有两个按钮。一个按钮用来选择图片,一按钮转用来下载 PDF 文件。 不过这里有个问题是你不能一次选择多个图片。

第一步: PDF Converter的基本结构

项目的基本结构是使用以下 HTML 和 CSS 创建的。首先我们为网页添加了渐变背景色,然后创建一个盒子。

HTML

<div class="container">

</div>

CSS

*,
*:after,
*:before{
 -webkit-box-sizing: border-box;
 -moz-box-sizing: border-box;
 -ms-box-sizing: border-box;
 box-sizing: border-box;
}

body{
 font-family: arial;
 font-size: 16px;
 margin: 0;
 background: linear-gradient(133deg, #4abeb2, #3c57d2);
 color: #000;
 display: flex;
 align-items: center;
 justify-content: center;
 min-height: 100vh;
}

.container{
  background: white;
  width: 450px;
  padding: 30px;
  border-radius: 5px;
}

在这里插入图片描述

第二步: 图片预览框

现在已经创建了一个可以查看图片的区域。n可以在此处看到你将选择转换为 PDF 的图片的预览。这个盒子使用最大宽度 400px 和最小高度 200px.

HTML

<img id="showImg" src="images/img.png">

CSS

#showImg{
 display: block;
 margin: 0 auto;
 max-width: 400px;
 min-height: 200px;
 background: #174353;
 border-radius: 5px;
}

在这里插入图片描述

第 3 步: 图片到 PDF 转换器的按钮

现在已经创建了两个按钮。第一个按钮是使用输入创建的,用来选择文件,第二个按钮用来下载 PDF 文件。

HTML

 <div class="button">
   <div class="upload">
    <input type="file" onChange="loadFile(event)" name="" accept=".png, .jpg, .jpeg">
    上传图片
  </div>
    <button onClick="pdfDown()">下载PDF</button>
</div>

CSS

input{
 position: absolute;
 left: 0;
 top: 0;
 width: 100%;
 height: 100%;
 opacity: 0;
 z-index: 1;
}

.button{
  display: flex;
}
button,.upload{
 width: 220px;
 margin: 50px 20px 10px 20px ;
 text-align: center;
 position: relative;
 padding: 10px 5px;
 font-size: 17px;
 outline: none;
 color: #fff;
 border: none;
 background-color: #023780;
 border-radius: 5px;
 display: block;
}

.upload{
 background: #a74901;
}

在这里插入图片描述

第 4 步: 在 JavaScript 中实现图片转换到 PDF

现在是时候使用 JS 实现图片到 PDF 的转换了。

JavaScript

var newImage, showImg;
function loadFile(event) {
  showImg = document.getElementById('showImg');
  showImg.src = URL.createObjectURL(event.target.files[0]);

  newImage = document.createElement('img');
  newImage.src = URL.createObjectURL(event.target.files[0]);

  showImg.onload = function() {
    URL.revokeObjectURL(showImg.src) 
}
};

function pdfDown(){
  console.log(newImage)
  var doc = new jsPDF();
  doc.addImage(newImage,10,10);
  doc.save('ImgToPDF.pdf')
}

在这里插入图片描述

完整代码

完整源码已经打包上传到了GitHub,地址:https://github.com/wanghao221/moyu

相信看到这里你应该也基本掌握了是如何使用上面的代码做一个图片-PDF 转换器的。如果有任何问题,都可以在评论区告诉我。

最后,不要忘了❤或📑支持一下哦,你的支持是海海更新的动力!关注我后面会持续分享面试经验 & 前端相关的专业知识。

最后祝大家都能找到满意的实习和 offer!

全部评论
抢个一楼
点赞
送花
回复
分享
发布于 2022-07-28 15:24
实用性Max!
点赞
送花
回复
分享
发布于 2022-07-28 15:28
网易互娱
校招火热招聘中
官网直投
太强了!
点赞
送花
回复
分享
发布于 2022-07-28 16:03
太强了
点赞
送花
回复
分享
发布于 2022-07-28 18:56
太强了
点赞
送花
回复
分享
发布于 2022-07-28 22:13
厉害了,大佬
点赞
送花
回复
分享
发布于 2022-07-29 12:12
什么也不用说,先收藏了
点赞
送花
回复
分享
发布于 2022-07-29 12:22
感谢分享
点赞
送花
回复
分享
发布于 2022-07-29 12:32
宣传一下奇虎360秋招2023届内推方式如下: 【1】官网投递需要附带填写内推码:https://360campus.zhiye.com/jobs 内推码:IVKMAA 【2】通过以下链接投递也属于内推途径:https://neitui.italent.cn/360campus/sharejobs?shareId=6491b4de-f28d-4d71-b324-14a7e897552e&;rt=1 以上两种投递方式均可! 投递完可以私聊我加联系方式跟进内推进度
点赞
送花
回复
分享
发布于 2022-07-30 21:49
考虑小红书吗,免费改简历,********,https://pegasus.xiaohongshu.com/recommend/job-list/XHSTOKEN-cjhvVkFDTlFvTUxxekJQb2xaUGVjblY5T1l3V0RrWVhKRk5VVFF2U0FMTT0=?positionName=red
点赞
送花
回复
分享
发布于 2022-07-31 14:09

相关推荐

21 1 评论
分享
牛客网
牛客企业服务