首页 > 其他分享 >pdf预览

pdf预览

时间:2024-04-09 15:12:13浏览次数:19  
标签:info 显示 string 预览 PDF pdf

 

1、在线实现预览的方式

一开始我还是很倾向使用这种方式,希望能采用一个较为好的JS插件的方式,实现PDF的在线预览(通过Web预览),因此在Github上找到排名比较高的PDF插件

一看排名还是很高的,那么采用它应该不错,查看自带的PDF文件,效果还是杠杠的。

不过客户的要求是显示正常的发票PDF文件,换一下文件地址,有部分信息显示不了,找了一下没有看到解决方法,所以效果不达标。

连基本的发票也显示不了,那我这个就不能用它来显示发票PDF文件了。

最后,测试了使用PDFObject(https://pdfobject.com/ )的方式实现在线嵌入PDF显示的方式,这个JS插件也是不错的,同样可以在GitHub上可以找到。

它的使用也是很简单的,如下代码所示。

<script src="/js/pdfobject.js"></script>

<script>PDFObject.embed("/pdf/sample-3pp.pdf", "#example1");</script>

如果需要设置预览窗口的大小,通过设置样式即可。

 

显示的效果是正常的了,不过我在苹果手机打开Safari浏览器测试发现,不能正常显示。

因此也不能使用来进行预览显示。

在实际的测试中,发现安卓手机的浏览器对于预览PDF也是支持不一,有些直接下载PDF,不支持预览显示。

为了避免这些问题,最好找了一个折中的方案,把PDF转换为图片进行显示,图片在不同的浏览器中显示可是没有问题的。

2、PDF转换图片进行显示

把PDF转换为图片也有很多控件处理,例如Aspose.Pdf、Spire.Pdf、 pdfiumviewer 等等,不同的第三方类库使用的方法有所差异,不过思路都很类似。

本来倾向于使用Aspose.Pdf的,不过发现转换后的发票信息还是缺失了某些中文字符或者乱码,导致不能正常显示。

后来寻找Spire.Pdf 版本以及对应的绿色版本,终于能够转换为正确的格式了,因此也就使用这个第三方控件进行转换图片使用了。

至于在线预览,我们在第一次请求PDF预览文件的时候,生成对应的图片文件,后面直接返回路径即可。

实现的预览效果如下所示。

由于我们是在asp.net MVC的项目上进行显示的,因此需要修改控制器的处理逻辑,对图片的生成进行判断处理即可。

控制器后台的实现代码如下所示。

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 //判断是否存在PDF生成的图片文件, //生成的jpg文件名为附件的ID string pdfjpgPath = string.Format("/GenerateFiles/pdf/{0}.jpg", info.ID); string pdfjpg = Server.MapPath(pdfjpgPath);   //PDF文件路径,相对目录即可 string pdfPath = @"/Content/Template/fapiao.pdf"; string pdfRealPath = Server.MapPath(pdfPath);   //如果不存在,则生成,否则返回已生成的文件 if(!FileUtil.IsExistFile(pdfjpg)) {            //破解   ModifyInMemory_Spire.ActivateMemoryPatching();   PdfDocument doc = new PdfDocument(pdfRealPath);   var image = doc.SaveAsImage(0, Spire.Pdf.Graphics.PdfImageType.Bitmap, 300, 300);   FileUtil.BytesToFile(ImageHelper.ImageToBytes(image), pdfjpg); } //存储一个路径 info.SavePath = pdfjpgPath;//修改使用这个属性返回使用

最后返回对应的Json信息即可

1 2 3 //序列号返回对象信息 string result = JsonConvert.SerializeObject(info, Formatting.Indented); return Content(result);

我们在页面视图中,通过ajax请求处理即可实现图片的动态显示了。

1 2 3 4 5 6 7 8 9 10 11 12   //刷新列表 var ID = ''; function Refresh() {   var filename = $("#WHC_FileName").val();   //获取或生成对应的PDF文件,根据路径显示   $.getJSON("/PdfView/FindByFileName?r=" + Math.random() + "&name=" + filename, function (info) {     if (info != '') {       //获取图片路径,设置显示       $("#imgfapiao").attr("src", info.SavePath);     }   }); }

最后实现了图片的预览展示。

参考此文章https://www.jb51.net/article/192937.htm

标签:info,显示,string,预览,PDF,pdf
From: https://www.cnblogs.com/rainya/p/18124010

相关文章

  • Python3 网络爬虫开发实战 第2版 (崔庆才) PDF 高清
    《Python3网络爬虫开发实战(第二版)》是由崔庆才所著的一本关于使用Python进行网络爬虫开发的书籍。概要网络爬虫基础:介绍网络爬虫的基本概念、工作原理和常见的应用场景。HTTP协议与Scrapy框架:解释HTTP协议的基本知识,以及如何使用Scrapy框架来构建和管理爬虫项......
  • 【译】使用最新预览版查看您的拉请求注释
    在17.10预览版2中,我们刚刚发布了预览支持,可以直接在VisualStudio的工作文件中查看GitHub和AzureDevOps的拉取请求注释。作为开发者社区中最受欢迎的Git工具特性建议之一,我们需要您的帮助来确保我们在正确的轨道上!开始使用PullRequestComments1确保您的V......
  • 免费的PDF转换小程序,无广告、无限制
    网上的PDF转换工具其实也不少,但大多数都是收费的,要么广告一大堆。于是自己整了一个免费且没有广告的PDF转换小程序,主要的功能有:PDF转WordPDF转PPTPDF转ExcelPDF转图片PDF转文字Word转PDFPPT转PDFExcel转PDF图片转PDF网页转PDFPDF加水印PDF去水印PDF加密PDF压缩......
  • PDF阅读器中遇到“签名有效性未知”,如何处理?
    原文链接:https://support.fadada.com/d/1725444160279842818.html场景示例电子合同文件使用AdobeReaderPDF阅读器或其他PDF阅读器打开后,查看签名信息时会出现“至少一个签名有问题”或“签名有效性未知”的情况,如下图:原因说明AdobeReader等PDF阅读器自身带有的信任证书列......
  • Vue2中使用iframe展示文件流(PDF)以及blob类型接口错误展示返回值
    需求使用iframe展示后端接口传输来的文件流(pdf),如果接口返回错误则弹出提示html部分<iframe:src="url"width="100%"/>接口部分//接口封装已忽略,注意:如需接口接收文件流,请在请求中加入responseType:'blob'以及type:"application/json;chartset=UTF-8"function......
  • 【专题】2023年中国白酒行业消费白皮书报告PDF合集分享(附原数据表)
    原文链接:https://tecdat.cn/?p=34188原文出处:拓端数据部落公众号2023年中国白酒行业消费白皮书报告合集,总结了消费市场的两大传承和五大进化,以帮助白酒企业更好地理解消费者心理和供需变化,从而把握增长机会。两大传承包括争夺消费者的“第一口酒”以及品牌在消费决策中的关键作......
  • 干货教程【软件篇】| PDF转换word工具永久免费使用
    给大家分享一个好用的PDF转换word的工具,完全免费、离线使用、且保存下来永久好用的工具。ps:本文只做好用的工具分享,不涉及任何工具的开发,感谢工具的开发者!关注文章下方公众号回复关键词【ptow】即可免费获取本工具。大家下载好之后就会进入安装界面,安装过程十分顺畅这里......
  • Android Studio 2023.2.1 预览 Markdown 问题
    来源-->https://stackoverflow.com/a/78134409/10288082步骤首先本章默认读者已安装Markdown插件。双击shift,选择action选项卡,搜索设置ChangetheBootJavaRuntimefortheAndroidStudioIDE选择与默认版本差不多的withJCEF版本,会要求重启。比如我目前是1......
  • 园子周边第3季—设计初稿预览:2024夏天穿上博客园T恤 show your code
    随着大小鼠标垫完成上架,园子周边的下一季,园子周边的重头戏,也拉开了帷幕,开始进行创意设计。周边第3季是博客园T恤,暂定主题是:「2024夏天穿上博客园T恤showyourcode」今天我们将设计的第1版初稿发出来给大家预览,欢迎大家点评、反馈、多提宝贵建议。款式1款式2款式3款式4......
  • 抢先看!界面控件DevExpress WPF 2024产品路线图预览(二)
    DevExpressWPF拥有120+个控件和库,将帮助您交付满足甚至超出企业需求的高性能业务应用程序。通过DevExpressWPF能创建有着强大互动功能的XAML基础应用程序,这些应用程序专注于当代客户的需求和构建未来新一代支持触摸的解决方案。本文将介绍2024年DevExpressWPF第一个主要更新(v2......