LoginSignup
0
2

More than 1 year has passed since last update.

C#からPDFにキーワードを埋め込みたい

Last updated at Posted at 2021-11-05

PDFにキーワードを埋め込みたいと思ったので、メモ。
ついでに、TitleとAuthorも更新してみた。ソースコードの解説は、見たらわかると思うので特に書かない。

PdfSharp

今回の開発環境はVisual Studio 2019。
[ツール]-[NuGetパッケージマネージャー]-[ソリューションのNuGetパッケージの管理]から、Pdfsharpをインストールする。

using
using PdfSharp.Pdf;
using PdfSharp.Pdf.IO;

上記の宣言をしておいて、あとはこんな書き方か

PdfDocumentOpenMode.Import
private void button1_Click(object sender, EventArgs e)
{
    PdfDocument document = new PdfDocument(); // 保存用の空のPDF
    PdfDocument doc = PdfReader.Open(@"E:\work\sampledata.pdf", PdfDocumentOpenMode.Import);

    document.Info.Title = "sampledata";
    document.Info.Author = "foo";
    document.Info.Keywords = "サンプル sample";

    foreach (PdfPage page in doc.Pages)
    {
        document.AddPage(page);
    }
    doc.Close();
    document.Save(@"E:\work\sampledata2.pdf"); // 保存
    document.Close();
}

こんな書き方(どちらがあるべき姿なのかは知らない)

PdfDocumentOpenMode.Modify
private void button1_Click(object sender, EventArgs e)
{
    using(PdfDocument doc = PdfReader.Open(@"E:\work\sampledata.pdf", PdfDocumentOpenMode.Modify))
    {
        doc.Info.Title = "sampledata";
        doc.Info.Author = "foo";
        doc.Info.Keywords = "サンプル sample";
        doc.Save(@"E:\work\sampledata2.pdf"); // 保存
    }
}

Pdfium

Pdfiumでも試してみた。
同じようにNuGetからPdfiumを検索し、Pdfium.Net.SDKをインストールする。

Pdfium.Net.SDK
using Patagames.Pdf.Net;

private void button1_Click(object sender, EventArgs e)
{
    PdfCommon.Initialize(); // とりあえず初期化
    using (PdfDocument doc = PdfDocument.Load(@"e:\work\sampledata.pdf"))
    {
        doc.Title = "sampledata";
        doc.Author = "foo";
        doc.Keywords = "サンプル sample";
        doc.Save(@"e:\work\sampledata2.pdf", Patagames.Pdf.Enums.SaveFlags.RemoveUnusedObjects); // 保存
    }
}

もちろんどちらも、設定だけでなく参照もできたし、Keywordsに日本語も通った。

ちなみに、Pdfiumは無償で使えそうですが、Pdfium.Net.SDKは有償みたい。
Simple pricing for everyone

0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2