-
2020-08-07 15:22:10
web页中有个'下载'按钮,需求想让点击'下载'的时候把图片下载到相册,查看web页发现,需要保存到相册的内容是PDF,不是图片,因为这个web页面是银行的,不是我们自己的,而且没法直接拿到这个PDF的下载地址进行文件下载;
想着就先把web页内容转换成PDF,然后把PDF文件转成图片保存到相册中,以下是实现的代码:
1、将WKWebView转成PDF
import UIKit class PDFRender: UIPrintPageRenderer { // A4纸大小 595*842 let pageFrame:CGRect = CGRect(x: 0.0, y: 0.0, width: 595.2, height: 841.8) override init() { super.init() // 设置打印纸的尺寸大小 self.setValue(pageFrame, forKey: "paperRect") // 设置内容区域大小 self.setValue(pageFrame, forKey: "printableRect") } /// 绘制PDF并生成NSData func drawPDF() -> NSData! { let data:NSMutableData = NSMutableData() // 小心!第二个参数如果设置为CGRect.zero,PDF尺寸就会是默认的 612*792 UIGraphicsBeginPDFContextToData(data, pageFrame, nil) self.prepare(forDrawingPages: NSRange.init(location: 0, length: self.numberOfPages)) let bounds:CGRect = pageFrame for i in 0..<self.numberOfPages{ UIGraphicsBeginPDFPage() self.drawPage(at: i, in: bounds) } UIGraphicsEndPDFContext() return data } } // 调用方法 private func PDFRenderToImage() { DispatchQueue.main.asyncAfter(deadline: DispatchTime.now() + 0.5, execute: { // 创建打印渲染 let printPageRenderer: PDFRender = PDFRender() // 获取渲染格式 let viewFormatter: UIViewPrintFormatter = self.webView.viewPrintFormatter() // 设置渲染格式 printPageRenderer.addPrintFormatter(viewFormatter, startingAtPageAt: 0) // 将HTML渲染为PDF let pdfData: NSData = printPageRenderer.drawPDF() // 输出文件 let pdfFilename: String = "\(NSHomeDirectory())/Documents/test\(NSDate()).pdf" // 保存 pdfData.write(toFile: pdfFilename, atomically: true) // // 获取文件的保存位置 // let url = URL.init(fileURLWithPath: pdfFilename) print("-------文件的保存位置", pdfFilename) let handler = XZPDFToImage() handler.getUIImage(fromPDFPage: 1, filePath: pdfFilename) { (isSuccess) in self.hiddenAnimation() if isSuccess { self.showMessage(msg: "保存成功!") }else { self.showMessage(msg: "保存失败!") } } }) }
2、PDF转图片保存到相册
.h typedef void(^saveCompletion)(BOOL isSuccess); @property (copy, nonatomic) saveCompletion saveCompletion; /// 将web页转换成html - (void)getUIImageFromPDFPage: (int)page_number filePath: (NSString*)pdfPath completion: (saveCompletion)completion; .m - (void)getUIImageFromPDFPage: (int)page_number filePath:(NSString*)pdfPath completion: (saveCompletion) completion { self.saveCompletion = completion; NSURL *filePath = [NSURL fileURLWithPath: pdfPath]; //读取PDF原文件的大小 CGPDFDocumentRef doc = CGPDFDocumentCreateWithURL((__bridge CFURLRef)filePath); CGPDFPageRef page =CGPDFDocumentGetPage(doc,1); CGRect pageRect = CGPDFPageGetBoxRect(page, kCGPDFMediaBox); pageRect.origin = CGPointZero; pageRect.size.height = pageRect.size.height*2; pageRect.size.width = pageRect.size.width*2; //开启图片绘制 上下文 UIGraphicsBeginImageContext(pageRect.size); CGContextRef context = UIGraphicsGetCurrentContext(); // 设置白色背景 CGContextSetRGBFillColor(context,1.0,1.0,1.0,1.0); CGContextFillRect(context,pageRect); CGContextSaveGState(context); // 进行翻转 CGContextTranslateCTM(context, -pageRect.size.width/2, pageRect.size.height*1.5); CGContextScaleCTM(context,2, -2); CGContextSetInterpolationQuality(context, kCGInterpolationHigh); CGContextSetRenderingIntent(context, kCGRenderingIntentDefault); CGContextConcatCTM(context, CGPDFPageGetDrawingTransform(page, kCGPDFMediaBox, pageRect,0,true)); CGContextDrawPDFPage(context,page); CGContextRestoreGState(context); UIImage *pdfImage = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); [self saveImage:pdfImage]; } - (void)saveImage:(UIImage*)image { UIImageWriteToSavedPhotosAlbum(image,self,@selector(image:didFinishSavingWithError:contextInfo:), (__bridge void*)self); } - (void)image:(UIImage*)image didFinishSavingWithError:(NSError*)error contextInfo:(void*)contextInfo { if(!error) { if (self.saveCompletion) { self.saveCompletion(YES); } }else{ if (self.saveCompletion) { self.saveCompletion(NO); } NSLog(@"失败"); } }
更多相关内容 -
Spire.Pdf 把PDF转成图片
2020-08-26 11:06:54Spire.Pdf.dll,可以把PDF转成图片,实测.net core可以,压缩包里包含Spire.Pdf.dll和Spire.License.dll -
将html页面保存成图片,图片写入pdf的实现方法(推荐)
2020-11-24 03:06:42需求是一个导出pdf的功能,多方奔走终于实现了,走了不少弯路,而且怀疑现在这个方法仍是弯的。 有个jsPDF 插件可以在前端直接生成pdf,很简便,但不支持IE。... // 生成base64图片数据 var dataUrl = canvas.toData -
Word插件【PDF转图片分页插入】
2018-02-07 14:44:14实现一键选择PDF,自动将PDF转换为图片,并分页插入图片到Word当前行,每个图后有一个分页符。支持Word2013-2016,C#Net4.0开发。 -
PDF-XChange Viewer可将PDF导出成图片
2019-04-22 20:39:38可将PDF文件多页面转换成jpg高质量图片,方便后期调整打印。 -
基于python3 pdf转化为图片
2020-12-22 06:15:11pip3 install pdfminer.six pip3 install pdf2image pdf_decompose.py #!/usr/bin/python3 # -*- coding: utf-8 -*- import io import os import sys import time from pdfminer.pdfparser import PDFParser from ... -
Aspose.Pdf.dll实现读取pdf中嵌入的图片并保存到服务器
2018-06-28 11:04:48通过Aspose.Pdf.dll来获取pdf中嵌入的图片,包括pdf各页面中的图片和占全页面的图片。 -
将pdf文件保存为图片.py
2020-11-04 13:44:32将pdf文件保存为图片, 每页pdf转换为一张png格式的图片; 使用Python语言编写,需安装PyMuPDF模块 -
保存网页为图片并生成pdf
2016-06-14 11:02:47保存网页,图片生成pdf,抓取网页生成pdf,研究这个好几天,终于搞定了分享给大家;可以设置你想抓取的网页,保存为图片后再生产pdf; -
Magick.NET .NET 将PDF转为图片格式(亲测可用)
2019-10-25 20:41:24.NET 将PDF转换为图片Demo 亲测可用 使用Magick.NET,使用...注:本Demo 是将PDF按页数转换为多张图片(可转换其中某页,最后一页或者第一页需要自己更改代码),不是转换成一张图片(此类需求的勿浪费资源下载,谢谢) -
.net C# PDF转换JPG,PDF转图片 DEMO
2019-08-12 10:08:24开发工具为VS2013, 本案例是引用O2S.Components.PDFRender4NET.dll,并且该DLL进行了PJ 去除了水印部分。文件导入、图片清晰度调解等功能目前比较完善,编译后可以直接使用。 -
C#图片转换成二进制流并且保存到sql server数据库.pdf
2021-11-23 22:01:55C#图片转换成二进制流并且保存到sql server数据库.pdf -
PDF转换成图片(JPG,PNG)使用ICEPDF并且去掉自带水印
2017-05-13 11:02:16PDF转换成图片(JPG,PNG)使用ICEPDF并且去掉自带水印 -
Vue将页面导出为图片或者PDF
2020-12-12 10:20:321.将页面html转换成图片 npm install html2canvas --save 2.在需要导出的页面引入 import html2canvas from 'html2canvas'; 在 methods 中添加方法 dataURLToBlob(dataurl) {//ie 图片转格式 var arr = dataurl... -
如何将PDF文件保存成高清的图片?
2021-05-25 13:02:47很多小伙伴会采用截图的方法将PDF文件变成图片形式,就是打开PDF文件后,利用QQ或者微信截图的方法进行截图,然后保存成png或者jpg图片,这种方法也好用,但是截图生成的图片不是高清而且效率不高,如果PDF文件较多...Pdf格式的文件在我们的工作中是非常常使用的一种文件格式,尤其在传输阅读打印这方面,使用起来比其他的文件形式更方便好用。在日常工作中我们经常需要将PDF文件保存成一张一张的高清图片文件,方便我们在工作中使用,这就设计到PDF文件的转换问题了。
很多小伙伴会采用截图的方法将PDF文件变成图片形式,就是打开PDF文件后,利用QQ或者微信截图的方法进行截图,然后保存成png或者jpg图片,这种方法也好用,但是截图生成的图片不是高清而且效率不高,如果PDF文件较多就不好用这个方法了。今天在这里教大家一个快速简单的转换方法。如何将PDF文件保存成高清的图片?
使用软件:迅米PDF转换器
软件下载:https://www.xmisoft.com/download/XMPDF6.6.0.exe
据图步骤详解:
步骤1,安装迅米PDF转换器后打开,软件左侧列表区域为功能列表,我们找到并点击【文件转图片】功能,然后进入下一步操作。
步骤2,接下来我们就需要将PDF文件添加导入到软件中去,我们只需要点击两个“添加文件”中的任意一个,就可以添加PDF文件了。 可以同时添加多个PDF文件批量转换成图片哦。
步骤3,如下图所示点击“开始转换”按钮,开启转换操作,我们只需要等待软件转换成功即可。
步骤4,当软件中的转换进度条变成100%的时候,说明PDF文件成功的保存成了高清的图片,点击右边的“输出”图标按钮,就可以打开查看转换成的图片文件了。
以上就是关于如何将PDF文件保存成高清的图片的解决方法了,是不是很简单呢,即使你的PDF文件有很多页面,也能轻松快捷的保存成图片,希望这个方法对您有所帮助!
-
将视频文件按帧保存成图片知识.pdf
2022-02-05 01:44:43将视频文件按帧保存成图片知识.pdf -
移动端预览PDF及转成图片保存
2021-06-02 15:13:45移动端预览PDF及转化为图片保存一、iframe标签预览pdf二、vue-pdf 预览pdf(可自行封装弹出等效果)1.下载依赖包2.1上下滑动式2.3分页式三、pdf.js(可预览可下载) 将pdf--->canvas--->图片 由于微信中苹果限制,...欢迎点击: 个人官网博客
移动端预览PDF及转化为图片保存
由于微信中苹果限制,是无法保存下载pdf文件的(除非后端处理),安卓可以(会自动跳转到系统自带浏览器下载)。但是为了让用户能保存pdf,就只有改需求将其转化为图片,图片在微信是不受限制可以保存的。
一、iframe标签预览pdf
<iframe src="/index.pdf" width="100%" height="100%"> This browser does not support PDFs. Please download the PDF to view it: </iframe>
缺点:
1.在移动端上显示时不能全部展示完全
2.iframe在iPhone上宽度被撑开
3.iframe在iPhone上滚动条失效
…等等一系列问题(不推荐)二、vue-pdf 预览pdf(可自行封装弹出等效果)
1.下载依赖包
npm install --sava vue-pdf
2.组件封装
2.1上下滑动式
预览:
当pdf文件比较大的时候,加载比较慢,可以适当加loading或骨架屏增加用户体验
<template> <div class="m-area"> <p class="u-title">电子合同签署</p> <pdf v-for="index in numPages" :key="index" :src="pdfUrl" :page="index" /> <button type="button" class="u-button" >同意签署</button> </div> </template> <script> import pdf from "vue-pdf"; // 引入pdf组件 export default { components: { pdf }, // 引入pdf组件 data() { return { loaded: false, numPages: "", pdfUrl:''//pdf文件路径,记住如果是本地pdf文件,pdf放在public文件夹下,否则路径报错 }; }, created() { document.body.style.background = "#FFFFFF"; document.body.style.margin = 0; // 同时设置html和body元素,禁用其横向滚动条 // docEl.style.overflowX = 'hidden' document.body.style.overflowX = 'hidden' this.loadPdf(); }, methods: { // 上下滚动pdf加载 loadPdf() { this.pdfUrl = pdf.createLoadingTask(this.pdfUrl); this.pdfUrl.promise.then((pdf) => { this.$nextTick(() => { this.numPages = pdf.numPages; // pdf总页数 this.loaded = true; }); }); }, }, }; </script>
2.2分页式
组件代码比较长:可自行下载查看
demo代码
三、pdf.js(可预览可下载) 将pdf—>canvas—>图片
核心文件为pdf.min.js,pdf.worker.min.js,一个负责API解析,一个负责核心解析。
<script src="https://cdn.bootcdn.net/ajax/libs/pdf.js/2.0.95/pdf.min.js"></script> <script src="https://cdn.bootcdn.net/ajax/libs/pdf.js/2.0.95/pdf.worker.min.js"></script>
html:
<div id="imgDiv" style="display: none;"></div> <img style="width: 100%;" v-bind:src="imgUrl" ref='aaa' alt="">
js:
urlToBlob() { let that=this let file_url ='./a.pdf' let xhr = new XMLHttpRequest(); xhr.open("get", file_url, true); xhr.responseType = "blob"; xhr.onload = function () { if (this.status == 200) { that.file=this.response that.showPdf(that.file) } }; xhr.send(); }, openPage(pdfFile, pageNumber, context) { var scale = 2; let that=this pdfFile.getPage(pageNumber).then(function (page) { viewport = page.getViewport(scale); // reference canvas via context var canvas = context.canvas; canvas.width = viewport.width; canvas.height = viewport.height; // 记录当前canvas的width,height window.wi = canvas.width; window.he = canvas.height; canvas.style.width = "100%"; canvas.style.height = "100%"; var renderContext = { canvasContext: context, viewport: viewport }; page.render(renderContext); //setTimeout(()=>{ // that.imgUrl=canvas.toDataURL("image/png"); // },500) }); return; }, showPdf(files) { /*pdf.js无法直接打开本地文件,所以利用FileReader转换*/ var reader = new FileReader(); reader.readAsArrayBuffer(files); let that=this reader.onload = function (e) { var myData = new Uint8Array(e.target.result) var docInitParams = { data: myData }; var typedarray = new Uint8Array(this.result); PDFJS.cMapUrl = 'https://cdn.jsdelivr.net/npm/pdfjs-dist@2.0.288/cmaps/'; PDFJS.cMapPacked = true; PDFJS.getDocument(typedarray).then(function (pdf) { //PDF转换为canvas $("#imgDiv").css("border", "0"); //清除文本、边框 if (pdf) { window.pageNum = pdf.numPages; $("#pagesText").text(pageNum); for (var i = 1; i <= pageNum; i++) { var canvas = document.createElement('canvas'); canvas.id = "pageNum" + i; $("#imgDiv").append(canvas); var context = canvas.getContext('2d'); that.openPage(pdf, i, context); } } }); }; },```
-
用python 制作图片转pdf工具
2020-12-25 04:16:22将当前文件夹下的图片保存到一个pdf中,支持选择pdf大小等 如果有需要可以遍历它下面的所有文件夹 简单的来说完全满足我将漫画转成pdf格式的需求了。 碰到了一些问题,这里记录下: 一、中文路径: 这个实在是略蛋疼... -
ASP.NET PDF转图片
2019-03-06 16:01:37ASP.NET PDF转图片,并且在线预览,使用VS2015开发的一个小DEMO程序源码,通过FileUpload将PDF文件上传至服务器,再将PDF转换为Image进行保存 直接下载运行就可以看到效果 -
itextsharp实现html转Pdf和图片.zip
2019-10-06 17:28:481. 本程序为.net4.0开发的,...2. 程序功能为导出html网页内容到pdf文件和图片格式文件,pdf文件导出主要是以itextsharp.dll和itextsharp.xmlworker.dll相关功能实现;文件包含源代码和生成的exe文件,有需要的请下载。 -
springboot使用itext生成pdf并保存到本地
2021-03-02 11:36:02html渲染页面转换为pdf并设置页眉,页码,水印,目录,二维码 -
C#技术分享【PDF转换成图片——13种方案】
2018-01-03 14:48:21最近一直研究PDF转图片,发现一篇挺好的文章,登记起来,方便使用 1、【O2S.Components.PDFRender4NET.dll】,第三方DLL,可以实现PDF转图片,支持32位系统、64位系统(部分第三方dll在64位系统下运行报错)。 ...最近一直研究PDF转图片,发现一篇挺好的文章,登记起来,方便使用
1、【O2S.Components.PDFRender4NET.dll】,第三方DLL,可以实现PDF转图片,支持32位系统、64位系统(部分第三方dll在64位系统下运行报错)。
官方试用版的dll左上角会有一排红色水印,下面这个是破解版的没有水印,这个使用2年的,出现问题是部分PDF文档转换后会自动缩小比率。
DLL 下载地址:http://download.csdn.net/detail/shi0090/4066107
测试工程 下载地址:http://download.csdn.net/detail/shi0090/40685582、【Acrobat.dll】,Adobe官方提供的接口,可以实现PDF转图片。这个方法需要安装Adobe Acrobat X Pro,从安装文件找到Acrobat.dll引用到项目中。
毕竟是Adobe官方提供的接口,其转换效率要比其他的DLL要快多了,而且应该更可靠一些,但是在IIS下运行会比较麻烦
如果对转换速度、图片质量要求很高的童鞋,可以参考此方案,但是实现过程太麻烦,大家自己权衡。
测试工程 下载地址: http://download.csdn.net/detail/shi0090/4068502
参考地址:http://www.codeproject.com/Articles/5887/Generate-Thumbnail-Images-from-PDF-Documents
3、【PDFLibNet.dll】,第三方DLL,只支持32位系统,可以实现PDF转图片,下面这个版本没有水印。DLL 下载地址:http://download.csdn.net/detail/shi0090/4066096
测试工程 下载地址:http://download.csdn.net/detail/shi0090/4068522
4、【SautinSoft.PdfFocus.dll】,第三方DLL,可以实现PDF转图片,但转出来的图片左上角有一排红色水印。
DLL 下载地址:http://download.csdn.net/detail/shi0090/4066111
测试工程 下载地址:http://download.csdn.net/detail/shi0090/40685615、【TallComponents.PDF.Rasterizer.dll】,第三方DLL,可以实现PDF转图片,但转出来的图片有个较大的水印。
DLL 下载地址:http://download.csdn.net/detail/shi0090/4066112
测试工程 下载地址:http://download.csdn.net/detail/shi0090/4068563
6、【Apitron.PDF.Rasterizer.dll】,第三方DLL,可以实现PDF转图片,但转出来的图片有个较大的红色水印。
DLL 下载地址:http://download.csdn.net/detail/shi0090/5814803
测试工程 下载地址:http://download.csdn.net/detail/shi0090/5814857
7、【XpdfRasterizer.dll】,第三方DLL,可以实现PDF转图片。
DLL 下载地址:http://download.csdn.net/detail/shi0090/4066115
测试工程 下载地址:这个弄不见了,如果使用要使用这个的话,一定要注意Regsvr32注册,要不然转换会失败的。8、【abcpdf.dll】,第三方DLL,可以实现PDF转图片,但是需要安装abcpdf,所以使用起来不算太放方便。
DLL 下载地址:http://download.csdn.net/detail/shi0090/4066144
测试工程 下载地址:http://download.csdn.net/detail/shi0090/40685649、【Ghostscript】,第三方DLL,可以实现PDF转图片,只支持32位系统,貌似网上很多人都会采用这个方法(据说功能强大)
DLL 下载地址:http://download.csdn.net/detail/shi0090/4066005
测试工程 下载地址:http://download.csdn.net/detail/shi0090/4068486
参考地址:http://www.codeproject.com/Articles/317700/Convert-a-PDF-into-a-series-of-images-using-Csharp.aspx
参考地址:http://www.codeproject.com/Articles/32274/How-To-Convert-PDF-to-Image-Using-Ghostscript-API10、【ImageMagick】,C语言开源PDF处理工具,可以将实现PDF转换图片
DLL和源码 下载地址:http://download.csdn.net/detail/shi0090/4066040
11、【iTextSharp.dll】,C# 开源PDF处理工具,可以任意操作PDF,并可以提取PDF中的文字和图片,但不能直接将PDF转换成图片。
DLL和源码 下载地址:http://download.csdn.net/detail/shi0090/4065982
中文帮助文档 下载地址:http://download.csdn.net/detail/shi0090/4065986
提取文字测试工程 下载地址:http://download.csdn.net/detail/shi0090/4068429
提取图片测试工程 下载地址:http://download.csdn.net/detail/shi0090/4068428
官方网站:http://itextpdf.com/12、【PdfSharp.dll】,C# 开源PDF处理工具,可以任意操作PDF,也可以实现从PDF提取图片,但不能直接将PDF转换成图片。
DLL和源码 下载地址:http://download.csdn.net/detail/shi0090/4066060
提取图片测试工程 下载地址:http://download.csdn.net/detail/shi0090/4068448以上两个开源C#工具都可以很好处理PDF文档,但不满足我的要求直接把PDF转成IMAGE。
13、QQ群里有人推荐【PDFToX.dll】速度和质量都不错,就是不太稳定,有兴趣的朋友可以自行研究一下~
-
PDF转为图片
2015-07-18 21:09:39使用C++实现的PDF转为图片格式,可以把PDF文件按页转换成图片保存 -
PDF文件转换ImageMagick图片处理
2018-07-28 02:15:12图像处理工具可用来处理PDF文件时进行主要是图像处理!本人通过Python调用它进行PDF转换图片使用!工具地址:https://gitee.com/lmay/pdf_transform -
matlab中的图片保存技巧.pdf
2021-04-20 15:09:00matlab中的图片保存技巧第二种方式是用copy 命令 copy 成 metafile 格式(通过copy option 项选定)到剪切板上,然后直接粘贴到word 文件中,双击图片,选择’填充‘项为无,即可对图片中的任意曲线编辑,也可以在... -
使用Python将PDF转换成图片
2022-04-07 13:02:32在Windows环境下搭建环境 1.1 安装Python库 需要安装的库是pdf2image,可通过命令进行安装: pip install pdf2image 需要注意的是,如果下载速度过慢,如产生异常信息为:pip._vendor.urllib3.exceptions.... -
将 MatLAB 图形裁剪并保存为 PDF (savePDF):这个简单的功能可以很好地裁剪图形并将其保存为 PDF-matlab...
2021-05-29 10:29:23savePDF 是一个简单的函数,可以很好地裁剪 MatLAB 图形并将其保存为 PDF 到指定目录。 如果该目录不存在,则创建一个。 plot_name = 图形的名称(例如,'My_Figure') plot_path = 要保存为 PDF 的文件夹(例如,'... -
python将图像保存为pdf及图片
2021-01-29 17:17:48#加一个文件夹import time ,os #获取日期time1=time.strftime('%Y-%m-%d')sv_path='pre_data/'+time1os.makedirs(sv_path,exist_ok=True)plt.savefig(f'{sv_path}/predict%d.pdf'%i)#保存文件在指定文件夹下很方便... -
网页保存为图片和pdf
2018-08-21 17:09:40利用wkhtmltox库将网页保存为图片和pdf的demo,本人在VS2010下测试没有问题可以运行。