Я пытаюсь загрузить несколько pdf-файлов в виде вложений в моем приложении asp.net. Я создал несколько шаблонов и заполнил значения, используя pdfstamper (itextsharp). Я могу заполнить значения, но не могу их загрузить.скачать несколько pdf
private void FillForm(string path, DataTable BridgeValues, DataTable Comments, DataTable Maintenance,string Newfilename)
{
try
{
string pdfTemplate = path;
string newFile = Newfilename;
string Pathser = "";
if (!System.IO.Directory.Exists(Server.MapPath(@"~/PDF/")))
{
System.IO.Directory.CreateDirectory(Server.MapPath(@"~/PDF/"));
}
if (Directory.Exists(Server.MapPath(@"~/PDF/")))
{
Pathser = Server.MapPath(@"~/PDF/" + Newfilename);
}
System.IO.MemoryStream mStream = new System.IO.MemoryStream();
// create a new PDF reader based on the PDF template document
PdfReader pdfReader = new PdfReader(pdfTemplate);
PdfStamper pdfStamper = new PdfStamper(pdfReader, new FileStream(Pathser, FileMode.Create));
AcroFields pdfFormFields = pdfStamper.AcroFields;
DataColumn dc = null;
for (int i = 0; i < BridgeValues.Columns.Count - 1; i++)
{
dc = BridgeValues.Columns[i];
pdfFormFields.SetField(dc.ColumnName.ToString(), BridgeValues.Rows[0][dc].ToString());
}
pdfStamper.FormFlattening = true;
// close the pdf
pdfStamper.Close();
////Response.ContentType = "application/octet-stream";
Response.ContentType = "application/pdf";
////Response.AddHeader("Content-Disposition", "attachment; filename=Report.pdf");
Response.AddHeader("Content-Disposition", "attachment; filename=" + Newfilename + "");
////Response.BinaryWrite(mStream.ToArray());
Response.TransmitFile(Server.MapPath(("~/PDF/"+ Newfilename)));
Response.Clear();
Response.End();
}
catch (System.Threading.ThreadAbortException lException)
{
// do nothing
}
}
Первый раз, когда я пытался создать один PDF, он работал, но позже, когда я пытался загрузить несколько файлов он дал execption. Невозможно оценить выражение, потому что код оптимизирован или собственный кадр находится поверх стека вызовов.
Почему вы ловли ThreadAbortException? Он будет автоматически обновлен, но вы не должны его ловить ... Что касается исключения - это * не включало бы * часть «Невозможно оценить выражение ...» - это то, что показывает отладчик, он не является частью исключения. –
Это была последняя попытка, которую я сделал, было некоторое исключение: «Невозможно оценить выражение, потому что код оптимизирован или собственный кадр находится поверх стека вызовов». поэтому я попробовал уловку. –
Нет, это * не * исключение. Это действительно, на самом деле нет. Это просто то, что отображается в отладчике. Если вы посмотрите в исключении для сообщения, это будет не так. –