代码问题后写入PNG到磁盘- iTextSharp和PDFStamper



我成功地在HTML5画布上绘制,并将画布保存到服务器上的PNG文件中。然后我用iTextsharp将PNG打印成PDF。这一切都很好,但这是我的问题。

当我不想显示PNG时,我的代码将它显示到屏幕上。然后,我必须让用户按后退按钮来查看PDF列表。当这种情况发生时,一切都很好,但我不想要PNG。但是,如果我关闭PNG的内容类型代码,那么PNG就不会显示,那么PDF列表就不会被最后生成的PDF填充,并且代码会在之前的Canvas签名上再次运行。这比看到PNG并按下后退键更糟糕。

设置"的反应。end"在我的代码情况下不起作用。因为我必须用Base64 PNG代码填充一个隐藏的表单变量,并运行一些jquery。

你能建议我能做些什么,不显示PNG,但显示屏幕与更新后的列表?我正在使用asp.net vb,我不精通asp.net,但正在学习。

' take the canvas signature and write it to the Build folder path as a PNG
' the txtPNG hidden form field has the png base64
Dim base64 As String = txtPNG.Text
base64 = base64.Replace("data:image/png;base64,", "")
Dim bytes As Byte() = Convert.FromBase64String(base64)
Response.Buffer = True
Response.Clear()
Response.ClearContent()
System.IO.File.WriteAllBytes(strBuildFilePath & "" & strFilenameToSave & ".png", bytes)
Response.ContentType = "image/png"
Response.Cache.SetCacheability(HttpCacheability.NoCache)
Response.BinaryWrite(bytes)
'do not use Response.end() or code doesn't work to generate the PDF etc.

这是我用来移动PNG/canvas图像的JQUERY的一部分:

        $(function() {
            $("#btnSaveASP").on('click', function(e) {
                e.preventDefault();
                var canvas = document.getElementById('cnvSignatureSketch');
                var imgData = canvas.toDataURL();
                //alert(imgData);
                $("#<%=imgASP.ClientID %>")
            .attr("src", imgData)
               $("#<%=txtPNG.ClientID %>")
            .attr("value", imgData)
                //now click another button, btnexport,  via jquery
                //so user doesn't need to click two buttons
                $("#<%=btnExport.ClientID %>").click();
            });
        });

一个好的老式Response.redirectWriteAllBytes之后工作。

最新更新