2012-03-07 186 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