4
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

PDFSharpをVS2015で使う

Last updated at Posted at 2019-05-22

久し振りにPDFSharpを使う機会があったので、メモ。

(1)NuGetにあった。

Visual Studio 2015 を使っているのだけど、NuGetで「PDF Sharp」を検索すると、取得できた。

(2)使えるフォントが減っていた。

前は、日本語としては「游明朝」、「游ゴシック」が使えたのだけど、今回「Error while parsing an OpenType font.」エラーが発生して、「游ゴシック」が使えなかった。

それではと思い立って、以下を書いてテストしたところ、日本語フォントは、ぱっと見たところ「游明朝」以外は全滅。
また、「HG丸ゴシックM - PRO」などは、エラーにはならないけど日本語は文字化けで使えず。

c#
        protected void Button1_Command(object sender, CommandEventArgs e)
        {
            using(PdfDocument document = new PdfDocument())
            {
                PdfPage page = document.AddPage();
                page.Size = PageSize.A4; //用紙の大きさ
                page.Orientation = PageOrientation.Landscape; //用紙の向き
                XGraphics graphics = XGraphics.FromPdfPage(page);

                var sb = new StringBuilder();
                System.Drawing.Text.InstalledFontCollection ifc =
                    new System.Drawing.Text.InstalledFontCollection();
                FontFamily[] ffs = ifc.Families;
                foreach(FontFamily ff in ffs)
                {
                    string buf = "";
                    try
                    {
                        using(Font fnt = new Font(ff, 8))
                        {
                            buf = fnt.Name;
                            var pdf_ja_font_options = new XPdfFontOptions(PdfFontEncoding.Unicode, PdfFontEmbedding.Always);
                            var pdf_ja_font = new XFont(buf, 12, XFontStyle.Regular, pdf_ja_font_options);

                            graphics.DrawString("こんにちわ世界", pdf_ja_font, XBrushes.Black,
                            new XRect(0, 0, page.Width, page.Height), XStringFormats.Center);
                        }
                    }
                    catch(Exception ex)
                    {
                        buf += ":" + ex.Message;
                    }
                    sb.AppendFormat("{0}\n", buf);
                }
                string file = @"C:\work\フォント調査.txt";
                using(StreamWriter sw = new StreamWriter(file, true, Encoding.Default))
                {
                    sw.Write(sb.ToString());
                }
            }
        }

IPAexフォントは、明朝、ゴシック共に正しく表示されたっぽいので、これを埋め込むことにする。
https://ja.osdn.net/projects/ipafonts/

Noto Fontsも使えそうなのだけど、埋め込むとPDFのサイズがすごいことになるので
(やり方が悪いのかも知れないのだけれど600倍以上になった)、今回はパス。

使えるフォントがとても限られるので、ちょっと不安。

4
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?