PDF-WebKit

 view release on metacpan or  search on metacpan

lib/PDF/WebKit.pm  view on Meta::CPAN

  $self->_append_stylesheets;
  my @args = $self->command($path);

  my $input = $self->source->is_html ? $self->source->content : undef;
  my $output;

  my %opt = map +( "binmode_std$_" => ":raw" ), "in", "out", "err";
  run3 \@args, \$input, \$output, \my $err, \%opt;

  if ($path) {
    $output = do { local (@ARGV,$/) = ($path); <> };
  }

  if (not (defined($output) && length($output))) {
    Carp::croak "command failed: $args[0]";
  }
  return $output;
}

sub to_file {
  my $self = shift;

lib/PDF/WebKit.pm  view on Meta::CPAN

    my $name = $node->getAttribute('name');
    next unless ($name && ($name =~ s{^\Q$prefix}{}s));
    $meta{$name} = $node->getAttribute('content');
  }

  return %meta;
}

sub _style_tag_for {
  my ($self,$stylesheet) = @_;
  my $styles = do { local (@ARGV,$/) = ($stylesheet); <> };
  return "<style>$styles</style>";
}

sub _append_stylesheets {
  my $self = shift;
  if (@{ $self->stylesheets } && !$self->source->is_html) {
    Carp::croak "stylesheets may only be added to an HTML source";
  }
  return unless $self->source->is_html;

t/pdf-webkit-integration.t  view on Meta::CPAN

      my $pdfkit = PDF::WebKit->new(\'html', header_spacing => 1);
      my $pdf = $pdfkit->to_pdf;
      is(substr($pdf,0,4), '%PDF'); # PDF Signature at beginning of file
    };

    it "should have the stylesheet added to the head if it has one" => sub {
      my $pdfkit = PDF::WebKit->new(\"<html><head></head><body>Hai!</body></html>");
      my $stylesheet = File::Spec->catfile($SPEC_ROOT,'fixtures','example.css');
      push @{ $pdfkit->stylesheets }, $stylesheet;
      $pdfkit->to_pdf;
      my $css = do { local (@ARGV,$/) = ($stylesheet); <> };
      like($pdfkit->source->content, qr{<style>\Q$css\E</style>});
    };

    it "should prepend style tags if the HTML doesn't have a head tag" => sub {
      my $pdfkit = PDF::WebKit->new(\"<html><body>Hai!</body></html>");
      my $stylesheet = File::Spec->catfile($SPEC_ROOT,'fixtures','example.css');
      push @{ $pdfkit->stylesheets }, $stylesheet;
      $pdfkit->to_pdf;
      my $css = do { local (@ARGV,$/) = ($stylesheet); <> };
      like($pdfkit->source->content, qr{<style>\Q$css\E</style><html>});
    };

    it "should throw an error if the source is not html and stylesheets have been added" => sub {
      my $pdfkit = PDF::WebKit->new('http://google.com');
      my $stylesheet = File::Spec->catfile($SPEC_ROOT,'fixtures','example.css');
      push @{ $pdfkit->stylesheets }, $stylesheet;
      eval { $pdfkit->to_pdf };
      like($@, qr/stylesheet.*html/i);
    };



( run in 0.563 second using v1.01-cache-2.11-cpan-a9ef4e587e4 )