2012-10-24 35 views
2

我有一個問題,需要使用.tiff中的圖像來創建帶有itextsharp的pdf。 下面是一些代碼:使用itextsharp創建的PDF尺寸不好的圖像

 iTextSharp.text.Document d = new iTextSharp.text.Document(); 
     PdfWriter pw = PdfWriter.GetInstance(d, new FileStream(filename, FileMode.Create)); 
     d.Open(); 

     PdfContentByte cb = pw.DirectContent; 
     foreach (Image img in imgs) 
     { 
      d.NewPage(); 
      d.SetPageSize(new iTextSharp.text.Rectangle(0, 0, img.Width, img.Height)); 
      iTextSharp.text.Image timg = iTextSharp.text.Image.GetInstance(img, iTextSharp.text.BaseColor.WHITE); 
      timg.SetAbsolutePosition(0, 0); 
      cb.AddImage(timg); 
      cb.Stroke(); 
     } 
     d.Close(); 

它創建具有兩頁的PDF格式,但在第一頁上的圖像是大的。
頁面具有圖像的大小,但它縮放圖像的左下角。 它只是與tiff圖像,如果我採取PNG,它的工作正常。

任何解決方案?

+1

不宜頁面大小創建一個新的頁面之前設置之前,設置頁面大小(SetPageSize)?如果我沒有記錯,一旦創建了一個頁面,它的大小就是固定的。 – mkl

+0

不錯,就是這樣。謝謝。 – Snote

回答

1

感謝mkl的評論,我找到了。 的新頁命令(NewPage公司)

0

使用這樣

string[] validFileTypes = {"tiff"}; 
string ext = System.IO.Path.GetExtension(FileUpload1.PostedFile.FileName); 
bool isValidFile = false; 
if (!isValidFile) 
{ 
Label.Text = "Invalid File. Please upload a File with extension " + 
         string.Join(",", validFileTypes); 
} 
else 
    { 
     string pdfpath = Server.MapPath("pdf"); 
     Document doc = new Document(PageSize.A4, 0f, 0f, 0f, 0f); 
     PdfWriter.GetInstance(doc, new FileStream(pdfpath + "/Images.pdf", FileMode.Create)); 
     doc.Open(); 

     string savePath = Server.MapPath("images\\"); 
     if (FileUpload1.PostedFile.ContentLength != 0) 
      { 
      string path = savePath + FileUpload1.FileName; 
      FileUpload1.SaveAs(path); 
      iTextSharp.text.Image tiff= iTextSharp.text.Image.GetInstance(path); 
      tiff.ScaleToFit(doc.PageSize.Width, doc.PageSize.Height); 
      tiff.SetAbsolutePosition(0,0); 
      PdfPTable table = new PdfPTable(1); 
      table.AddCell(new PdfPCell(tiff)); 
      doc.Add(table); 
      } 
     doc.Close(); 
     } 
相關問題