I have a timetable in memory, and need to be able to print it out.
The timetable will likely be many pages, each page will look quite similar:
A grid of cells, across the horizontal axis is time, and along the vertical axis is entities. Cell x, y will contain the allocation of a particular job to entity x at timeslot y.
I’m looking at the System.Drawing.Printing.PrintDocument class but it’s incredibly cumbersome. I need to set an event handler to the PrintDocument.PrintPage, yet there doesn’t appear to be any way to get the page number from the PrintPageEventArgs?
I just want to construct my document and call some Print() function. I suppose if I could get the page number within the event handler, I could construct the page layout on the fly with e.Graphics and GDI.
I could potentially even put together a HTML page using tables and print that – if I could somehow control what prints on what page?
Is there a better way to construct and print documents in C#?
The target machines do have Office installed, but they’re all different versions and I’ve had lots of trouble getting correct versions of the .Net/Office interop library to work with them.
Edit: I could potentially even create a temporary LaTeX file on the fly and compile it, then print it. This seems like a good solution, except that the target machines are locked and the users can’t install new software, hence I would need to bundle the LaTeX compiler with my program, and my compiler is almost 300MB.
Sounds to me like you’re giving up too soon. Handling the PrintPage event isn’t that difficult and since the event is raised sequentially, all you have to do is keep a page counter in that event. That’s how I’ve done it in the past with MetaFile images (printing Reporting Services reports through a web service call).