2016-04-12 25 views
0

"itext-5.5.8" kullanıyorum, bir pdf belgesine portre pdf (sayfa) sayfa eklemeye çalışıyorum, kod kusursuz çalışıyor ancak portre sayfalarını ekledikten sonra otomatik olarak yatay sayfalara dönüşüyor, nedenini bilmiyor musunuz?PDF sayfası iText'i kullanarak pdf'yi ekledikten sonra neden manzara sayfası olarak değişir?

KODU:

try { 
     PdfReader firstPdf = new PdfReader(mainFileWithPath); //main doc 
     PdfReader secondPdf =new PdfReader(addFileNameWithPath); // inserting pages 

     PdfStamper stamp = new PdfStamper(firstPdf, new FileOutputStream(outputPDFFile)); 

      int totalNumOfPagesToInsert = secondPdf.getNumberOfPages(); 
      int i =1; 
      while (i<=totalNumOfPagesToInsert) { 
       // Get a page(s) from secondPdf with the given pageNo 
       PdfImportedPage page = stamp.getImportedPage(secondPdf,i); 

       // insert new page in to the newly created pdf at specified page number. 
       stamp.insertPage(INSERT_AT_PAGE_NO + (i-1), secondPdf.getPageSize(i)); 

       // copy the content of the page copied from secondPdf. 
       stamp.getUnderContent(INSERT_AT_PAGE_NO + (i-1)).addTemplate(page, 0, 0); 

       i++; 
      } 

      //close the new created pdf. 
      stamp.close(); 

bana bunu düzeltmek yön vermek edin! Teşekkür

+1

Belki bu sözü Orijinal sayfanın bir dönüşü vardır. Bunu secondPdf.getPageRotation (i) 'kullanarak kontrol edebilirsiniz. Şu anda secondPdf.getPageSize (i) 'kullandığınızı unutmayın. Bu, secondPdf.getPageSizeWithRotation (i) 'ile karşılaştırıldığında farklı bir sayfa boyutuyla sonuçlanabilir. Ayrıca sayfaları eklemek için 'PdfStamper'ı kullanmam (yerleştirilen sayfalarda bulunabilecek tüm etkileşimi kaybedersiniz). 'PdfCopy' kullanmamanın belli bir nedeni var mı? –

+0

Teşekkür Yazar @Bruno Lowagie, secondPdf.getPageRotation (1) bana 270 verir, 'PdfCopy' kullanmanın bir nedeni yok, kullanıyorum ... bu da umarım sorunu çözer. –

+0

Aha, 'getPageRotation (1)' karakterinin 270 size verdiği gerçeği, orijinal ile kopya arasındaki farkı açıklıyor. Sayfayı "PdfStamper" öğesine eklerken, bu rotasyonu dikkate almadınız. –

cevap

0

Yazar olarak @Bruno Lowagie Aşağıda

gibi sorunu giderdik mı

... Kodu " rotasyon dikkate almadı" ...

try { 

      PdfReader firstPdf = new PdfReader(mainFileWithPath); 
      PdfReader secondPdf =new PdfReader(addFileNameWithPath); 

      // create new pdf with the content from firstPdf 
      PdfStamper stamp = new PdfStamper(firstPdf, new FileOutputStream(outputPDFFile)); 
      stamp.setRotateContents(false); 

      int totalNumOfPagesToInsert = secondPdf.getNumberOfPages(); 
      int i =1; 
      while (i<=totalNumOfPagesToInsert) { 
       // Get a single page from secondPdf with the given pageNo 
       PdfImportedPage page = stamp.getImportedPage(secondPdf,i); //Actual working code 

       // insert new page in to the newly created pdf at specified page number. 
       // choose page size bas 
       stamp.insertPage(INSERT_AT_PAGE_NO + (i-1), secondPdf.getPageSizeWithRotation(i)); //Actual working code 

       // copy the content of the page copied from secondPdf. 
       stamp.getUnderContent(INSERT_AT_PAGE_NO + (i-1)).addTemplate(page, 0, 0); //Actual working code 

       i++; 
      } 

      //close the new created pdf. 
      stamp.close();