Javascript 使用HiQPdf将动态html转换为pdf
一段时间以来,我一直在努力让我的HTML准确地翻译成PDF,但我看不出我做错了什么 以下是我的页面代码: 导入HiQPdf 导入系统文本 导入System.IO 导入System.Web.UI 部分类模块\u成本计算器\u成本计算器 继承System.Web.UI.Page Dim convertToPdf为布尔值=False 受保护的子打印单击 convertToPdf=True 端接头 受保护的覆盖子渲染器作为System.Web.UI.HtmlTextWriter 如果是convertToPdf,那么 System.Diagnostics.Debug.Writeoverriding渲染 Dim tw As TextWriter=新StringWriter 将htw设置为HtmlTextWriter=新HtmlTextWritertw '将html标记呈现到TextWriter中 MyBase.Renderhtw '获取当前页面的html代码 Dim htmlCode As String=tw.ToString System.Diagnostics.Debug.WritehtmlCode '将html转换为PDF '创建html到pdf转换器 Dim HTMLOTOPDFCONV作为HtmlToPdf=新HtmlToPdf 'htmlToPdfConv.MediaType=print '用于解析图像、css和脚本文件的基本url Dim currentPageUrl As String=HttpContext.Current.Request.Url.AbsoluteUri '将html转换为pdf内存缓冲区 Dim pdfBuffer As Byte=htmlToPdfConv.ConvertHtmlToMemoryhtmlCode,currentPageUrl '通知浏览器二进制数据格式 HttpContext.Current.Response.AddHeaderContent-Type,应用程序/pdf '让浏览器知道如何打开pdf文档 HttpContext.Current.Response.AddHeaderContent-Disposition, 字符串。格式附件;filename=ConvertThisHtmlWithState.pdf;大小={0}, pdfBuffer.Length.ToString '将pdf缓冲区写入http响应 HttpContext.Current.Response.BinaryWritepdfBuffer '调用http响应的End方法以停止ASP.NET页面处理 HttpContext.Current.Response.End 其他的 MyBase.Renderwriter 如果结束 端接头 有人知道我可能做错了什么吗?很多HTML都链接到一个敲除的ViewModel,所以我不确定这是否会引起问题 要清楚的是,我可以创建页面的PDF,但只有当HTML处于页面第一次加载时的状态时才可以。如果我更改了任何数据绑定HTML,当我尝试制作另一个PDF时,它不会反映出来。请尝试: 添加明确的: 回答,清楚 Response.ClearHeaders 在MyBase.Reder方法之后 同花顺 在响应之前。结束 回答,齐平 如果上述措施无效: 呼叫支持:Javascript 使用HiQPdf将动态html转换为pdf,javascript,asp.net,vb.net,pdf,knockout.js,Javascript,Asp.net,Vb.net,Pdf,Knockout.js,一段时间以来,我一直在努力让我的HTML准确地翻译成PDF,但我看不出我做错了什么 以下是我的页面代码: 导入HiQPdf 导入系统文本 导入System.IO 导入System.Web.UI 部分类模块\u成本计算器\u成本计算器 继承System.Web.UI.Page Dim convertToPdf为布尔值=False 受保护的子打印单击 convertToPdf=True 端接头 受保护的覆盖子渲染器作为System.Web.UI.HtmlTextWriter 如果是convertTo
我认为问题在于,在使用JavaScript呈现页面后,您正在更改页面的状态,并且您希望这样:-
MyBase.Render(htw)
'get the current page html code
为您提供页面的当前状态。它不会-它将提供页面呈现时的状态。如果在加载页面后使用Knockout或其他脚本操作DOM,页面的服务器端模型对这些更改一无所知。我没有库,但从ASP.NET我建议尝试:HttpContext.Current.Response.BinaryWritepdfBuffer HttpContext.Current.Response.FlushIf如果您不介意尝试其他内容,那么:Response.ClearHeaders;这是呈现方法的基础。我想知道如何让服务器端模型了解这些更改吗?您应该确保HTML是从定义页面加载状态的数据模型创建的,并且可以通过webservice或httphandler调用由客户端代码更新。