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