posts - 189,  comments - 1165,  trackbacks - 6

Manning出版公司推出了iText in Action的EARLY ACCESS EDITION,但国内的用户无法访问Publisher’s iText in Action page(该书在出版社的页面),所以我通过ssh登陆我的网站并下载到本站点供感兴趣的下载学习。
lowagie_ch1_meap.pdf


from:http://blog.rubypdf.com/2006/09/28/%e7%8e%b0%e5%9c%a8%e5%8f%af%e4%bb%a5%e4%b8%8b%e8%bd%bd%e3%80%8aitext-in-action%e3%80%8b%e7%9a%84%e7%ac%ac%e4%b8%80%e7%ab%a0%e4%ba%86/

posted on 2006-09-29 20:17 RubyPDF 阅读(2380) 评论(22)  编辑 收藏 网摘 所属分类: iTextSharp(iText#)

FeedBack:
2006-10-26 19:26 | HWCheng [未注册用户]
期待中文版的发行.

不过个人感觉iTextSharp有点博大精深,本人在.NET 中生成一个二维条码,使用Graphics对象,但使用iTextSharp生成到PDF文件中后,发觉条码中黑白交界处有平滑过渡,相当模糊,不知道应该设置取消平滑?
  回复  引用    
#2楼 [楼主]
2006-10-27 10:08 | HardRock      
@HWCheng
中文版的发行可能遥遥无期了,因为出版社觉得可能市场不够。
iTextSharp是很博大精深的。
你说的问题能否提供下相关代码,这样我分析起来也方便些,
rocsky#gmail.com
  回复  引用  查看    
2006-10-27 13:22 | HWCheng [未注册用户]
这是第一段代码:

iTextSharp.text.Document pdfDoc=new iTextSharp.text.Document();
iTextSharp.text.pdf.PdfWriter pdfWriter=iTextSharp.text.pdf.PdfWriter.GetInstance(pdfDoc,new System.IO.FileStream("BarcodeTest.pdf", System.IO.FileMode.Create));
pdfWriter.PdfVersion='5';
pdfDoc.Open();
iTextSharp.text.pdf.PdfContentByte cb=pdfWriter.DirectContent;

baseGraphics.SmoothingMode=SmoothingMode.HighSpeed;
Com.OuMei.Barcodes.BarcodePDF417 pdf417=new Com.OuMei.Barcodes.BarcodePDF417();
pdf417.SetText("程宏威thisisatestcode39");
pdf417.Options=Com.OuMei.Barcodes.BarcodePDF417.PDF417_INVERT_BITMAP;
pdf417.DrawToPDF(cb,this.innerRect,Color.Black,Color.White,fRotateAngle);

pdfDoc.Close();
  回复  引用    
2006-10-27 13:25 | HWCheng [未注册用户]
这是第二段代码,实现DrawToPDF,这个方法是我在iTextSharp.text.Pdf.Barcodes中的pdf417条码对象中加的一段:

public void DrawToPDF(iTextSharp.text.pdf.PdfContentByte cb,RectangleF drawRect,System.Drawing.Color foreColor,System.Drawing.Color backColor,float angle)
{
float bottom=cb.PdfDocument.PageSize.Height-drawRect.Bottom;
PdfTemplate pdfTmp=cb.CreateTemplate(drawRect.Width,drawRect.Height);

PaintCode();
float unitHeight=drawRect.Height/(codeRows*yHeight);
float unitWidth=drawRect.Width/bitColumns;
float tmpFloat=unitHeight>unitWidth?unitWidth:unitHeight;

float drawWidth=tmpFloat;
float drawHeight=tmpFloat*yHeight;

int stride = (bitColumns + 7) / 8;
float drawX=drawRect.X;
float drawY=drawRect.Y;

pdfTmp.SetColorFill(new iTextSharp.text.Color(backColor));
pdfTmp.Rectangle(0f,0f,pdfTmp.Width,pdfTmp.Height);
pdfTmp.Fill();

pdfTmp.SetColorFill(new iTextSharp.text.Color(foreColor));
for (int k = 0; k < codeRows; ++k)
{
drawX=0f;
drawY=pdfTmp.Height-(k+1)*drawHeight;

int p = k * stride;
for (int j = 0; j < bitColumns; ++j)
{
drawX=j*drawWidth;
int b = outBits[p + (j / 8)] & 0xff;
b <<= j % 8;
if((b & 0x80)==0)
{
pdfTmp.Rectangle(drawX,drawY,drawWidth,drawHeight);
}
}
}

pdfTmp.Fill();

cb.AddTemplate(
pdfTmp,(float)Math.Cos(System.Math.PI* angle/180),
(float)Math.Sin(System.Math.PI* angle/180),
-(float)Math.Sin(System.Math.PI* angle/180),
(float)Math.Cos(System.Math.PI* angle/180),
drawRect.X,
bottom
);

}
  回复  引用    
2006-10-27 13:28 | HWCheng [未注册用户]
按上述代码成功生成了PDF文档,不过里面条码的黑白交接比较模糊,是经过平滑处理的可能,怎么样设置不需要平滑,不需要消锯齿.

我把我名字也贴到代码里面了,呵呵.
  回复  引用    
2006-10-27 13:30 | HWCheng [未注册用户]
希望能为iTextSharp的发展完善做点贡献才好.
  回复  引用    
2006-10-27 13:31 | HWCheng [未注册用户]
baseGraphics.SmoothingMode=SmoothingMode.HighSpeed;
这行代码是无用的,拷贝过来没删掉.
  回复  引用    
2006-10-27 13:33 | HWCheng [未注册用户]
能不能得到你的联系方式,我的QQ是343202742
ezhon@163.com

我在深圳
  回复  引用    
2006-10-27 13:40 | HWCheng [未注册用户]
我用Acrobat的PDF虚拟打印机生成的PDF文档没有这个问题,黑白交接处很清晰的.
  回复  引用    
2006-10-27 17:03 | HWCheng [未注册用户]
你的chap0907示例代码中生成的条码,黑白交界处有平滑处理,看起来比较模糊,我查ADOBE PDF文档手册,应该是设置smoothness或者flatness吧,从iTestSharp中可以设置flatness,没有效果,但不知道从哪里可以设置smoothness.
  回复  引用    
#11楼 [楼主]
2006-11-02 11:48 | HardRock      
@HWCheng
不好意思,现在才回复你,你试下使用另外一个方法CreateDrawingImage,获得你自己想要的图片,然后插入PDF,而不是使用GetImage
iTextSharp是先获得图片,然后把图片插入到PDF中的方式来实现barcode的,因为我不太了解PDF417。

  回复  引用  查看    
2006-11-07 17:48 | HWCheng [未注册用户]
谢谢你的提醒,插入图片可能是个好办法,我试试
  回复  引用    
#13楼 [楼主]
2006-11-07 17:58 | HardRock      
@HWCheng
不客气,成功的时候别忘了了跟大家分享下你的经验。
  回复  引用  查看    
2006-11-13 22:47 | feesuo [未注册用户]
iTextSharp增加CIDFont支持的另类实现方法(也许灵活性更大些)
http://www.cnblogs.com/hardrock/archive/2005/09/24/243127.html

这篇文章里的代码展开之后怎么什么也没有呢?

我在用iTextSharp 3.1.6的时候说UnicodeBigUnmarked是不受支持的编码名?
sofy1984@126.com 不胜感激!
  回复  引用    
#15楼 [楼主]
2006-11-13 23:06 | HardRock      
@feesuo
我回答你了,用“UTF-16BE”替换掉“UnicodeBigUnmarked”,然后重新编译iTextSharp试下看,家里的机器太烂(C700),懒得测试了。
那个另类的方法你还是不要用了,用官方的方法好了,那个方法是在官方提出解决办法前的权宜之计罢了。
至于展不开,好像是博客的问题。

  回复  引用  查看    
2006-11-15 09:19 | feesuo [未注册用户]
嗯.嗯,多谢!
  回复  引用    
2007-06-09 14:35 | jincw      
@HardRock
请问下,我用PdfContent cb = writer.DirectConte;
cb.setFontandsize(basefont,12);
cb.beginText();
cb.showText(text);
cb.endText();

怎样设置cb的字体样式啊,比如说粗体

  回复  引用  查看    
2007-06-09 15:14 | jincw      
很急,哪位大哥回复一下!谢谢了
  回复  引用  查看    
2007-07-20 11:08 | 游客 [未注册用户]
Font font11 = FontFactory.getFont("Arial", 11,Font.NORMAL,Color.black);
//下面是显示中文的
//BaseFont bfChinese = BaseFont.createFont("STSong-Light","UniGB-UCS2-H",BaseFont.NOT_EMBEDDED);
// Font font11 = new Font(bfChinese,12,Font.NORMAL);

Paragraph par = new Paragraph("Quotation",font11);
par.setAlignment(1);
document.add(par);
  回复  引用    
2007-07-20 11:09 | 游客 [未注册用户]
有没有那位知道如何设置表格的行高?
  回复  引用    
2008-06-27 11:35 | kokyu [未注册用户]
public static bool ConvertDataTableToRtf(DataTable Data, string RtfFile, string FontPath, float FontSize)
{
Document document = new Document();
RtfWriter2 writer = RtfWriter2.GetInstance(document, new FileStream(RtfFile, FileMode.Create));
document.Open();
BaseFont baseFont =BaseFont.CreateFont(FontPath, BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);
iTextSharp.text.Font font = new iTextSharp.text.Font(baseFont, FontSize);
Table table = new Table(Data.Columns.Count);
for (int i = 0; i < Data.Rows.Count; i++)
{
for (int j = 0; j < Data.Columns.Count; j++)
{
table.AddCell(new Phrase(Data.Rows[i][j].ToString(), font));
}
}
document.Add(table);
document.Close(); //////////////////错误出现的地方
//writer.Close();
MessageBox.Show("rtf sucess!");
return true;
}

ConvertDataTableToRtf(Table, @".\test.rtf", "C:\\WINDOWS\\FONTS\\SIMSUN.TTC,1", 9);

我在用生成rtf的时候,在outputstreamCounter.cs怎么出现了
public override void Flush() {
outc.Flush(); ////////无法访问已关闭的文件。
}
但是我几乎用同样的代码生成pdf的时候没有出现这个问题,我调试了半天好像是stream已经没有了,但是我就是找不出什么时候关闭的。麻烦您帮我看看!
  回复  引用    
#22楼 [楼主]
2008-06-27 11:36 | RubyPDF      
@kokyu
你使用的是哪个版本,这个bug以前我发现过,如果最新版本仍然有这个问题,请告诉我。
  回复  引用  查看    

标题  
姓名  
主页
Email (博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
该文被作者在 2008-02-19 16:57 编辑过
"五向定位"职业成长路线公开课(上海、南京、大连)
Google站内搜索


相关链接:
 
<2006年9月>
272829303112
3456789
10111213141516
17181920212223
24252627282930
1234567

与我联系

搜索

 

常用链接

我参与的团队

我的标签

随笔分类(164)

PDF

最新随笔

积分与排名

  • 积分 - 378431
  • 排名 - 60

最新评论

阅读排行榜

评论排行榜

60天内阅读排行