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

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

副業から独立まで「稼げる」Webスキルを習得する(PR)

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

「副業を始めたいが、何から手をつければいいかわからない」「独学でスキルはついたが、収益化できていない」という悩みを持つ方には、マンツーマン指導のWebスクール**「メイカラ」**が適しています。

このスクールは、単に技術を教えるだけでなく、**「副業として具体的にどう稼ぐか」**という実務直結のノウハウ提供に特化している点が特徴です。

講師陣は、実際に「副業Webライターから1年で独立して月収100万円」を達成したプロや、現役で利益を出し続けているブロガーなど、確かな実績を持つプレイヤーのみで構成されています。そのため、机上の空論ではない、現場で通用する戦術を学ぶことができます。

副業に特化した強み

  • 最短ルートの提示: 未経験からでも実績を出せるよう、マンツーマンで指導。
  • AI活用の習得: 副業の時間対効果を最大化するための、正しいAI活用スキルも網羅。
  • 案件獲得のチャンス: 運営がWebマーケティング会社であるため、実力次第で社内案件の紹介など、仕事に直結する可能性があります。

受講者の多くは、「在宅でできる仕事を探している」「副業を頑張りたい」という20代・30代・40代が中心です。

受講前には、講師による無料説明が行われます。無理な勧誘はなく、自分に合った副業スタイルやプランを相談できるため、まずは話を聞いてみることから始めてみてはいかがでしょうか。

ブログで稼ぎたいなら「メイカラ」

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

この記事を書いた人

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

目次