- public void printit () {
- print("load_finsihed\n");
-
- if (this.print_started) {
- print("load_finsihed - already printing..%d %s\n", this.load_try, this.el.uri);
-
-
-
-
- return;
- }
-
-
- this.print_started = true; // flag to stop double call.
-
-
- // inject any javascript if needed..
- if (webkitpdf.opt_inject_js != null) {
-
- print("injecting javascript files \n");
- foreach(var inject_js in webkitpdf.opt_inject_js) {
- print("inject? %s\n", inject_js);
- string str;
- try {
- FileUtils.get_contents( inject_js, out str);
- } catch(FileError e) {
- print("Failed to inject %s\n", inject_js);
- continue;
- }
- #if GTK3
- GLib.MainLoop mainloop = new GLib.MainLoop();
- this.el.run_javascript.begin(str, null, (obj,res) => {
- mainloop.quit();
- });
- mainloop.run();
-
- #else
- this.el.execute_script(str);
- #endif
- }
- }
-
- print("calling print in %d seconds\n", (int)webkitpdf.opt_delay);
- if (webkitpdf.opt_target_pdf != null) {
- GLib.Timeout.add_seconds(webkitpdf.opt_delay, () => {
- print("delay done URL: %s\n", this.el.uri);
-
-
- this.printpdf();
- return false;
- }, GLib.Priority.DEFAULT);
- return;
- }
-
-
- #if GTK3
- print("PNG not supported in webkit2\n");
- return;
- #else
-
- GLib.Timeout.add_seconds(webkitpdf.opt_delay, () => {
-
-
- // ----------------- JPEG
- // resize the window...
- // window.document.documentElement.scrollHeight
- var scroll_height = (int) _this.view.el.get_dom_document().document_element.scroll_height;
- print("Scroll height %d\n", scroll_height);
- if (scroll_height> 1024 || webkitpdf.opt_width > 0 || webkitpdf.opt_height > 0 ) {
- var w = webkitpdf.opt_width > 0 ? webkitpdf.opt_width : 1200;
- var h = int.min(scroll_height, 6000);
- _this.scrolled_window.el.set_size_request( w, h);
- _this.el.resize (w+50, h+50);
- print("Resize to %d, %d\n", w,h);
- GLib.Timeout.add_seconds(webkitpdf.opt_delay > 0 ? webkitpdf.opt_delay : 1 , () => {
- this.printpng();
- return false;
- }, GLib.Priority.DEFAULT);
- return false;
- }
- this.printpng();
- return false;
- }, GLib.Priority.DEFAULT);
-
-
- #endif
-
- }
- public bool printpdf () {
-
-
-
- var list = Gtk.PaperSize.get_paper_sizes(false);
- var psetup = new Gtk.PageSetup();
- for(var i = 0; i < list.length(); i++ ) {
- var entry = list.nth_data(i).copy();
- if (entry.get_name() == "iso_a2") {
- psetup.set_paper_size(entry);
- }
- }
-
-
- #if GTK3
-
- var pe = new WebKit.PrintOperation(this.el);
- pe.set_page_setup(psetup);
- pe.finished.connect( () => {
- print("print completed\n");
- this.delete_cookiefile();
- Gtk.main_quit();
-
- });
-
- var ps = new Gtk.PrintSettings();
- ps.set_printer("Print to File");
- ps.set("output-file-format", "pdf");
- ps.set("output-uri", "file://" + webkitpdf.opt_target_pdf);
-
-
- pe.set_print_settings(ps);
-
-
- pe.print();
-
-
- #else
- var pe = new Gtk.PrintOperation();
- pe.export_filename = webkitpdf.opt_target_pdf;
- print("got callback for print\n");
- pe.ref();
- /*pe.failed.connect(() => {
- print("print failed\n");
- Gtk.main_quit();
-
- })
- */;
- pe.done.connect(() => {
- print("print completed\n");
- this.delete_cookiefile();
- Gtk.main_quit();
-
- });
-
- //pe.run_dialog(_this.el);
-
-
-
-
-
- pe.set_default_page_setup(psetup);
- print("Calling Print?\n");
- //pe.run_dialog(_this.el);
-
-
-
-
-
- try {
- this.el.get_main_frame().print_full(pe,Gtk.PrintOperationAction.EXPORT);
- } catch (Error e) {
- // print failed...
- }
- #endif
-
-
- return false;
- }
- public void printpng () {
- //var filename = "/tmp/test.pdf";
- //print("load_changed %d ?= %d\n", le, LoadEvent.FINISHED);
-
- //if (le != LoadEvent.FINISHED) {
- // return;
- // }
-
- // what size is the documet.
-
- print("making screenshot\n");
- #if GTK3
-
- #else
- // fix vapi - get_snapshot add '?' to all null.
- var pixmap = _this.view.el.get_snapshot( null );
-
-
-
- int w,h;
-
- // add out to gdkpixmap.get_size
- pixmap.get_size( out w , out h);
- var pixbuf = Gdk.pixbuf_get_from_drawable(null, pixmap, null , 0, 0, 0, 0, w, h);
- print("pixbuf size: %d x %d\n ", w,h);
-
-
-
- pixbuf.save(webkitpdf.opt_target_png, "png");
- print("Saved to %s\n", webkitpdf.opt_target_png);
- //view.get_snapshot.begin(WebKit.SnapshotRegion.FULL_DOCUMENT, WebKit.SnapshotOptions.NONE, null, (obj, res) => {
- // var sf = view.get_snapshot.end(res);
-
- // sf.write_to_png(Browser.opt_target_png);
- //});
- this.delete_cookiefile();
- Gtk.main_quit();
-
- #endif
-
-
-
- }
- public void delete_cookiefile () {
- if(this.cookie_file.length < 1 ){
- return;
- }
- print("deleting tmp file %s\n",this.cookie_file);
- File file = File.new_for_path (this.cookie_file);
- try {
- if (file.query_exists () == true) {
- file.delete ();
- }
- } catch (Error e) {
- stdout.printf ("Error: %s\n", e.message);
- }
-
- }