public static void Write(string fileName) { Diagram diagram = Program.Load(fileName); string psName = System.IO.Path.ChangeExtension(fileName, "ps"); if(diagram != null) { try { // It seems the page size cannot be made smaller // using SetSize(), only larger. Start with a // small surface and enlarge it after layout. using(PSSurface pss = new PSSurface(psName, 10, 10)) { using(Context cr = new Context(pss)) { DiagramRenderer dr = new DiagramRenderer(cr, 0, 0, diagram); cr.LineWidth = 1.0; cr.Color = new Color(0.0, 0.0, 0.0); dr.Render(); pss.SetSize(dr.width, dr.height); dr.Draw(); cr.ShowPage(); } } Console.WriteLine("Wrote {0}", psName); } catch { Console.WriteLine("Error writing {0}", psName); } } }