pngファイルをPDFファイルに変換アプリ【C#】

目次

経緯

C#でpngファイルをPDFファイルに変換したくて、今回Windowsアプリを作ってみました。

「iTextSharp」を使う

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

次にFormを作ります。

”テキストボックス”と”削除”ボタン、”作成”ボタンを用意します。

”テキストボックス”の(name)は”textBox1″

”作成”ボタンの(name)は”button1″

”削除”ボタンの(name)は”button2″

とします。短いコードなので、今回はこんな風ですが、複雑なコードを書くときは(name)はきちんと決めたほうがいいと思います。

以下がコードになります。テキストボックスの中にPDFにしたい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;

            // PNGが存在するか確認
            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)
                {
                    // 出力するPDFのファイル名
                    string pdfFilePath = saveFileDialog.FileName;

                    // iTextSharpオブジェクトを作成
                    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);

                    // PDFに画像を追加
                    doc.Add(png);

                    // PDF文書を閉じる
                    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();  // テキストボックスの内容をクリア

        }
    }
}

こんな感じです。

何かの参考になれば、幸いです。

ここまで読んでいただきありがとうございました。

スクールの紹介

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

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

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

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

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

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

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

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

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

この記事を書いた人

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

目次