IText 生成PDF的问题

jiangchuandong 2008-03-21 09:30:17
作了一个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);

}
...全文
245 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
lzqlrr 2008-03-31
  • 打赏
  • 举报
回复
up
anwenpany 2008-03-31
  • 打赏
  • 举报
回复
up
metsys 2008-03-28
  • 打赏
  • 举报
回复
1、itextsharp 本身的健壮性,使用是否存在问题;
-- 相对比较稳定,一般来说不会有问题

2、是否要pdf文件本身格式固定,用户的需求是多种PDF文件都生成在页眉显示;
-- 自行设置,可以按页按节按全文设置

3、如果客户端要在ie里显示打开pdf文件,是否要求必须按照pdf的阅读器;
-- 这个是必须的,acrobat是准配置,网上下载阅读器比较方便

4、如果文件较大是否可能会有超时?
-- 超大文件与超大网页差不多,试着变通处理

5、如果多个客户端访问一个文件,是否有并发的问题,如A用户根据传入参数想显示带A001的字符,同时B用户也访问,传入B001的字符,A用户是否会显示成B001的PDF文件?
-- 把pdf当作网页就不难理解了。pdf动态生成,与动态网页一样。
wxg22526451 2008-03-21
  • 打赏
  • 举报
回复
用过一次iText,知道的比较浅
1.存在问题还没遇到过
2.可以试下自己用代码控制格式
3.可以显示下载或打开文件,要打开的话肯定要有阅读器或插件
4.文件大性能应该跟服务器有关系
5.操作同一文件肯定会有并发问题
江门拓胜科技 2008-03-21
  • 打赏
  • 举报
回复
1、itextsharp 本身的健壮性,使用是否存在问题;
2、是否要pdf文件本身格式固定,用户的需求是多种PDF文件都生成在页眉显示;
3、如果客户端要在ie里显示打开pdf文件,是否要求必须按照pdf的阅读器;
4、如果文件较大是否可能会有超时?
5、如果多个客户端访问一个文件,是否有并发的问题,如A用户根据传入参数想显示带A001的字符,同时B用户也访问,传入B001的字符,A用户是否会显示成B001的PDF文件?


answer:
1,不会
2,要固定
3,不用安装
4,看机器加载速度,配置高会快些
5,并发问题,可以用事务/存储过程处理
jiangchuandong 2008-03-21
  • 打赏
  • 举报
回复
5.操作同一文件肯定会有并发问题
-> 我想到先生成一个文件,然后判断文件是否存在,如果不存在就生成,存在就直接转到生成文件,这样就不会存在并发读取的问题了
boblaw 2008-03-21
  • 打赏
  • 举报
回复
3. 客戶端用IE打開,當然要裝pdf閱讀器
jiangchuandong 2008-03-21
  • 打赏
  • 举报
回复
up

62,047

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧