2016-12-01 101 views
2

我使用Visual Studio 2013,C#Windows應用程序,iTextSharp的:創建iTextSharp的PDF不保存文件

我可以輕鬆地創建/保存PDF文件,並寫入,但有什麼辦法,只是使用pdf文件,並寫入它沒有先保存它?每次有人運行報告時,我都不想創建臨時pdf文件。提前致謝 !!

Document doc = new Document(iTextSharp.text.PageSize.LETTER, 10,10,42,35); 

PdfWriter wri = PdfWriter.GetInstance(doc, new FileStream("Test.pdf", 
FileMode.Create)); 

doc.Open(); 

\\\\ Then I do a bunch of stuff, then do a close 


doc.Close(); 
+1

*寫入它,不保存*? – Hackerman

+3

[在內存中而不是物理文件中創建PDF]可能的重複(http://stackoverflow.com/questions/2815761/create-pdf-in-memory-instead-of-physical-file) – NineBerry

+0

我只是猜測,但你正在創建一個Web應用程序嗎?你想提供PDF下載,而不保存到磁盤? –

回答

-2

您可以使用MemoryMappedFile並寫入它並且它不是基於磁盤的。

using (MemoryMappedFile mmf = MemoryMappedFile.CreateNew("INMEMORYPDF.pdf", 1000000)) 
{ 
    PDFPageMargins margins = new PDFPageMargins(10, 10, 10, 10); 
    var document = new Document((_pageWidth > 540) ? PageSize.A4.Rotate() : PageSize.A4, margins.Left, margins.Right, margins.Top, margins.Bottom); 
    using (MemoryMappedViewStream stream = mmf.CreateViewStream()) 
    {      

     PdfWriter.GetInstance(document, stream); 
     document.Open(); 
     //MODIFY DOCUMENT 
     document.Close();      
    } 
    byte[] content; 
    using (MemoryMappedViewStream stream = mmf.CreateViewStream()) 
    { 
     BinaryReader rdr = new BinaryReader(stream); 
     content = new byte[mmf.CreateViewStream().Length]; 
     rdr.Read(content, 0, (int)mmf.CreateViewStream().Length); 
    } 
    return content;    
} 
+0

不知道爲什麼downvote。我錯過了什麼? –

+1

爲什麼使用mmf的時候可以直接使用MemoryStream呢? – NineBerry

+0

那麼,一個mmf可以通過傳遞句柄或指針在進程間共享。 –

相關問題