html实现pdf预览打印机,Pdf操作(HTML转PDF,PDF直接网页连接打印机)
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直接网页连接打印机)相关推荐
- SpringBoot:文件下载、pdf预览、文件压缩
文件下载 编写工具类,编辑http响应体格式.其中Content-type为application/octet-stream代表二进制流,为下载文件的格式.详见对照表:https://tool.osc ...
- 实现微信小程序和手机app(基于vue)PDF预览功能
引言:最近在做微信小程序和手机端app开发(基于vue),实现一个pdf预览功能. 需求:点击pdf列表,跳转到预览pdf页面,页面上强制阅读10s后,显示一个按钮返回,更新阅读状态: 要求:不能调用 ...
- Vue 图片、PDF预览(Blod数据类型)
Vue 图片.PDF预览(Blod数据类型) 简单的PDF/图片预览 请求接口 需要将后端返回的文件转为文件流 这里的请求用的axios封装的 也可以用原生的 注意设置responseType: &q ...
- pdfh5.js 基于pdf.js和jQuery,web/h5/移动端PDF预览手势缩放插件。
pdfh5.js 基于pdf.js和jQuery,web/h5/移动端PDF预览手势缩放插件. 注意:本地绝对路径地址不能加载,跨域问题用代理或者服务端解决. svg模式渲染存在缺陷,只能渲染普通pd ...
- PDF 预览和下载你是怎么实现的?
在开发过程中要求对 PDF 类型的发票提供 预览 和 下载 功能,**PDF** 类型文件的来源又包括 H5 移动端 和 **PC 端**,而针对这两个不同端的处理会有些许不同,下文会有所提及. 针对 ...
- 实现Vue移动端的PDF预览
最近做到一个功能,PDF预览:这个功能看着蛮简单的,结果搞了两个下午,真是欲哭无泪.记录一下所查到的预览方法. 我在网上找了蛮多教程的,大致都是以下几个方法实现预览: 使用 iframe 标签 使用 ...
- vue 项目中实现pdf预览 pdf打印 pdf下载
在Vue项目中实现PDF预览.打印和下载可以通过以下步骤来实现: 安装pdf.js pdf.js是一个JavaScript库,可以用于在Web上渲染PDF文件. 可以使用npm安装pdf.js,命令如 ...
- 控制chrome中PDF预览工具栏
在实际开发中,遇到使用chrome自带的PDF预览功能,前端把后台返回的地址,通过XMLHttpRequest转换成blob,并在blob地址后拼接上文件名称,通过创建embed展示PDF: 这种方法 ...
- Android PDF原生实现 PDF阅读、PDF手势伸缩、PDF目录、PDF预览缩略图 PDF方案选择 google doc android-pdfview mupdf pdf.js x5
##1.背景 近期,公司希望实现安卓原生端的PDF功能,要求:高效.实用. 经过两天的调研.编码,实现了一个简单Demo,如上图所示. 关于安卓原生端的PDF功能实现,技术点还是很多的,为了咱们安卓开 ...
- 前端实现 PDF 预览的常见方案
前端实现 PDF 预览的常见方案 由于在搭建个人博客时,想实现在线预览 pdf 格式的个人简历,经过查阅大致有三大类实现方案:本文共涉及以下 5 种实现方案,如下所示: 使用 HTML 标签 ifra ...
最新文章
- 脚踏板USB接口与无线遥控连接方案论证
- python画有权重网络图_python networkx 根据图的权重画图实现
- 2018-2019-1 20165223 20165218 实验二 固件程序设计
- Web Services简单介绍
- yii2得到的数据对象转化成数组
- Atitit mysql redis mongodb 性能指标 目录 1.1. 二、 性能比较	1 1.2. 性能极高- Redis能读的速度是110000次/s,写的速度是81000次/s	2 1
- Exchange server 2010系列教程之十一 整合AD RMS与exchange 2010
- 软件测试-测试用例的经典例子
- 爬取b站最火up主及其粉丝信息
- 怎么做好淘宝客推广?
- Objective C Bridging header —— swift MD5
- Atcoder F - Mirrored(思维+搜索)
- 云小课|使用SQL加密函数实现数据列的加解密
- 10.Quartz 常用配置
- ergonomic计算机专业英语,[听单词] 计算机专业英语词汇音频52,计算机英语单词MP3...
- C#,图像二值化(05)——全局阈值的联高自适应算法(Legal Self-Adaptive Thresholding)及其源代码
- 罗克韦尔自动化开放工业标准和互连性用于提高控制系统信息整合
- 筛选质数,埃氏筛和欧拉筛(线性筛)
- 经济学人:Win7标志IT时代变迁nbsp;云…
- 蓝桥杯单片机——用NE555定时器来测量频率
热门文章
- 在温系统下制作马克系统引导安装镜像启动U盘安装马克OS
- WiredTiger引擎编译 及 LT_PREREQ(2.2.6)问题解决
- jquery倒计时插件可自定义多个倒计时间
- linux 命令之文件读取,head, tail, tailf, sed
- Selenium(3)
- Linux篇---ftp服务器的搭建
- 67)vector的begin() end() 和 front() back()的区别 rbegin() rend()
- 滑动轮播图实现最后一张图片无缝衔接第一张图片
- Python之路【第五篇】:面向对象及相关
- 熟人Dubbo 系列1-Dubbo什么