PDFSharpの紹介 〜PDFの作成・編集〜

PDFSharp」という.net用のPDF編集ライブラリがある。
このライブラリは、PDFを新規に作成することはもちろん、既に存在しているPDFを編集することが可能である。また(ここが前まで不明だったのだが)色数が限られたBitmapをPDFに書き込んで保存したところ、ちゃんと圧縮されて書き込まれる!なので文書をスキャナーで読み込んで、その画像を一気にPDFにまとめるということもプログラムを書けば可能であり、サイズも圧縮されるというすばらしい事ができる!

すこしサンプルコードを書こう。ちなみに以下のコードを使うにはPdfSharp.dllさえ参照してあればよい。

PDFのLockを外す

この使い方は良いのか悪いのか分からないが、閲覧用のパスワードさえ知っていれば暗号を解除することができる。(編集用のパスワードは知らなくて良い!)基本となるソースを載せる。

string OriginalPath = "Original.pdf";
string Password = "Password";
string SavePath = "Cracked.pdf";

using (PdfDocument Crack = new PdfDocument())
{
    using (var Original = PdfReader.Open(OriginalPath, Password, PdfDocumentOpenMode.Import))
    {
        foreach (PdfPage page in Original.Pages)
        {
                Crack.Pages.Add(page);
        }
    }
    Crack.Save(SavePath):
}

とても簡単である(笑)

画像をPDFにまとめる

以下のコードで画像をPDFにまとめることができる。

string SavePath = "ImageTest.pdf";
string[] ImagePaths = { "無題.bmp" };

using (PdfDocument Document = new PdfDocument())
{
    foreach (string ImagePath in ImagePaths)
    {
        PdfPage page = Document.AddPage();
        using (XImage image = XImage.FromFile(ImagePath))
        {
            page.Width = image.PointWidth;
            page.Height = image.PointHeight;
            using (XGraphics gfx = XGraphics.FromPdfPage(page))
            {
                gfx.DrawImage(image, 0, 0);
            }
        }
    }
    Document.Save(SavePath);
}
Process.Start(SavePath);

ImagePathsにはPDFにまとめたい画像へのアドレスを配列として記憶しておく。
DrawImageは標準のImageクラスの読み込みも対応してるようなので、この作業に入る前に画像をモノクロ化しておき、DrawImageをすれば自動でモノクロ化&PDF化をできてしまうね。