【C#】PNG画像をPDFに変換するWindowsアプリを作成してみた【iTextSharp】

目次

経緯

C#を使って、PNG形式の画像ファイルをPDF形式に変換したいと考え、
今回、簡単なWindowsフォームアプリを作成してみました。

変換処理には、PDF作成ライブラリの「iTextSharp」を使用しています。
この記事では、実際の実装手順から、使用したコードまでを丁寧に解説いたします。


使用するライブラリ:iTextSharp

まず、**NuGetパッケージマネージャーで「iTextSharp」**をインストールしてください。

Install-Package iTextSharp

PDFへの画像挿入や書き出しが非常に簡単に行える便利なライブラリです。


WindowsフォームアプリのUI構成

以下のような構成でフォームを作成します。

  • テキストボックス(textBox1)
    → PNGファイルをドラッグ&ドロップするために使用します。
  • 作成ボタン(button1)
    → クリックするとPDFを作成します。
  • 削除ボタン(button2)
    → テキストボックスの内容をクリアします。

フォームデザインはシンプルですが、ファイルの選択・PDFの保存・処理完了まで直感的に行える構成です。


実装コード(C#)

以下が、PNGファイルをPDFに変換する完全なコードです。

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

namespace pngをpdfにする
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            textBox1.AllowDrop = true;
            textBox1.DragEnter += new DragEventHandler(textBox1_DragEnter);
            textBox1.DragDrop += new DragEventHandler(textBox1_DragDrop);
        }

        private void button1_Click(object sender, EventArgs e)
        {
            string pngFilePath = textBox1.Text;

            if (File.Exists(pngFilePath))
            {
                SaveFileDialog saveFileDialog = new SaveFileDialog();
                saveFileDialog.Filter = "PDF files (*.pdf)|*.pdf";
                saveFileDialog.Title = "PDFに保存";
                saveFileDialog.FileName = "output";

                if (saveFileDialog.ShowDialog() == DialogResult.OK)
                {
                    string pdfFilePath = saveFileDialog.FileName;

                    Document doc = new Document();
                    PdfWriter.GetInstance(doc, new FileStream(pdfFilePath, FileMode.Create));
                    doc.Open();
                    iTextSharp.text.Image png = iTextSharp.text.Image.GetInstance(pngFilePath);

                    png.ScaleToFit(doc.PageSize.Width - 50, doc.PageSize.Height - 50);
                    png.SetAbsolutePosition(25, doc.PageSize.Height - png.ScaledHeight - 25);
                    doc.Add(png);
                    doc.Close();

                    MessageBox.Show("PDFが作成されました。");
                }
            }
            else
            {
                MessageBox.Show("指定されたPNGファイルが存在しません。");
            }
        }

        private void textBox1_DragEnter(object sender, DragEventArgs e)
        {
            if (e.Data.GetDataPresent(DataFormats.FileDrop))
                e.Effect = DragDropEffects.Copy;
            else
                e.Effect = DragDropEffects.None;
        }

        private void textBox1_DragDrop(object sender, DragEventArgs e)
        {
            string[] files = (string[])e.Data.GetData(DataFormats.FileDrop, false);
            if (files.Length > 0)
            {
                textBox1.Text = files[0];
            }
        }

        private void button2_Click(object sender, EventArgs e)
        {
            textBox1.Clear();
        }
    }
}

使い方の流れ

  1. フォームを起動
  2. PNGファイルをテキストボックスにドラッグ&ドロップ
  3. 「作成」ボタンをクリック
  4. 保存先とファイル名を指定して「保存」
  5. 完了メッセージが表示され、PDFが出力されます

まとめ

今回は、C#とiTextSharpを使ってPNGをPDFに変換するWindowsフォームアプリを作成しました。
画像の位置調整やスケーリングも対応しており、使い勝手の良い変換アプリになります。

ドラッグ&ドロップ対応で操作も簡単なので、日常業務での画像PDF化などにも活用できると思います。

最後までお読みいただき、ありがとうございました。

技術書の購入コストを抑えてスキルアップするなら

ここまで読んでいただきありがとうございます。最後に宣伝をさせてください。

プログラミングの技術書や参考書は、1冊3,000円〜5,000円するものも多く、出費がかさみがちです。Kindle Unlimitedであれば、月額980円で500万冊以上の書籍が読み放題となります。

気になる言語の入門書から、アルゴリズム、基本設計の専門書まで、手元のスマホやPCですぐに参照可能です。現在は「30日間の無料体験」や、対象者限定の「3か月499円プラン」なども実施されています。まずはご自身のアカウントでどのようなオファーが表示されるか確認してみてください。

[Kindle Unlimited 読み放題プランをチェックする]

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

私が勉強したこと、実践したこと、してることを書いているブログです。
主に資産運用について書いていたのですが、
最近はプログラミングに興味があるので、今はそればっかりです。

目次