IText 生成PDF的问题
作了一个IText 生成PDF 的demo,有以下问题想请教下
1、itextsharp 本身的健壮性,使用是否存在问题;
2、是否要pdf文件本身格式固定,用户的需求是多种PDF文件都生成在页眉显示;
3、如果客户端要在ie里显示打开pdf文件,是否要求必须按照pdf的阅读器;
4、如果文件较大是否可能会有超时?
5、如果多个客户端访问一个文件,是否有并发的问题,如A用户根据传入参数想显示带A001的字符,同时B用户也访问,传入B001的字符,A用户是否会显示成B001的PDF文件?
附件中附代码 vs2003 的解决方案
http://www.cnblogs.com/Files/jchdong/pdf.zip
关键代码如:
protected byte[] CreateImages(string code)
{
Bitmap image = new Bitmap(200, 50);
Graphics g = Graphics.FromImage(image);
g.Clear(System.Drawing.Color.White);
System.Drawing.Font font = new System.Drawing.Font("Arial", 25, FontStyle.Bold | FontStyle.Italic);
System.Drawing.Brush brush = new System.Drawing.SolidBrush(System.Drawing.Color.Blue);
//System.Drawing.Drawing2D.LinearGradientBrush brush = new System.Drawing.Drawing2D.LinearGradientBrush(
//new System.Drawing.Rectangle(0, 0, image.Width, image.Height), System.Drawing.Color.Blue, System.Drawing.Color.Blue, 1f, true);
g.DrawString(code, font, brush, 0, 0);
System.IO.MemoryStream ms = new System.IO.MemoryStream();
image.Save(ms, System.Drawing.Imaging.ImageFormat.Gif);
g.Dispose();
image.Dispose();
return ms.ToArray();
}
private void Button1_Click(object sender, System.EventArgs e)
{
PdfReader reader = new PdfReader(@"D:\ITurbo\cecerp\IE\pdf\TestWatermark.pdf");
int n = reader.NumberOfPages;
iTextSharp.text.Rectangle psize = reader.GetPageSize(1);
float width = psize.Width - 200;
float height = psize.Height - 50;
FileStream fs = new FileStream(@"D:\ITurbo\cecerp\IE\pdf\Test1Watermark.pdf", FileMode.Create);
PdfStamper stamp = new PdfStamper(reader, fs);
int i = 0;
PdfContentByte under;
iTextSharp.text.Image img = iTextSharp.text.Image.GetInstance(CreateImages("Test"));
img.SetAbsolutePosition(0, 0);
while (i < n)
{
i++;
under = stamp.GetUnderContent(i);
PdfTemplate template = under.CreateTemplate(200, 50);
template.AddImage(img,false);
under.AddTemplate(template, width, height);
}
stamp.Close();
Response.Redirect("Test1Watermark.pdf",false);
}