どう

2017-04-12 6 views
0

私はこのようにそれに文字列を書き込むためにPDFファイルを読んでいるASP.NET MVCでPDFファイルのコピーを作成します。どう

public ActionResult Index(HttpPostedFileBase file) 
{ 


    byte[] pdfbytes = null; 
    BinaryReader rdr = new BinaryReader(file.InputStream); 
    pdfbytes = rdr.ReadBytes((int)file.ContentLength); 
    PdfReader myReader = new PdfReader(pdfbytes); 

と私は、新しいファイルを渡すためにしようとしていますこのようなFileStreamへ:

FileStream fs = new FileStream(newFile, FileMode.Create, FileAccess.Write); 

しかし、私はfsオブジェクトにコピーし、新しいファイルを渡す方法がわかりません。あなたはそれで私を助けることができますか?ありがとう。

+0

pdfbytesとメモリストリームを構築し、その後のMemoryStreamののwriteTo方法 –

答えて

1

更新されたバイト配列にアクセスできる場合は、File.WriteAllBytesに渡します。または、通常は文書をディスクにファイルとして保存することを許可するPdfDocumentまたはPdfWriterのインスタンスを持つこともできます。それが役に立てば幸い!ここで

1

は、既存のPDFファイルを読み込み、新しいものにコピーし、新しい文字列の行を追加した例である。

using iTextSharp.text; 
using iTextSharp.text.pdf; 
using System.IO; 

namespace ConsoleApp1 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      string originalFile = "c:\\Users\\Admin\\Desktop\\receipt mod 3.pdf"; 
      string copyOfOriginal = "c:\\Users\\Admin\\Desktop\\newFile.pdf"; 

      using (var reader = new PdfReader(originalFile)) 
      { 
       using (var fileStream = new FileStream(copyOfOriginal, FileMode.Create, FileAccess.Write)) 
       { 
        var document = new Document(reader.GetPageSizeWithRotation(1)); 
        var writer = PdfWriter.GetInstance(document, fileStream); 

        document.Open(); 

        for (var i = 1; i <= reader.NumberOfPages; i++) 
        { 
         document.NewPage(); 

         var baseFont = BaseFont.CreateFont(BaseFont.HELVETICA_BOLD, BaseFont.CP1252, BaseFont.NOT_EMBEDDED); 
         var importedPage = writer.GetImportedPage(reader, i); 

         var contentByte = writer.DirectContent; 
         contentByte.BeginText(); 
         contentByte.SetFontAndSize(baseFont, 12); 

         var LineString = "Hello World!"; 

         contentByte.ShowTextAligned(10,LineString,50,50,0); 

         contentByte.EndText(); 
         contentByte.AddTemplate(importedPage, 0, 0); 
        } 

        document.Close(); 
        writer.Close(); 
       } 
      } 
     } 
    } 
} 
0

はこれを試してみてください。 このプログラムは、すべてのpdfファイルをある場所から別の場所にコピーします。

protected void Button1_Click(object sender, EventArgs e) 
     { 

    string sourceDirectory = @"D:\project training\source"; 

      string targetDirectory = @"D:\project training\destiny"; 

      Copy(sourceDirectory, targetDirectory); 
     } 
     public static void Copy(string sourceDirectory, string targetDirectory) 
     { 
      DirectoryInfo diSource = new DirectoryInfo(sourceDirectory); 
      DirectoryInfo diTarget = new DirectoryInfo(targetDirectory); 

      CopyAll(diSource, diTarget); 
     } 
     public static void CopyAll(DirectoryInfo source, DirectoryInfo target) 
     { 



      Directory.CreateDirectory(target.FullName); 
      foreach (FileInfo fi in source.GetFiles()) 
      { 
       if (fi.Extension.Equals(".pdf")) 
       { 
        fi.CopyTo(Path.Combine(target.FullName, fi.Name), true); 
       } 
      } 


      foreach (DirectoryInfo diSourceSubDir in source.GetDirectories()) 
      { 
       DirectoryInfo nextTargetSubDir = 
        target.CreateSubdirectory(diSourceSubDir.Name); 
       CopyAll(diSourceSubDir, nextTargetSubDir); 
      } 
     } 
+0

ああ、私はちょうど今、私はあなたの質問を理解して申し訳ありませんが使用されます。あなたは編集するためにコピーを作る必要がありますか?本当に申し訳ありません 。コピーしたpdfファイルのみを入力したコード – vinoth