2017-04-12 1 views
0

lese ich eine PDF-Datei zum Schreiben einer Zeichenfolge auf es wie folgt zu erstellen:Wie eine Kopie einer PDF-Datei in ASP.NET MVC

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

und ich versuche, eine neue Datei zu übergeben zu FileStream wie folgt aus:

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

Aber ich weiß nicht, wie die kopierte neue Datei fs Objekt zu übergeben. Kannst du mir damit helfen? Vielen Dank.

+0

einen Speicherstrom mit pdfbytes bauen und dann die Methode Memory WriteTo verwenden –

Antwort

1

Wenn Sie Zugriff auf aktualisierten Byte-Array haben, übergeben Sie es an File.WriteAllBytes. Oder Sie haben eine Instanz von PdfDocument oder PdfWriter, mit der Sie das Dokument in der Regel auch auf der Festplatte speichern können. Ich hoffe es hilft!

1

Hier ist beispielsweise die bestehende PDF-Datei zu lesen, kopieren sie neue und das Hinzufügen neuer String line:

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

bereits. Dieses Programm kopiert alle PDF-Dateien von einem Ort zu einem anderen.

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

oh Es tut mir leid Ihre Frage gerade jetzt habe ich verstanden. Sie müssen eine Kopie zum Bearbeiten erstellen? wirklich leid . Der Code, den ich eingegeben habe, kopiert nur PDF-Dateien – vinoth