2017-11-16 21 views
0

私はpdfを取得し、そのpdfの行を追加して新しいpdfを作成し、そのpdfに与えられたパスに保存するメソッドを持っています。新しいファイルをパスに保存するのではなく、バイトに変換して電子メールで送信する方法をいくつか試してみましたが、すべての方法でパスを探すとパスが見つかりませんコード。ItextSharp PDFに行を追加し、保存せずにバイトに変換します。

 protected void CreatePDF() 
    { 

     string Oldfile = @"C:\BlankPDFt.pdf"; // Gets the Template/The actualy agreement Letter 
     // (new FileInfo("C:/Documents/Docs.pdf")).Directory.Create(); // Go create this folder if it's not there 
     string NewFile = "C:/Documents/Docs.pdf"; 
     PdfReader reader = new PdfReader(Oldfile); 
     iTextSharp.text.Rectangle Size = reader.GetPageSizeWithRotation(1); 
     Document document = new Document(Size); 
     FileStream fs = new FileStream(NewFile , FileMode.Create, FileAccess.Write); // This is where it all ways look for new file path 
i dont want it to save instead convert to bytes but wont work. 
     PdfWriter weiter = PdfWriter.GetInstance(document, fs); 
     document.Open(); 
     PdfContentByte cb = weiter.DirectContent; 
     PdfImportedPage page = weiter.GetImportedPage(reader, 1); 
     cb.AddTemplate(page, 0, 0); 
     BaseFont bf = BaseFont.CreateFont(BaseFont.HELVETICA, BaseFont.CP1252, BaseFont.NOT_EMBEDDED); 
     cb.SetColorFill(BaseColor.BLACK); 
     cb.SetFontAndSize(bf, 12); 
     cb.BeginText(); 
    // string Signatur = "Some texts"; // adds this text to that pdf 
     cb.ShowTextAligned(PdfContentByte.ALIGN_CENTER, "Here", 335, 90, 0); // Insert the signature 
     cb.EndText(); 
    } 
+0

一時フォルダにファイルを作成して後で削除してみますか? – GMR516

+0

良いアイデア!残念ながら、この方法には適切な方法ではありません。プロセスを遅くするだけです。プラス私はその文書を探して、それらのうちの40人が同じ時間を作成し、それが削除のために行くだろう場合、何を削除する必要がありますか? – Francis

答えて

0

PdfWriter.GetInstance()方法は、その2番目の引数としてInputStreamを受け付けます。 FileStreamを渡す代わりに、MemoryStreamに渡す必要があります。

MemoryStream memory_stream = new MemoryStream(); 
PdfWriter.GetInstance(document, memory_stream); 
... 
document.Close(); 
byte[] pdf_bytes = memory_stream.ToArray(); 
+0

これを試してみましょう。byte [] pdf_bytes = baos.toByteArray();それはタラレーだけでしょうか?このByteArrayOutputStreamに与えるエラーには、tobytearrayの定義が含まれていません – Francis

+0

はい、私の更新を参照してください。私はもともとJavaでスニペットを書いていました。 –

+0

Worked Thanks!今はどこにも保存されません – Francis

関連する問題