2016-06-01 13 views
1

Ich habe eine Datei mit mehreren Versandetiketten, 2 pro Seite (ich kann dieses Format nicht wählen). Ich versuche, die Datei so zu ändern, dass jedes einzelne Etikett auf einem 4 x 6 Etikettendrucker gedruckt werden kann.Doppelte PDF-Seiten mit PdfStamper/PdfReader

Ich habe ein Problem mit dem Duplizieren des Inhalts einer PDF-Seite, zu einer anderen Seite, so dass ich dann jede Seite mit verschiedenen Regionen beschneiden kann, um 2 Seiten zu erzeugen, eine mit jedem Etikett von der Originalseite. Der Code, den ich zur Zeit habe, ist wie folgt:

string filename = "Package.pdf"; 
     using (var existingFileStream = new FileStream(filename, FileMode.Open)) 
     { 
      var pdfReader = new PdfReader(existingFileStream); 

      using (FileStream output = new FileStream("Mod_package.pdf", FileMode.Create, FileAccess.Write)) 
      { 
       using (PdfStamper pdfStamper = new PdfStamper(pdfReader, output)) 
       { 
        int originalpages = pdfReader.NumberOfPages; 
        for(int page = 1; page <=originalpages; page++) 
        { 
         Rectangle rect = pdfReader.GetCropBox(page); 
         pdfStamper.InsertPage(page * 2, rect); 
        } 
        for(int page = 2; page <=pdfReader.NumberOfPages; page=page+2) 
        { 

         //I want to insert the content from pdf page 1 into 
         //page 2, page 3 into page 4 etc etc. 
        } 
        for (int page = 1; page <= pdfReader.NumberOfPages; page++) 
        { 
         //The basic jyst of how I'm cropping 
         //This will be modified to use an even/odd page scheme 
         Rectangle rect = pdfReader.GetCropBox(page); 
         rect.Bottom = rect.Bottom/2; 
         pdfReader.GetPageN(page).Put(PdfName.CROPBOX, new PdfRectangle(rect)); 
         rect = pdfReader.GetCropBox(page); 
         rect.Top = rect.Top/2; 
         pdfReader.GetPageN(page).Put(PdfName.CROPBOX, new PdfRectangle(rect)); 
        } 
       } 
      } 
      pdfReader.Close(); 
     } 

Ich würde schätzen, irgendwelche Empfehlungen, wie diese Aufgabe und meine Entschuldigung zu tun, wenn ich seltsam iTextSharp Code haben .. ich es relativ neu bin.

Antwort

2

Es stellt sich heraus, dass, sobald ich mir die Zeit nehme, die Frage zu stellen, dass ich die Antwort finden würde. In dem obigen Code, I eingeführt, um die folgenden:

pdfStamper.ReplacePage(pdfReader, page - 1, page); 

mit dem in den zweiten für die Schleife, wird der Inhalt von Seite 1 bis Seite 2 übertragen, 3 bis 4 etc etc.

+0

Es Gummi ducking genannt wird. Freut mich, Ihnen behilflich zu sein. http://www.urbandictionary.com/define.php?term=Rubber%20ducking –

+0

Haha .. Ich werde mich daran erinnern. Vielen Dank! –