C# 3.0 Сохранить itextsharp PDF в базу данных, используя MemoryStream
Я пытаюсь сохранить в базе данных PDF-файл, созданный itextsharp. Но я до сих пор не был успешным.
Я использую Linq для sql.
Вот код:
MemoryStream ms = new MemoryStream();
Document d = new Document(PageSize.A4, 60, 60, 40, 40);
PdfWriter w = PdfWriter.GetInstance(d, ms);
w.CloseStream = false;
string txtTemplate = "";
Encoding en = Encoding.GetEncoding("iso-8859-1");
StreamReader sr = new StreamReader(HttpContext.Current.Server.MapPath("~/Content/templates/CessaoDireitosDica.txt"), en);
txtTemplate = sr.ReadToEnd();
sr.Close();
string conselhos = "";
Font font = new Font(Font.HELVETICA, 11, Font.NORMAL);
font.SetColor(0xC6, 0xC6, 0xC6);
Paragraph txtBody = new Paragraph(txtTemplate, font);
txtBody .SetAlignment(ElementTags.ALIGN_JUSTIFIED);
d.Open();
d.Add(txtBody);
d.Close();
byte[] pdfDone = ms.ToArray();
w.Flush();
ms.Flush();
ms.Close();
return pdfDone;
Он не выдает ошибки, но ничего не сохраняет в БД. Поле БД является типом поля "изображение". Я также использую этот код для рендеринга PDF на лету (я обрезал byte[] pdfDone... и возвращаю MemoryStream).
Я не знаю, что может быть не так... И отладка, я также мог видеть, что byte [] pdfDone имеет значение (что-то вроде 3487), но ничего не сохраняется в БД.
Заранее спасибо!
1 ответ
Решение
function byte[] CreatePdf(){
byte[] result;
using (MemoryStream ms = new MemoryStream())
{
Document pDoc = new Document(PageSize.A4, 0, 0, 0, 0);
PdfWriter writer = PdfWriter.GetInstance(pDoc, ms);
pDoc.Open();
//here you can create your own pdf.
pDoc.Close();
result = ms.GetBuffer();
}
return result;
}