C#使用itextsharp打印pdf的实现代码.docx
第
C#使用itextsharp打印pdf的实现代码
if(((num==PngImage.PNGID[0])(num2==PngImage.PNGID[1]))((num3==PngImage.PNGID[2])(num4==PngImage.PNGID[3])))
returnPngImage.GetImage(imgb);
if((num==0xd7)(num2==0xcd))
returnnewImgWMF(imgb);
if((num==0x42)(num2==0x4d))
returnBmpImage.GetImage(imgb);
if((((num==0x4d)(num2==0x4d))((num3==0)(num4==0x2a)))||(((num==0x49)(num2==0x49))((num3==0x2a)(num4==0))))
RandomAccessFileOrArrays=null;
s=newRandomAccessFileOrArray(imgb);
ImagetiffImage=TiffImage.GetTiffImage(s,1);
if(tiffImage.OriginalData==null)
tiffImage.OriginalData=imgb;
returntiffImage;
finally
if(s!=null)
s.Close();
thrownewIOException(MessageLocalization.GetComposedMessage(the.byte.array.is.not.a.recognized.imageformat));
}
该方法根据参数获取图片实例的方式比较多,例如:Image,PdfTemplate,PRIndirectReference,byte[],Stream,string,Uri等等,以上给出了根据Image和byte[]获取ItextSharp的image实例。
4.Image的ScaleAbsolute():设置图片信息。
publicvoidScaleAbsolute(floatnewWidth,floatnewHeight)
this.plainWidth=newWidth;
this.plainHeight=newHeight;
float[]matrix=this.Matrix;
this.scaledWidth=matrix[6]-matrix[4];
this.scaledHeight=matrix[7]-matrix[5];
this.WidthPercentage=0f;
}
以上代码可以看出,设置图片的信息主要包括高度、宽度、排列等信息。
5.Anchor类的Process()方法:重写链接的处理方法。
publicoverrideboolProcess(IElementListenerlistener)
boolflag=(this.reference!=null)this.reference.StartsWith(#);
boolflag2=true;
foreach(Chunkchunkinthis.Chunks)
if(((this.name!=null)flag2)!chunk.IsEmpty())
chunk.SetLocalDestination(this.name);
flag2=false;
if(flag)
chunk.SetLocalGoto(this.reference.Substring(1));
elseif(this.reference!=null)
chunk.SetAnchor(this.reference);
listener.Add(chunk);
returntrue;
catch(DocumentException)
returnfalse;
}
以上方法可以看到,该方法是在本类中被重写,用以处理链接的相关信息。
6.PageSize:设置纸张的类型。
publicclassPageSize
//Fields
publicstati