我正在成功繪製HTML5畫布並將畫布保存到服務器上的PNG文件。然後我使用iTextsharp將PNG打印成PDF。 所有這些都很好,但這是我的問題。asp.net將PNG寫入磁盤後的代碼問題 - iTextSharp和PDFStamper
我的代碼在屏幕上顯示PNG,當我不想顯示它時。 然後我必須讓用戶按下後退按鈕來查看PDF列表。 當發生這種情況時一切正常,但我不想PNG。 但是,如果關閉了PNG的內容類型代碼,所以PNG不顯示,則不會使用生成的最後一個PDF填充PDF列表,並且代碼會在先前的Canvas簽名中重新執行第二次。這比看到PNG和按下後退按鈕更糟糕。
設置「response.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 /畫布圖像的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();
});
});