On Fri, 6 Aug 2010 16:50:20 +1000
Nyall ny...@zombiepigs.net wrote:
On the topic of printing using perl and gtk2, I'm wondering if anyone
has any tips or suggestions on how to print a html page? Are there any
good modules for rendering html to a cairo surface? I've done a bit of
searching on this in the past, and ran across a few command-line tools
for converting html to pdf, which could then be loaded into the
program -- but I'm really hoping for something a bit more elegant than
this.
Hi, been away for awhile, but recently I used Gtk2::Webkit with success.
It will allow you to display a web page in a native Gtk2 window, which you then
could save with the normal window-to-pixbuf code.
This is a crude example, but it does show how to detect full loading of each
url.
good luck, :-)
zentara
#!/usr/bin/perl
use strict;
use warnings;
use Glib qw/TRUE FALSE/;
use Gtk2 -init;
use Gtk2::WebKit;
my $url = shift || 'http://www.youtube.com/watch?v=9HIybxmMerA';
my $win = Gtk2::Window-new;
$win-set_default_size(800, 600);
$win-signal_connect(destroy = sub { Gtk2-main_quit });
my $view = Gtk2::WebKit::WebView-new;
$view-signal_connect( 'notify::progress' = \notify_progress, undef );
$view-signal_connect( 'load_finished' = \load_finished, undef );
my $sw = Gtk2::ScrolledWindow-new;
$sw-add($view);
my $vbox = Gtk2::VBox-new( FALSE, 6 );
$vbox-set_size_request(0,0);
$win-add($vbox);
$vbox-set_border_width(2);
$vbox-pack_start( $sw,TRUE, TRUE, 0 );
$vbox-pack_start (Gtk2::HSeparator-new, FALSE, FALSE, 0);
my $button = Gtk2::Button-new_from_stock('gtk-quit');
$vbox-pack_start( $button, FALSE, FALSE, 0 );
$button-signal_connect( clicked = \delete_event );
my $button1 = Gtk2::Button-new_from_stock('Screenshot');
$vbox-pack_start( $button1, FALSE, FALSE, 0 );
$button1-signal_connect( clicked = \screenshot );
$win-show_all;
$view-open($url );
Gtk2-main;
sub notify_progress{
my $load_progress = $view-get('progress');
print $load_progress\n;
}
sub load_finished{
print load complete\n;
# screenshot(); # do auto screenshot on full load
return 0;
}
#
sub delete_event {
Gtk2-main_quit;
return FALSE;
}
#
sub screenshot{
#we are going to save the $view
my ($width, $height) = $view-window-get_size;
# create blank pixbuf to hold the image
my $gdkpixbuf = Gtk2::Gdk::Pixbuf-new ('rgb',
0,
8,
$width,
$height);
$gdkpixbuf-get_from_drawable ($view-window,
undef, 0, 0, 0, 0, $width, $height);
#only jpeg and png is supported it's 'jpeg', not 'jpg'
$gdkpixbuf-save ($0.jpg, 'jpeg', quality = 100);
print screenshot\n;
return FALSE;
}
#$pixbuf-save ($filename, 'jpeg', quality = '100');
# Currently only a few parameters exist. JPEG images can be saved
# with a quality parameter; its value should be in the range
# [0,100]. Text chunks can be attached to PNG images by specifying
# parameters of the form tEXt::key, where key is an ASCII string of
# length 1-79. The values are UTF-8 encoded strings.
__END__
___
gtk-perl-list mailing list
gtk-perl-list@gnome.org
http://mail.gnome.org/mailman/listinfo/gtk-perl-list