这两天一直在搞生成PDF文件的工作,由于以前没有做过,所以在WEB上Search了N遍,才找出了个大概。
其中,最多人遇到的问题是:不能显示中文。那是因为iTextSharp控件默认的字体只有英文,它不像WORD,若是没有所指定的字体会直接用宋体来代替。
具体解决方法如下:
(可以把C:/WINDOWS/Fonts目录下的所有文件拷贝到你项目的文件下,我这是直接用C盘里面的,XP系统)
Document document = new Document(PageSize.A4.Rotate());
try
{
//设置字体类型
BaseFont bfHei = BaseFont.CreateFont(@"c:/windows/fonts/SIMHEI.TTF", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);
PdfWriter writer = PdfWriter.GetInstance(document, new FileStream(@"C:/Documents and Settings/Administrator/桌面/my.pdf", FileMode.Create));
document.Add(new Paragraph ("我可是能够显示的哦!"));
}
catch (DataException de)
{
Response.Write(de.Message);
}
catch (IOException ioe)
{
Response.Write(ioe.Message);
}
finally
{
document.Close();
}
当然那两个文件路径可以用Server.MapPath ()方法设置为虚拟路径
其中换行的方法,我暂时还没有学到呢。但是用表格来做的话,内容满一行会自动换行的。
还有种方法是用PdfContentByte在绝对位置输出你想要的内容,如下:
//项目名称
PdfContentByte cb = writer.DirectContent;
cb.BeginText();
cb.SetFontAndSize(bfHei, 20);
cb.SetTextMatrix(200, 448);
string name = "项目名称: ";
cb.ShowText(name);
cb.EndText();
//下划线
cb.MoveTo(300, 445);
cb.LineTo(640, 445);
cb.Stroke();
暂时学到这么点东东,偷空拿到网上来跟大家交流,请大家多多指教!