JacoBosch Ответов: 3

Создание Pdf-файла с помощью ITextSharp и открытие PDF-документа из памяти


Я написал следующий код для создания pdf-файла и сохранения pdf-файла с помощью ITextSharp.

using iTextSharp;
using iTextSharp.text;
using iTextSharp.text.pdf;
using System.IO; 
Collapse | Copy Code
SaveFileDialog dlg = new SaveFileDialog();
dlg.Filter = "PDF Files|*.pdf";
dlg.FilterIndex = 0;
 
string fileName = string.Empty;
 
if (dlg.ShowDialog() == DialogResult.OK)
{
fileName = dlg.FileName;
           
Document myDocument = new Document(iTextSharp.text.PageSize.A4, 10, 10, 42, 35);
PdfWriter.GetInstance(myDocument, new FileStream(fileName, FileMode.Create));
myDocument.Open();
myDocument.Add(new Paragraph("ID:" + TextBox1.Text));pre>
myDocument.Close();
} 


Я хочу открыть файл из памяти вместо того, чтобы открывать файл, который я сохранил с помощью opendialog. Как я могу это сделать?

Спасибо

3 Ответов

Рейтинг:
26

JacoBosch

using (MemoryStream myMemoryStream = new MemoryStream())
           {
               Document myDocument = new Document();
               PdfWriter myPDFWriter = PdfWriter.GetInstance(myDocument, myMemoryStream);

               myDocument.Open();

               // Add to content to your PDF here...
               PdfPTable table = new PdfPTable(2);
               PdfPCell header = new PdfPCell(new Phrase("Your Heading"));
               header.Colspan = 2;
               header.HorizontalAlignment = 1; //0=Left, 1=Centre, 2=Right
               table.AddCell(header);
               table.AddCell("ID:" + Textbox1.Text);
               myDocument.Add(table);
               myDocument.Close();

               byte[] content = myMemoryStream.ToArray();

               // Write out PDF from memory stream.
               using (FileStream fs = File.Create("C:\\Test.pdf"))
               {
                   fs.Write(content, 0, (int)content.Length);
               }
           }


Когда вы закроете свою форму, вы можете удалить файл

File.Delete(C:\\Test.pdf);


Рейтинг:
16

JacoBosch

var file = Path.GetTempFileName();
            string filepath = Path.GetTempPath();
            string strFilename = Path.GetFileName(file);
            using (MemoryStream ms = new MemoryStream())
            {
                Document doc = new Document(); 
                //PdfWriter.GetInstance(doc, ms);
                PdfWriter writer = PdfWriter.GetInstance(doc, new FileStream(Path.Combine(filepath, strFilename), FileMode.Create));
                doc.AddTitle("Document Title"); 
                doc.Open();
                doc.Add(new Paragraph("My paragraph. Bla Bla Test"));
                doc.Close(); 
            }
            axAcroPDF1.src = Path.Combine(filepath, strFilename);     


Рейтинг:
1

sinha.sandip

Решение в порядке, сработало на меня. Спасибо.