web-dev-qa-db-ja.com

itextsharpを使用してUTF-8文字をPDFファイルに書き込む方法

私はグーグルでたくさん試しましたが、見つけることができません。

どんな助けでもありがたいです。

以下のコードを見つけてください:-

protected void Page_Load(object sender, EventArgs e)
    {
        StreamReader read = new StreamReader(@"D:\queryUnicode.txt", Encoding.Unicode);
        string str = read.ReadToEnd();

        Paragraph para = new Paragraph(str);

        FileStream file = new FileStream(@"D:\Query.pdf",FileMode.Create);

        Document pdfDoc = new Document();
        PdfWriter writer = PdfWriter.GetInstance(pdfDoc, file );

        pdfDoc.Open();
        pdfDoc.Add(para);
        pdfDoc.Close();

        Response.Write("Pdf file generated");
    }
17
teenup

HTMLをPDFに変換していますか?もしそうなら、あなたはそれに注意する必要があります、そうでなければ気にしないでください。私が尋ねる唯一の理由は、æを取得することについてのあなたの最後のコメントが私にそれを考えさせることです。もしそうなら、この投稿をチェックしてください: iTextSharp 5 polish character

また、人々が「Unicode」と言うとき、彼らが実際にやろうとしていることは、WingdingsなどのシンボルをPDFに取り込むことです。もしそうなら、この投稿をチェックして、UnicodeとWingding Symbolsがまったく関係がないことを知ってください。 iTextSharpのUnicodeシンボル

これは、文字自体を使用する方法とC#エスケープシーケンスを使用する方法の2つを使用してUnicode文字を書き込む完全な実用例です。ワイド文字をサポートする形式でファイルを保存してください。このサンプルでは、​​iTextSharp 5.0.5を使用しています。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using iTextSharp.text;
using iTextSharp.text.pdf;
using System.IO;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            //Create our document object
            Document Doc = new Document(PageSize.LETTER);

            //Create our file stream
            using (FileStream fs = new FileStream(Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Desktop), "Test.pdf"), FileMode.Create, FileAccess.Write, FileShare.Read))
            {
                //Bind PDF writer to document and stream
                PdfWriter writer = PdfWriter.GetInstance(Doc, fs);

                //Open document for writing
                Doc.Open();

                //Add a page
                Doc.NewPage();

                //Full path to the Unicode Arial file
                string ARIALUNI_TFF = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Fonts), "ARIALUNI.TTF");

                //Create a base font object making sure to specify IDENTITY-H
                BaseFont bf = BaseFont.CreateFont(ARIALUNI_TFF, BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);

                //Create a specific font object
                Font f = new Font(bf, 12, Font.NORMAL);

                //Write some text, the last character is 0x0278 - LATIN SMALL LETTER PHI
                Doc.Add(new Phrase("This is a test ɸ", f));

                //Write some more text, the last character is 0x0682 - ARABIC LETTER HAH WITH TWO DOTS VERTICAL ABOVE
                Doc.Add(new Phrase("Hello\u0682", f));

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

ITextSharpを使用する場合は、使用するUnicodeコードポイントをサポートするフォントを使用していることを確認する必要があります。フォントを使用する場合は、IDENTITY-Hも指定する必要があります。私はそれが何を意味するのか完全にはわかりませんが、ここでいくつかの話があります: iTextSharp international text

22
Chris Haas