【译】在Asp.Net中操作PDF – iTextSharp
iTextSharp支持所有主流的图片格式,比如:jpg, tif, gif, bmp, png和wmf.在iTextSharp中使用Image.GetInstance()方法创建图片有很多种方式,或许最常用的方式应该是传入文件的路径和文件名到该方法中:
string pdfpath = Server.MapPath("PDFs");
string imagepath = Server.MapPath("Images");
Document doc = new Document();
try
{
PdfWriter.GetInstance(doc, new FileStream(pdfpath + "/Images.pdf", FileMode.Create));
doc.Open();
doc.Add(new Paragraph("GIF"));
Image gif = Image.GetInstance(imagepath + "/mikesdotnetting.gif");
doc.Add(gif);
}
catch (DocumentException dex)
{
Response.Write(dex.Message);
}
catch (IOException ioex)
{
Response.Write(ioex.Message);
}
catch (Exception ex)
{
Response.Write(ex.Message);
}
finally
{
doc.Close();
}
其他可以使用的构造函数的重载可以是传入一个URL或是一个System.Drawing.Image对象(并不是iTextSharp.text.Image).
注意:下面代码段的System.Drawing.Image.FromStream()方法使用了命名空间的别名,在前面讲述List的文章中就已经提到过,使用命名空间的别名以防止两个不同Image类冲突:\
doc.Add(new Paragraph("JPG"));
string url = "http://www.2cto.com :1805/PDF/Images/mikesdotnetting.jpg";
Image jpg = Image.GetInstance(new Uri(url));
doc.Add(jpg);
doc.Add(new Paragraph("PNG"));
using (FileStream fs = new FileStream(imagepath + "/mikesdotnetting.png", FileMode.Open))
{
Image png = Image.GetInstance(sd.Image.FromStream(fs),ImageFormat.Png);
doc.Add(png);
}
目前为止还不能辨别出我所提供的图片哪个是JPG,哪个是PNG,但在PDF中的结果图片分辨率并不好,在默认情况下,嵌入PDF的图片是72 dpi(每英尺的点阵数),这种分辨率如果实在PDF需要打印出来时,就非常不够了,一般来说,商业打印机需要的图片最小分辨率为300dpi.为了达到这个效果,你可以将72dpi的图片缩小至原图片的24%.实际上你是将原来300像素的图片缩小为72像素:72/300 * 100 = 24%。这时嵌入pdf的图片从大小来说一模一样,但是在文档占用方面却少了很多:
doc.Add(new Paragraph("TIF Scaled to 300dpi"));
Image tif = Image.GetInstance(imagepath + "/mikesdotnetting.tif");
tif.ScalePercent(24f);
doc.Add(tif);
- 发表评论
-
- 最新评论 更多>>