使用ITextSharp创建Pdf文件并从内存中打开PDF文档 [英] Creating Pdf file with ITextSharp and open PDF document from memory

查看:127
本文介绍了使用ITextSharp创建Pdf文件并从内存中打开PDF文档的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我编写了以下代码来创建pdf文件并使用ITextSharp保存pdf文件。



使用iTextSharp; 
使用iTextSharp.text;
使用iTextSharp.text.pdf;
使用System.IO;
折叠|复制代码
SaveFileDialog dlg = new SaveFileDialog();
dlg.Filter =PDF文件| * .pdf;
dlg.FilterIndex = 0;

string fileName = string.Empty;

if(dlg.ShowDialog()== DialogResult.OK)
{
fileName = dlg.FileName;

文件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保存的文件。我怎么能这样做?



谢谢

解决方案

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

myDocument.Open();

//在这里添加到PDF的内容...
PdfPTable table = new PdfPTable(2);
PdfPCell header = new PdfPCell(new Phrase(Your Heading));
header.Colspan = 2;
header.Horizo​​ntalAlignment = 1; // 0 =左,1 =中心,2 =右
table.AddCell(header);
table.AddCell(ID:+ Textbox1.Text);
myDocument.Add(table);
myDocument.Close();

byte [] content = myMemoryStream.ToArray();

//从内存流中写出PDF。
using(FileStream fs = File.Create(C:\\Test.pdf))
{
fs.Write(content,0,(int)content.Length) ;
}
}





当您关闭表单时,您可以删除该文件



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


< blockquote>

 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(文件标题);
doc.Open();
doc.Add(新段落(我的段落.Bla Bla测试));
doc.Close();
}
axAcroPDF1.src = Path.Combine(filepath,strFilename);


解决方案没问题,为我工作。感谢。

I have written the following code to create a pdf file and save the pdf file using 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();
} 



I want to open the file from the memory instead of opening the file that I saved with an opendialog. How can I do that?

Thank you

解决方案

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);
               }
           }



When you close your form you can delete the file

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


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);     


The solution is ok , worked for me. Thanks.


这篇关于使用ITextSharp创建Pdf文件并从内存中打开PDF文档的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆