Имеется следующий код, формирующий pdf документ:
private static void returnPdf(IEnumerable<object> reportItemList)
{
var suggestedFileName = "Sales_By_Payment_Type_Report" + ".pdf";
using (var doc = new Document(PageSize.A4, 60, 60, 30, 30))
{
PdfWriter.GetInstance(doc, new FileStream(suggestedFileName, FileMode.Create));
doc.Open();
doc.NewPage();
//doc.Add();
//doc.Add(new Element());
//start & end dates
var totalList = reportItemList as IEnumerable<ReportItem>;
if (totalList != null)
{
//filter by 14
var members = typeof(ReportItem).GetMembers().Where(memb =>memb.MemberType ==
System.Reflection.MemberTypes.Property && memb.GetCustomAttributes(false).Where(att => (att as ReportProperty)?.PropertyName != String.Empty).Count() != 0);
var itemNumber = members.Count();
if (itemNumber != 0)
{
PdfPTable table = new PdfPTable(itemNumber);
PdfPCell[] itemArray = new PdfPCell[itemNumber];
for (int i = 0; i < itemArray.Length - 1; i++)
{
var customList = members.ElementAt(i).CustomAttributes.Where(t => t.AttributeType == typeof(ReportProperty)).FirstOrDefault()?.ConstructorArguments;
if (customList.Count != 0) {
itemArray[i] = new PdfPCell();
itemArray[i].Phrase = new Phrase(customList[0].Value.ToString());
}
}
PdfPRow pdfRow = new PdfPRow(itemArray);
table.Rows.Add(pdfRow);
for (int i = 0; i < reportItemList.Count() - 1; i++)
{
PdfPCell[] itemArrayRow = new PdfPCell[itemNumber];
table.Rows.Add(new PdfPRow(new PdfPCell[itemNumber]));
}
//footer
table.Rows.Add(new PdfPRow(new PdfPCell[itemNumber]));
try
{
**doc.Add(table);**
}
catch (DocumentException ex)
{
throw ex;
}
catch (Exception)
{
throw;
}
//doc.Add(table);
//doc.Close();
}
}
}
}
В блоке try генерится исключение DocumenException из iTextSharp
Просьба помочь, спасибо
//footer
table.Rows.Add(new PdfPRow(new PdfPCell[itemNumber]));
Тут кроется ошибка. В PdfPCell массиве, элементы все null.
Виртуальный выделенный сервер (VDS) становится отличным выбором
Подскажите Есть ли библиотеки для нахождения проиводных от функций ? или как можно реализовать по другом ?
Как идеологически правильно снять мини дамп с запущенного из C++ (clr hosting) C# кода при возникновении исключения?
При вызове функции SetEntriesInAcl вылетает AccessViolationException: attempted to read or write protected memoryИзолировала этот код и поняла, что если он выполняется под
Есть два файла: библиотека и сама программаВ библиотеке находится информация в виде настраиваемого атрибута M (содержится в ещё одной библиотеке...