WPF と XAML に親和性があるのなら GDI と EMF のように XAML (XPS) 再生できるだろうと思って、ウェブで情報を漁りながらコンソールアプリを作ってみました。初めての C# にドキドキしますね。
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.IO; using System.Windows.Documents; using System.Windows.Xps.Packaging; using System.Windows.Media; using System.Windows.Media.Imaging; namespace xps { public class Program { [STAThread] static public void Main(string[] args) { string path = args[0]; double dpi = 600; using (XpsDocument doc = new XpsDocument(path, FileAccess.Read)) { FixedDocumentSequence seq = doc.GetFixedDocumentSequence(); DocumentPaginator pgn = seq.DocumentPaginator; for (int i = 0; i < pgn.PageCount; i++) { DocumentPage page = pgn.GetPage(i); RenderTargetBitmap target = new RenderTargetBitmap( (int)(page.ContentBox.Width * dpi / 96.0), (int)(page.ContentBox.Height * dpi / 96.0), dpi, dpi, PixelFormats.Pbgra32); target.Render(page.Visual); PngBitmapEncoder encoder = new PngBitmapEncoder(); encoder.Frames.Add(BitmapFrame.Create(target)); using (FileStream stream = new FileStream(path + ".Page" + i + ".png", FileMode.Create, FileAccess.Write)) { encoder.Save(stream); stream.Close(); } } } } } }
案外、すんなり書けました。アンチェリもかかりますし、べんりべんり。