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化をできてしまうね。