gpt4 book ai didi

javascript - 响应不提供任何输出以下载 PDF

转载 作者:行者123 更新时间:2023-11-30 06:32:26 25 4
gpt4 key购买 nike

我在没有 runat="server"的 .aspx pahe 中有名为 RPTHtml 的字段

 <asp:HiddenField ID="RPTHtml"  />

然后在javascript中添加这段代码,调用本页的pagemethod

document.getElementById('RPTHtml').setValue =window.encodeURI
(document.getElementById(eval(result)[0].columnLineConfig.divToRender).innerHTML);
PageMethods.getHTMLToPdf(eval(result)[0].columnLineConfig.divToRender, srcurl);

现在,在我的页面方法中

<WebMethod()> _
<System.Web.Script.Services.ScriptMethod()> _
Public Shared Function getHTMLToPdf(ByVal div As String, ByVal InnerHTMl As String) As Boolean

Dim pdfDocument As PdfDocument.Document = Nothing
Dim pdfConverter As PdfConverter = New PdfConverter()
Dim pdfBytes As Byte() = Nothing

Dim strHtml As String = ""
Dim htmlreport As String = ""
Dim ReportFileName As String = ""
Dim Response_1 As HttpResponse = System.Web.HttpContext.Current.Response


If InnerHTMl.ToString() = "" Then
Exit Function
End If
htmlreport = InnerHTMl.ToString()



htmlreport = HttpUtility.UrlDecode(htmlreport)

Response_1.Clear()
Response_1.Buffer = True
Response_1.ClearContent()
Response_1.ClearHeaders()

ReportFileName = GetReportName() + ".pdf"

pdfConverter = New Winnovative.WnvHtmlConvert.PdfConverter()

pdfConverter.AvoidImageBreak = True
pdfConverter.AvoidTextBreak = True
pdfConverter.TruncateOutOfBoundsText = True
pdfConverter.LicenseKey = "LicenseKey"
pdfConverter.PdfDocumentOptions.PdfPageSize = PdfPageSize.A4
pdfConverter.PdfDocumentOptions.StretchToFit = True

pdfBytes = pdfConverter.GetPdfBytesFromHtmlString(htmlreport)

Response_1.AddHeader("Content-type", "application/pdf")
Response_1.AddHeader("Content-Disposition", "attachment; filename=" + ReportFileName)

Response_1.BinaryWrite(pdfBytes)
Response_1.Flush()
Response_1.End()
End Function

它没有给出任何输出,只是成功运行,但没有出现下载 pdf 的提示。

我错过了什么?或者它不能通过pagemethod实现。提前致谢!!!

最佳答案

在您的 asp.net 页面中提供一个链接,例如

      <a href="javascript:ExportReport();">Export To Excel</a> 

在 javascript 中(我用 jquery 做同样的事情),动态创建一个 HTML 表单并提交它,Export.aspx是生成pdf的页面

   function ExportReport() {                            
var frmT = $([
'<form id="frmExport" method="post" action="Export.aspx" target="_blank" style="display:none;">',
'<input type="hidden" name="pdfContents" id="tableContents" />',
'</form>'

].join('')).appendTo('body')[0]
var hdnTbl = $("#pdfContents", frmT);
hdnTbl.val( divRep.html() ); // divRep.html() is the inner html you want to convert to PDF

frmT.submit();

}

由于您在隐藏字段中提交 HTML,因此您需要启用 ValidateRequest Export.aspx 中的属性页

        ValidateRequest="false"

此外,您需要在 web.config 中启用 maxrequeSTLength,如下所示,

        <httpRuntime requestValidationMode="2.0" maxRequestLength="1024" />  <!-- 1024 kb  -->

之前 </system.web>结束标签。如果您使用的是 .net 2.0 ,则可以省略 requestValidationMode="2.0"属性。你可以使用相同的 getHTMLToPdf export.aspx 页面加载方法中的方法代码。希望这会有所帮助。

关于javascript - 响应不提供任何输出以下载 PDF,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16708360/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com