使用itextSharp在pdf中显示特殊字符

时间:2011-03-18 06:27:35

标签: c# itextsharp

如何显示'&'等字符在pdf中。我使用itextsharp来创建pdf。 请帮忙。

1 个答案:

答案 0 :(得分:0)

你需要给我们更多的工作。 “没有工作”是什么意思。是显示其他内容还是角色没有出现?您是在解析HTML还是仅使用常规PhraseParagraph类?下面是一个完整的示例,它使用常规的iTextSharp类以及HTMLWorker来显示&符号。这三个对我来说都很好:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

using iTextSharp.text;
using iTextSharp.text.pdf;
using System.IO;

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            //Create a new document
            iTextSharp.text.Document Doc = new iTextSharp.text.Document(PageSize.LETTER);

            //Write it to a memory stream
            using (FileStream FS = new FileStream(Path.Combine(System.Environment.GetFolderPath(System.Environment.SpecialFolder.Desktop), "Output.pdf"), FileMode.Create, FileAccess.Write, FileShare.Read))
            {
                object writer = PdfWriter.GetInstance(Doc, FS);

                //Open the PDF for writing
                Doc.Open();

                //Insert a page
                Doc.NewPage();

                //Add a phrase with an ampersand
                Doc.Add(new Phrase("Hello & Goodbye"));

                //Create some HTML with an escaped and also unescaped ampersand
                string Html = "<html><head><title></title></head><body><p>This is an escaped ampersand : &amp;</p><p>And this is a non-escaped ampersand : &</body></html";

                //Read the HTML in a StringRead
                using (StringReader SR = new StringReader(Html))
                {
                    //Grab the elements
                    List<IElement> elements = iTextSharp.text.html.simpleparser.HTMLWorker.ParseToList(SR, null);

                    //Loop through them
                    for (int i = 0; i < elements.Count; i++)
                    {
                        //Add them to the document
                        Doc.Add(elements[i]);
                    }
                }

                //Close the PDF
                Doc.Close();
            }
            this.Close();
        }
    }
}