2012-03-07 124 views
2

我有一個PDF文件,我需要在第一頁上插入圖像,然後將原始大小從A4調整爲其他大小。iTextSharp - 在PDF中添加圖像並調整頁面大小

我設法將圖像添加到PDF,但不能用下面的代碼調整其大小:

 string pdfFile = @"C:\Temp\a.pdf"; 

     PdfReader reader = new PdfReader(pdfFile); 

     PdfStamper stamper = new PdfStamper(reader, new FileStream(@"C:\Temp\out.pdf", FileMode.Create), PdfWriter.VERSION_1_5); 

     PdfContentByte writer = stamper.GetOverContent(1); 

     stamper.FormFlattening = true; 
     stamper.SetFullCompression(); 

     Image topImage = Image.GetInstance(@"C:\Temp\c.jpg"); 
     topImage.ScalePercent(19f); 
     topImage.SetAbsolutePosition(142, 700); 
     writer.AddImage(topImage); 

     Document myPDF = writer.PdfDocument; 
     myPDF.SetPageSize(PageSize.A3); 

     stamper.Close(); 
     stamper = null; 

這有什麼錯或丟失在我的代碼?

+0

請參閱此鏈接:http://www.mail-archive.com/[email protected]/msg37608.html。您將不得不創建一個新的pdf文檔,設置頁面大小,並將頁面添加到它。 – jmaglio 2012-03-07 14:40:44

回答

2

下面是一個PDF如何可以調整大小:

private string PdfResize(string tmpPdfFilename, string resultRootName) 
    { 
     try 
     { 
      string newPdfFilename = resultRootName + ".pdf"; 
      PdfReader resizeReader = new PdfReader(tmpPdfFilename); 

      Rectangle newRect = new Rectangle(0, 0, Convert.ToSingle(_pdfNewSizeW), Convert.ToSingle(_pdfNewSizeH)); 
      Document doc = new Document(newRect); 
      Document.Compress = true; 

      PdfWriter resizeWriter = PdfWriter.GetInstance(doc, new FileStream(newPdfFilename, FileMode.Create)); 
      doc.Open(); 

      PdfContentByte cb = resizeWriter.DirectContent; 

      for (int pageNumber = 1; pageNumber <= resizeReader.NumberOfPages; pageNumber++) 
      { 
       PdfImportedPage page = resizeWriter.GetImportedPage(resizeReader, pageNumber); 
       cb.AddTemplate(page, newRect.Width/resizeReader.GetPageSize(pageNumber).Width, 0, 0, 
           newRect.Height/resizeReader.GetPageSize(pageNumber).Height, 0, 0); 
       doc.NewPage(); 
      } 

      doc.Close(); 
      doc = null; 

      return newPdfFilename; 
     } 
     catch (Exception exp) 
     { 
      return String.Empty; 
     } 
    } 
+0

你應得的獎牌 – user3574076 2016-09-12 14:25:45

相關問題