Есть несколько методов, которые поступают в базу данных и извлекают PDF-документ из столбца varbinary, а затем добавляют к нему данные. Я хотел бы добавить код, чтобы, если этот документ (фирменный канцелярский) не найден, создается и возвращается новый пустой документ. Метод может либо возвращать байт [], либо поток.iTextSharp - Создать новый документ как Byte []
Проблема в том, что переменная «байты» в предложении else равна нулю.
Любые идеи, что не так?
private Byte[] GetBasePDF(Int32 AttachmentID)
{
Byte[] bytes = null;
DataTable dt = ServiceFactory
.GetService().Attachments_Get(AttachmentID, null, null);
if (dt != null && dt.Rows.Count > 0)
{
bytes = (Byte[])dt.Rows[0]["Data"];
}
else
{
// Create a new blank PDF document and return it as Byte[]
ITST.Document doc =
new ITST.Document(ITST.PageSize.A4, 50f, 50f, 25f, 25f);
MemoryStream ms = new MemoryStream();
PdfCopy copy = new PdfCopy(doc, ms);
ms.Position = 0;
bytes = ms.ToArray();
}
return bytes;
}
'GetBuffer' почти всегда вызывает проблемы. См. Http://stackoverflow.com/a/8606734/231316 и http://stackoverflow.com/a/5119739/231316 –
Спасибо, теперь он работает. – Dave
Ahh, не видел ваших комментариев о том, что не использовал .GetBuffer, пока я не ответил. – Dave