【.NET/C#】QRコード付きのPDFファイルを作る【PdfSharp/QRCoder】

ネコニウム研究所

PCを利用したモノづくりに関連する情報や超個人的なナレッジを掲載するブログ

【.NET/C#】QRコード付きのPDFファイルを作る【PdfSharp/QRCoder】

2024-8-2 |

.NETでQRコード付きのPDFファイルを作りたい!

概要

今回の記事では、.NETでPdfSharpとQRCoderを使ってQRコード付きのPDFファイルを作る手順を掲載する。

仕様書

環境

  • NET 8.0
  • PdfSharp 6.1.1
  • QRCoder 1.6.0

手順書

NuGetパッケージマネージャーなどからPdfSharpQRCoderをインストールする。

Install-Package PdfSharp
Install-Package QRCoder

当ブログのURL(https://blog.nekonium.com)のQRコードを作ってPDFファイルに描写する例。

using PdfSharp.Drawing;
using PdfSharp.Pdf;
using QRCoder;
using System.Runtime.InteropServices;

namespace tests
{
    internal class Program
    {
        static public void ExportPDF2()
        {
            using (var pdf = new PdfDocument())
            {
                PdfPage page = pdf.AddPage();
                page.Size = PdfSharp.PageSize.A4;
                page.Orientation = PdfSharp.PageOrientation.Portrait;

                var gfx = XGraphics.FromPdfPage(page);

                string qrText = "https://blog.nekonium.com";
                var qrGenerator = new QRCodeGenerator();
                var qrData = qrGenerator.CreateQrCode(qrText, QRCodeGenerator.ECCLevel.Q);
                var qrCode = new BitmapByteQRCode(qrData);
                byte[] qrCodeBytes = qrCode.GetGraphic(32);
                string tempFilePath = Path.GetTempFileName();
                File.WriteAllBytes("qr.bmp", qrCodeBytes);

                double offset = 32;
                double qrWidth = page.Width.Value - (offset * 2);

                using (XImage qrImage = XImage.FromFile("qr.bmp"))
                {
                    gfx.DrawImage(qrImage, offset, offset, qrWidth, qrWidth);
                }

                pdf.Save("test2.pdf");
            }
        }

        static void Main(string[] args)
        {
            ExportPDF2();
        }
    }
}

QRコードの描写については下記の記事を参照。

QRコードの画像ファイルなんだけども、pngファイルだとPDFに書き込めなかったので、bmpファイルで保存した。

文字列の描写はページに対応したXGraphicsのメソッドDrawImageを使う。

using (XImage qrImage = XImage.FromFile("qr.bmp"))
{
    gfx.DrawImage(
        qrImage, // 描写する画像
        32, // 描写する画像のX座標
        32, // Y座標
        256, // 幅
        256 // 高さ
    );
}

まとめ(感想文)

これで画像ファイルPDFに埋め込めるようになったのでだいたいPDFで描写できるようになった。