WJG (02-Nov-09) The poppler libraries [1 ] provide a useful set of tools for displaying Acrobat PDF files. Ok, at the moment it still a set of basic stubs, but the bare bones are now there for gnocl scripters to display PDFs. All that's needed is a little more flesh on the bones, (aka more Gtk+ code in the switch blocks) to get the full implementation up and running -any offers from anyone? For this sample there's no need for a demo script for obvious reasons.
ABU I'm interested in, but I'm not a C (?) programmer. If you are going to develope a pdf-viewer widget, I'd like to have a preview of the tcl-API.
WJG (04-Nov-09) Hi there. Yes, Gnocl is coded in C and there's not much at the moment apart from the basics of getting the widget open and showing a page. There's so much work to do on in this project that advancements are needs driven. This week, for instance, I've added some new switches to the canvas image object. Nothing planned, just necessary for a project I'm working on myself. I can foresee the gnocl::pdfViewer widget growing into a large project, so the best route towards developeing this package is to identify which controls would be in greatest demand. Ok, we can load a document, next step navigating pages.
ABU If I only were interested in displaying a pdf, my choose would be to embed an Acrobat-Reader window in my app; there is a lot of solutions in this wiki... With this solution you can browse all the pages, by program or by embedded acrobat's buttons. BUT there is a big limitation with Acrobat's API: your app cannot 'get the current page number'. The first thing I'd like to see in gnocl::pdfViewer is the ability to get the current page, and the coords (in PDF-Page coords) of the point under the mouse-cursor, I expect that zooming be allowed by progam (get/set zoom).
WJG (06-Nov-09) Page Number. Quickly looking at the Poppler docs, its pretty much the same. I think that you'll find that the expectation is that the application calling the library will keep track of the current page itself. There's no reason not to keep track of the activePage within a gnocl binding itself, after all it is the calling-package. Zoom (scaling) is a standard feature of the api so that's reasonably straightforward; mapping mouse coords to page coords is a little bit more of a challenge but not impossible. Thanks for the feedback. I'll put these at the top of the 'to-do' list.
WJG (06-Nov-09) Had an enjoyable evening's coding and got the bulk of the navigation controls sorted, just have the 'zoom' to sort out and then I'll post the package as it stands to SourceForge. Here's a screenshot to show how it's now running.
RLH That is pretty awesome.