Try   HackMD

「C# 檔案不落地在記憶體操作」筆記

下載 URL 圖檔落地

using (WebClient webClient_ = new WebClient()) { webClient_.DownloadFile(imageURL, fileName); }

下載 URL 圖檔到記憶體

using (WebClient webClient_ = new WebClient()) { byte[] data_ = webClient_.DownloadData(imageURL); MemoryStream mem_= new MemoryStream(data_); }

寫入 PDF 檔案落地

using (FileStream wfs = new FileStream(filePath, FileMode.OpenOrCreate)) { PdfWriter wr_ = PdfWriter.GetInstance(_doc, wfs); _doc.Open(); float[] clos = new float[] { 40, 40, 40 };// 寬度 PdfPTable tablerow1 = new PdfPTable(clos); foreach (string t in title) { PdfPCell cell = new PdfPCell(new Paragraph(t)) { MinimumHeight = 4f }; tablerow1.AddCell(cell); } List<string> list = new List<string>() { "ABC", "cde", "FgH" }; foreach (var d in list) { tablerow1.AddCell(new PdfPCell(image, true)); tablerow1.AddCell(new PdfPCell(new Paragraph(d + d))); tablerow1.AddCell(new PdfPCell(new Paragraph(d))); } _doc.Add(tablerow1);//將表格添加到pdf文檔中 _doc.Close();//關閉 wr_.Close(); wfs.Close(); }

寫入 PDF 檔案到記憶體

using (MemoryStream mem_ = new MemoryStream()) { PdfWriter wr_ = PdfWriter.GetInstance(_doc, mem_); _doc.Open(); float[] clos = new float[] { 40, 40, 40 };// 寬度 PdfPTable tablerow1 = new PdfPTable(clos); foreach (string t in title) { PdfPCell cell = new PdfPCell(new Paragraph(t)) { MinimumHeight = 4f }; tablerow1.AddCell(cell); } List<string> list = new List<string>() { "ABC", "cde", "FgH" }; foreach (var d in list) { tablerow1.AddCell(new PdfPCell(image, true)); tablerow1.AddCell(new PdfPCell(new Paragraph(d + d))); tablerow1.AddCell(new PdfPCell(new Paragraph(d))); } _doc.Add(tablerow1);//將表格添加到pdf文檔中 _doc.Close();//關閉 wr_.Close(); return mem_.ToArray(); }

如果 MemoryStream 要再使用,必須先轉成 byte[],之後再宣告 MemoryStream 來使用

Attachment a_ = new Attachment(new MemoryStream(ms_.ToArray()), ct);

透過 new MemoryStream(ms_.ToArray()) 後,Attachment a_ 才能真正取的檔案內容

tags: 工作紀錄