Pdf导出的操作:引用TuesPechkin.dll和TuesPechkin.Wkhtmltox.AnyCPU.dll程序集,新建PDF静态类 PDFConverter,在web.config配置保存dir

///

///pdf转换///

public static classPdfConvert {///

///staticDeploymentPath///

private static readonly string StaticDeploymentPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "wkhtmltopdf");///

///CreateWkhtmltopdfPath///

public static voidCreateWkhtmltopdfPath() {if (Directory.Exists(StaticDeploymentPath) == false) {

Directory.CreateDirectory(StaticDeploymentPath);

}

}///

///converter///

public static IConverter Converter =

newThreadSafeConverter(new RemotingToolset(newWinAnyCPUEmbeddedDeployment(newStaticDeployment(StaticDeploymentPath)

)

)

);

}

publicHttpResponseMessage CreateFormPdf(WebTaskFormDetail wtData) {try{string fileName = AesCode.AesDecrypt(wtData.TaskId) + "_" +wtData.FormId;var baseUrl =GetBaseUrl();string url = baseUrl +UrlFormTemplate;

HttpClient client= newHttpClient();var template =client.GetStringAsync(url).Result;string page = "form.html";

url= baseUrl + UrlFormContentDir +page;var content =client.GetStringAsync(url).Result;var json = JsonConvert.SerializeObject(wtData).Replace(@"\", @"\\");string html = template.Replace("[[content]]", content).Replace("[[json]]", json);string path = HttpContext.Current.Request.PhysicalApplicationPath + ZxjcAttachmentDir + @"html\";if (!Directory.Exists(path)) {

Directory.CreateDirectory(path);

}

StreamWriter sw= new StreamWriter(path + fileName + ".html", false, Encoding.UTF8);

sw.Write(html);

sw.Close();

path= ZxjcAttachmentDir + @"pdf\";if (!Directory.Exists(Path.Combine(PhysicalApplicationPath(), path))) {

Directory.CreateDirectory(Path.Combine(PhysicalApplicationPath(), path));

}var savePath = path + fileName + ".pdf";byte[] pdfBuf = null;

CreatePdf(Path.Combine(PhysicalApplicationPath(), savePath), fileName,refpdfBuf);var downloadUrl = new Uri(baseUrl + ZxjcAttachmentDir.Replace(@"\", "/") + "pdf/" + fileName + ".pdf");//关联任务附件

var attachmentInfo = newAttachmentInfo {

AttachmentName= wtData.FormName + ".pdf",

Path=savePath,

Url=downloadUrl.ToString(),

Description=wtData.Description

};

SaveAttachment(attachmentInfo,Convert.ToInt32(AesCode.AesDecrypt(wtData.TaskId)));

HttpResponseMessage response= new HttpResponseMessage { Content = new StreamContent(newMemoryStream(pdfBuf)) };

response.Content.Headers.ContentDisposition= new ContentDispositionHeaderValue("attachment");

response.Content.Headers.ContentLocation=downloadUrl;

response.Content.Headers.ContentType= new MediaTypeHeaderValue("application/pdf");returnresponse;

}catch(Exception ex) {throw;

}

}private void CreatePdf(string path, string fileName, ref byte[] pdfBuf) {var document = newHtmlToPdfDocument {

GlobalSettings={

ProduceOutline= true,

DocumentTitle= "web 表单",

PaperSize=PaperKind.A4,

Margins={All = 1.375,Unit =Unit.Centimeters}//Margins = new MarginSettings(50,50,50,50)

},

Objects={new ObjectSettings { PageUrl = this.GetBaseUrl() + ZxjcAttachmentDir.Replace(@"\", "/") + "html/" + fileName + ".html"}

}

};

pdfBuf=PdfConvert.Converter.Convert(document);

File.WriteAllBytes(path, pdfBuf);

}private static stringPhysicalApplicationPath() {returnHttpContext.Current.Request.PhysicalApplicationPath;

}

直接在浏览器链接打印机打印

private void CreatePdf(string path, string fileName, ref byte[] pdfBuf) {

var pageUrl = this.GetBaseUrl() + ZxjcAttachmentDir.Replace(@"\", "/") + "html/" + fileName + ".html";

var document = new HtmlToPdfDocument {

GlobalSettings ={

ProduceOutline = true,

Copies=1,

DPI = 1200,

DocumentTitle = "web 表单",

PaperSize = PaperKind.A4,

Orientation = GlobalSettings.PaperOrientation.Portrait,

OutputFormat = GlobalSettings.DocumentOutputFormat.PDF,

Margins ={All = 1.375,Unit = Unit.Centimeters}

//Margins = new MarginSettings(50,50,50,50)

},

Objects = {

new ObjectSettings {

PageUrl = pageUrl,

//HtmlText = docHtml,

WebSettings = new WebSettings {

DefaultEncoding = "utf-8",

LoadImages =true,

PrintBackground =true,

EnableJavascript =true ,

PrintMediaType =true,

EnablePlugins = true

},

//LoadSettings =new LoadSettings {

// BlockLocalFileAccess = false,

// RenderDelay=5000,

//}

}

}

};

pdfBuf = PdfConvert.Converter.Convert(document);

File.WriteAllBytes(path, pdfBuf);

}

html实现pdf预览打印机,Pdf操作(HTML转PDF,PDF直接网页连接打印机)相关推荐

  1. SpringBoot:文件下载、pdf预览、文件压缩

    文件下载 编写工具类,编辑http响应体格式.其中Content-type为application/octet-stream代表二进制流,为下载文件的格式.详见对照表:https://tool.osc ...

  2. 实现微信小程序和手机app(基于vue)PDF预览功能

    引言:最近在做微信小程序和手机端app开发(基于vue),实现一个pdf预览功能. 需求:点击pdf列表,跳转到预览pdf页面,页面上强制阅读10s后,显示一个按钮返回,更新阅读状态: 要求:不能调用 ...

  3. Vue 图片、PDF预览(Blod数据类型)

    Vue 图片.PDF预览(Blod数据类型) 简单的PDF/图片预览 请求接口 需要将后端返回的文件转为文件流 这里的请求用的axios封装的 也可以用原生的 注意设置responseType: &q ...

  4. pdfh5.js 基于pdf.js和jQuery,web/h5/移动端PDF预览手势缩放插件。

    pdfh5.js 基于pdf.js和jQuery,web/h5/移动端PDF预览手势缩放插件. 注意:本地绝对路径地址不能加载,跨域问题用代理或者服务端解决. svg模式渲染存在缺陷,只能渲染普通pd ...

  5. PDF 预览和下载你是怎么实现的?

    在开发过程中要求对 PDF 类型的发票提供 预览 和 下载 功能,**PDF** 类型文件的来源又包括 H5 移动端 和 **PC 端**,而针对这两个不同端的处理会有些许不同,下文会有所提及. 针对 ...

  6. 实现Vue移动端的PDF预览

    最近做到一个功能,PDF预览:这个功能看着蛮简单的,结果搞了两个下午,真是欲哭无泪.记录一下所查到的预览方法. 我在网上找了蛮多教程的,大致都是以下几个方法实现预览: 使用 iframe 标签 使用 ...

  7. vue 项目中实现pdf预览 pdf打印 pdf下载

    在Vue项目中实现PDF预览.打印和下载可以通过以下步骤来实现: 安装pdf.js pdf.js是一个JavaScript库,可以用于在Web上渲染PDF文件. 可以使用npm安装pdf.js,命令如 ...

  8. 控制chrome中PDF预览工具栏

    在实际开发中,遇到使用chrome自带的PDF预览功能,前端把后台返回的地址,通过XMLHttpRequest转换成blob,并在blob地址后拼接上文件名称,通过创建embed展示PDF: 这种方法 ...

  9. Android PDF原生实现 PDF阅读、PDF手势伸缩、PDF目录、PDF预览缩略图 PDF方案选择 google doc android-pdfview mupdf pdf.js x5

    ##1.背景 近期,公司希望实现安卓原生端的PDF功能,要求:高效.实用. 经过两天的调研.编码,实现了一个简单Demo,如上图所示. 关于安卓原生端的PDF功能实现,技术点还是很多的,为了咱们安卓开 ...

  10. 前端实现 PDF 预览的常见方案

    前端实现 PDF 预览的常见方案 由于在搭建个人博客时,想实现在线预览 pdf 格式的个人简历,经过查阅大致有三大类实现方案:本文共涉及以下 5 种实现方案,如下所示: 使用 HTML 标签 ifra ...

最新文章

  1. 脚踏板USB接口与无线遥控连接方案论证
  2. python画有权重网络图_python networkx 根据图的权重画图实现
  3. 2018-2019-1 20165223 20165218 实验二 固件程序设计
  4. Web Services简单介绍
  5. yii2得到的数据对象转化成数组
  6. Atitit mysql redis mongodb 性能指标 目录 1.1. 二、 性能比较 1 1.2. 性能极高- Redis能读的速度是110000次/s,写的速度是81000次/s 2 1
  7. Exchange server 2010系列教程之十一 整合AD RMS与exchange 2010
  8. 软件测试-测试用例的经典例子
  9. 爬取b站最火up主及其粉丝信息
  10. 怎么做好淘宝客推广?
  11. Objective C Bridging header —— swift MD5
  12. Atcoder F - Mirrored(思维+搜索)
  13. 云小课|使用SQL加密函数实现数据列的加解密
  14. 10.Quartz 常用配置
  15. ergonomic计算机专业英语,[听单词] 计算机专业英语词汇音频52,计算机英语单词MP3...
  16. C#,图像二值化(05)——全局阈值的联高自适应算法(Legal Self-Adaptive Thresholding)及其源代码
  17. 罗克韦尔自动化开放工业标准和互连性用于提高控制系统信息整合
  18. 筛选质数,埃氏筛和欧拉筛(线性筛)
  19. 经济学人:Win7标志IT时代变迁nbsp;云…
  20. 蓝桥杯单片机——用NE555定时器来测量频率

热门文章

  1. 在温系统下制作马克系统引导安装镜像启动U盘安装马克OS
  2. WiredTiger引擎编译 及 LT_PREREQ(2.2.6)问题解决
  3. jquery倒计时插件可自定义多个倒计时间
  4. linux 命令之文件读取,head, tail, tailf, sed
  5. Selenium(3)
  6. Linux篇---ftp服务器的搭建
  7. 67)vector的begin() end() 和 front() back()的区别 rbegin() rend()
  8. 滑动轮播图实现最后一张图片无缝衔接第一张图片
  9. Python之路【第五篇】:面向对象及相关
  10. 熟人Dubbo 系列1-Dubbo什么