-// valac --thread webkitpdf.vala BrowserWindow.vala --pkg glib-2.0 --pkg webkit-1.0 --pkg gtk+-2.0 -o /usr/bin/webkitpdf --target-glib=2.32
-
+/*
+ sudo valac --vapidir=. --thread webkitpdf.vala BrowserWindow.vala --vapidir=./vapi \
+ --pkg glib-2.0 --pkg webkit-1.0 --pkg gtk+-2.0 -o /usr/bin/webkitpdf --target-glib=2.32
+
+ sudo valac -D GTK3 --vapidir=. --thread webkitpdf.vala BrowserWindow.vala --vapidir=./vapi \
+ --pkg glib-2.0 --pkg webkit2gtk-4.0 --pkg gtk+-3.0 --pkg gio-2.0 -o /usr/bin/webkitpdf2 --target-glib=2.32
+
+
+
+*/
public class webkitpdf {
public static string? opt_url = null;
public static uint opt_delay = 0;
+ public static int opt_width = 0;
+ public static int opt_height = 0;
public static string? opt_target_png = null;
public static string? opt_target_pdf = null;
- public static string[]? opt_inject_js = null;
+ [CCode (array_length = false, array_null_terminated = true)]
+ public static string[] opt_inject_js;
+ public static string? opt_cookies = null;
+
const OptionEntry[] options = {
-
+ { "width", 0, 0, OptionArg.INT, ref opt_width, "Width (default 1200)", null },
+ { "height", 0, 0, OptionArg.INT, ref opt_height, "Height (PNG only) (default to expand to fit)", null },
{ "url", 0, 0, OptionArg.STRING, ref opt_url, "Url to grab", null },
{ "delay", 0, 0, OptionArg.INT, ref opt_delay, "Delay before snapshot in seconds", null },
{ "png", 0, 0, OptionArg.STRING, ref opt_target_png, "File to write (PNG)", null },
{ "inject", 0, 0, OptionArg.STRING_ARRAY, ref opt_inject_js, "Inject Javascript file(s)", null },
{ "pdf", 0, 0, OptionArg.STRING, ref opt_target_pdf, "File to write (PDF)", null },
+ { "cookies", 0, 0, OptionArg.STRING, ref opt_cookies, "Inject Cookie string", null },
{ null }
- };
+ };
public static int main(string[] args)
{
Gtk.init(ref args);
-
+
+
+#if GTK3
+ // this is a horrific hack from https://bugs.webkit.org/show_bug.cgi?id=128674
+ Environment.unset_variable("GNOME_DESKTOP_SESSION_ID");
+ Environment.unset_variable("DESKTOP_SESSION");
+ // it should now fallb ack to http prox!?
+
+
+#else
unowned string proxy = Environment.get_variable ("http_proxy");
if (proxy != null && proxy.length > 0) {
var sess = WebKit.get_default_session();
sess.proxy_uri = new Soup.URI(proxy);
}
-
+#endif
var opt_context = new OptionContext ("webkitpdf");
-
+
try {
opt_context.set_help_enabled (true);
throw new OptionError.BAD_VALUE("missing pdf or png filename");
}
- if (webkitpdf.opt_target_pdf != null) {
- print("got pdf\n");
- }
- if (webkitpdf.opt_target_png != null) {
- print("got png\n");
- }
- if ((webkitpdf.opt_target_pdf == null) && (webkitpdf.opt_target_png != null)) {
- throw new OptionError.BAD_VALUE("missing pdf file path");
- }
- print("got here?\n");
+
+ stdout.printf ( """Width: %d
+ Height: %d
+ URL: %s
+ Delay: %d
+ png: %s
+ inject: %s
+ PDF: %s
+ Cookie: %s
+ """,
+ opt_width,
+ opt_height,
+ opt_url,
+ (int) opt_delay,
+ opt_target_png == null ? "--empty--" : opt_target_png,
+ opt_inject_js.length < 1? "--empty--" : string.joinv(", ", opt_inject_js),
+ opt_target_pdf == null ? "--empty--" : opt_target_pdf,
+ opt_cookies == null ? "--empty--" : opt_cookies
+
+
+ );
+
+
} catch (OptionError e) {
stdout.printf ("error: %s\n", e.message);
stdout.printf ("Run '%s --help' to see a full list of available command line options.\n %s",
var browser = new BrowserWindow();
browser.el.show_all();
+ /*
+ var ses = WebKit.get_default_session();
+ ses.request_queued.connect((msg) => {
+ print("queued request %s\n", msg.uri.to_string(false));
+ msg.got_headers.connect(() => {
+ print("got conent type %s\n", msg.response_headers.get_content_type (null));
+ if (msg.response_headers.get_content_type (null) == "image/jpeg") {
+ ses.cancel_message(msg,Soup.KnownStatusCode.CANCELLED);
+ }
+ });
+ });
+ */
Gtk.main();
}
+
\ No newline at end of file