Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/437.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用HiQPdf将动态html转换为pdf_Javascript_Asp.net_Vb.net_Pdf_Knockout.js - Fatal编程技术网

Javascript 使用HiQPdf将动态html转换为pdf

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

一段时间以来,我一直在努力让我的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呈现页面后,您正在更改页面的状态,并且您希望这样:-

    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调用由客户端代码更新。