Re: Gtk2 Printing and HTML
- From: zentara <zzmiloschxx gmail com>
- To: gtk-perl-list gnome org
- Subject: Re: Gtk2 Printing and HTML
- Date: Fri, 6 Aug 2010 13:40:03 -0400
On Fri, 6 Aug 2010 16:50:20 +1000
Nyall <nyall 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' => \¬ify_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__
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]