Я использую ITextSharp и html2canvas для добавления бинарных изображений поколения и PDF.Добавление нескольких бинарных изображений ITextSharp с использованием массива байтов вызывает IndexOutOfRangeException
Ниже приведен фрагмент моего кода Codebehind
.
var overallResultsBase64string = hdnOverallResults.Value.Replace("data:image/png;base64,", "");
var appServerCapacityBase64string = hdnAppServerCapacity.Value.Replace("data:image/png;base64,", "");
var appPerformanceBase64string = hdnAppPerformance.Value.Replace("data:image/png;base64,", "");
var dbServerCapacityBase64string = hdnDBServerCapacity.Value.Replace("data:image/png;base64,", "");
var dbPerformanceBase64string = hdnDBPerformance.Value.Replace("data:image/png;base64,", "");
iTextSharp.text.Image overallResultsImg, appServerCapacityImg, appPerformanceImg
, dbServerCapacityImg, dbPerformanceImg;
byte[] overallResultsBytes = Convert.FromBase64String(overallResultsBase64string);
overallResultsImg = iTextSharp.text.Image.GetInstance(overallResultsBytes);
byte[] appServerCapacityBytes = Convert.FromBase64String(appServerCapacityBase64string);
appServerCapacityImg = iTextSharp.text.Image.GetInstance(appServerCapacityBytes);
byte[] appPerformanceBytes = Convert.FromBase64String(appPerformanceBase64string);
appPerformanceImg = iTextSharp.text.Image.GetInstance(appPerformanceBytes);
byte[] dbServerCapacityBytes = Convert.FromBase64String(dbServerCapacityBase64string);
dbServerCapacityImg = iTextSharp.text.Image.GetInstance(dbServerCapacityBytes);
byte[] dbPerformanceBytes = Convert.FromBase64String(dbPerformanceBase64string);
dbPerformanceImg = iTextSharp.text.Image.GetInstance(dbPerformanceBytes);
document.Add(overallResultsImg);
document.Add(new Paragraph("OVERALL APPLICATION PERFORMANCE"));
document.Add(appPerformanceImg);
document.Add(dbPerformanceImg);
document.Add(new Paragraph("OVERALL SERVER CAPACITY"));
document.Add(appServerCapacityImg);
document.Add(dbServerCapacityImg);
var appServerCapacityBase64string
является NULL
, что он бросает IndexOutOfBounds
исключение на
byte[] appServerCapacityBytes = Convert.FromBase64String(appServerCapacityBase64string);
appServerCapacityImg = iTextSharp.text.Image.GetInstance(appServerCapacityBytes);
Есть ли что-то не так с моей Javascript html2canvas ниже код? Пожалуйста, проверьте.
<script>
html2canvas($("#overallResultsDiv"), {
onrendered: function (canvas) {
// canvas is the final rendered <canvas> element
var myImage = canvas.toDataURL("image/png");
document.getElementById("hdnOverallResults").value = myImage;
}
});
html2canvas($("#appServerCapacityDiv"), {
onrendered: function (canvas) {
// canvas is the final rendered <canvas> element
var myImage = canvas.toDataURL("image/png");
$("#hdnAppServerCapacity").value = myImage;
}
});
html2canvas($("#appPerformanceDiv"), {
onrendered: function (canvas) {
// canvas is the final rendered <canvas> element
var myImage = canvas.toDataURL("image/png");
document.getElementById("hdnAppPerformance").value = myImage;
}
});
html2canvas($("#dbServerCapacityDiv"), {
onrendered: function (canvas) {
// canvas is the final rendered <canvas> element
var myImage = canvas.toDataURL("image/png");
document.getElementById("hdnDBServerCapacity").value = myImage;
}
});
html2canvas($("#dbPerformanceDiv"), {
onrendered: function (canvas) {
// canvas is the final rendered <canvas> element
var myImage = canvas.toDataURL("image/png");
document.getElementById("hdnDBPerformance").value = myImage;
}
});
</script>
ТОЛЬКО в первые html2canvasуспешно передает base64 string
к соответствующему HiddenField
в качестве значения и является успешно доступ в CodeBehind
. Что не так с моим сценарием, который возвращает 5 HiddenFields
NULL?