2012-10-24 32 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(); 
     } 
相关问题