解决方案 »

  1.   

    追加说明《非本机字体-即想使用iTextSharp自带的字体库》
      

  2.   

    到下面这个地址下载iTextAsian-all-2.1.zip
    http://sourceforge.net/projects/itextsharp/files/extras/
    然后解开里面的iTextAsian.dll(是2.1版的),拷贝到运行目录下(比如bin/debug)程序中加上下面语句:
    iTextSharp.text.io.StreamUtil.AddToResourceSearch(Assembly.Load("iTextAsian")); // 或者用LoadFile加载,如果文件拷贝到其它目录下的话
    BaseFont baseFont = BaseFont.CreateFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);
    var font = new Font(baseFont, 12);
      

  3.   

    to:jshi123 
    非常感谢您的回复
    按照您的步骤实行完毕,没有问题。
    还想追加问一下,这种方式在PDF中写入内容时可以正确显示中文
    当使用PDF表单,进行填表操作的时候没有办法显示,是不是我写的步骤有问题?
    还望帮忙确认,谢谢
    reader = new PdfReader(sFmtPath);
    PdfStamper stamp = new PdfStamper(reader, new FileStream(OutputPdfName, FileMode.Create));
    AcroFields form = stamper.AcroFields;
    iTextSharp.text.io.StreamUtil.AddToResourceSearch(Assembly.Load("iTextAsian"));
    BaseFont baseFont = BaseFont.CreateFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);
    form.SetFieldProperty("CB_1", "textfont", bf, null);
    form.SetField("CB_1", "中国大连");其实我的主要目地是希望填写完的表单文件大小不要变化太大,
    现在如果我是用Windows自带字体的话,模版150KB,填写一点内容的话,就会变成4M左右
    (NOT_EMBEDDED我也设置了,但是大小没有变化)
    显示的时候就会需要比较长的时间。然后就想转成iTextSharp自带字体,结果自己还搞不定
    还望帮助
      

  4.   

    不好意思  form.SetFieldProperty("CB_1", "textfont", bf, null);中的bf和
    BaseFont baseFont 中的baseFont 是同一个,复制错误
      

  5.   

    加上:
    stamper.AcroFields.AddSubstitutionFont(baseFont);
      

  6.   

    to:jshi123 
    按照您说的,问题解决了,非常感谢, 谢谢您的解答
      

  7.   

      你好,我在使用itextsharp给pdf加水印的时候遇到了一点问题iTextSharp.text.io.StreamUtil.AddToResourceSearch(Assembly.Load("iTextAsian"));         
                   BaseFont bf = BaseFont.CreateFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);我把字体设置成这样,但是水印添加完后,我用Adobe Reader XI打开后,不能正确的显示出添加的中文字体,必须安装相应的扩展字体库文件。我想知道怎样设置字体格式,就可以使用Adobe Reader 自带的字体库,而不用再安装扩展字体库。
    这个是没安装扩展字体库之前的PDF文件字体属性这个是安装扩展字体库属性后的PDF文件字体属性  
      

  8.   

    对了,我安装的Adobe Reader 是英文版的,希望你能给我指导下,谢谢了