需要按照表格的内容输出为PDF,当写入中文时:
string path = @"P_C_X.pdf";
FileStream pdfFS = new FileStream(path, FileMode.Create);
Document doc = new Document(iTextSharp.text.PageSize.A4.Rotate(), 3.19f, 3.19f, 5.04f, 2.54f);
PdfWriter writer = PdfWriter.GetInstance(doc, pdfFS);
doc.Open();
PdfContentByte cb = writer.DirectContent;
System.Text.Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
BaseFont font = BaseFont.CreateFont(@"C:\Windows\Fonts\simkai.ttf", BaseFont.CP1252, BaseFont.NOT_EMBEDDED);
cb.BeginText();
cb.SetFontAndSize(font, 15);
cb.ShowTextAligned(PdfContentByte.ALIGN_LEFT, "加油", 88, 340, 0);
写入失败,但英文可以正常写入。
改用BaseFont.IDENTITY_H:
BaseFont font = BaseFont.CreateFont(@"C:\Windows\Fonts\simkai.ttf", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);
Font ftChinese = new Font(BaseFont.CreateFont(
"C:\\WINDOWS\\FONTS\\STSONG.TTF",
BaseFont.IDENTITY_H,
BaseFont.NOT_EMBEDDED)
//最小高度,像素转换为PDF 磅可能很小,设置固定高度时造.
iText生成pdf解决中文不显示字库,pdf凉字不显示,由于生成iText插件生成pdf的时候中文会显示不出来,遇到过的是"凉"字,查到是字体库的原因,网上下载字体库msyh.ttc,生成的时候指定字体库,就可以解决了,小bug一枚。注意有个bug,获取字库路径时,需要加个,0
PdfFont bfChinese =
PdfFontFactory.createFont(path+"msyh.ttc,0", PdfEncodings.IDENTITY_H,true);
使用iTextSharp的XMLWorker来解析带html标签的文字
修改iTextSharp\iTextSharp\textFontFactoryImp.cs中的public virtual int RegisterDirectories()方法使其扫描自己所需要的中文字体
int count = 0;
java中生成pdf文件需要用到java文件:iText 5.0.6.jar文件
只下载iText5.0.6.jar文件是不能写入中文到pdf文件,同时需要iTextAsian.jar
但是我们在使用这2个jar文件的时候仍然发现一个问题,只能设置windos自带的文字库才能把中文写入:
例子:BaseFont baseFont = BaseFont.createFont("