【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化などにも活用できると思います。

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

スクールの紹介

最後に宣伝をさせてください。

夢見るAIエンジニアへ、今こそ一歩を踏み出せ!

最近、AI技術やデータサイエンスに興味を持ち始めたあなた。将来、AIエンジニアやデータサイエンティストとして活躍したいと考えているかもしれません。また、AIを使って業務課題や研究課題を解決したい、あるいは教養としてAIの知識を深めたいと思っている方もいるでしょう。

しかし、学び始めるとなると「どこから手をつけて良いのか分からない」「専門的すぎて理解できない」といった悩みが生じることも。そんなあなたのために、この3ヶ月間集中してAIプログラミングを習得するオンラインコーチングサービスがオススメです!

なぜこのサービスが選ばれるのか?その理由はこちら

  1. 初心者から上級者まで
    完全なプログラミング初心者から研究者まで、幅広い方々に優良なコンテンツが提供されます。
  2. 徹底的な進捗管理
    受講者の進捗をしっかりとチェックし、つまずきやすいポイントでのフォローが万全です。
  3. 専属メンターによる徹底サポート
    AIの学び方から、実際の適用まで、専属のメンターが手厚くサポートします。
  4. 場所を選ばず学べるオンライン完結
    東京以外の地域からも、気軽に学び始めることができます。

信頼の実績多数!
・日本最大級のプログラミングスクール実績
・受講者総数700名以上
・SaaS型学習サービス会員65,000名以上
・企業導入実績120社以上
・グッドデザイン賞受賞
・著名な賞受賞歴や経団連加盟も実現

夢を叶えるための第一歩を、一緒に踏み出しませんか?今なら、あなたもその一員として学び始めることができます!

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

この記事を書いた人

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

目次