0

wkhtmltoimageを使用して、Perl モジュールWKHTMLTOPDFを使用して HTML および Web ページを画像に変換しようとしています。以下のスクリプトとコードはコマンド ラインからは機能しますが、ブラウザからスクリプトを呼び出すと機能しません。

Update:

If I run the script from the shell as a root user, it runs without
error, if I switch to the domain user where the script is located,
I get that error, seems it is executable permissions for domain owner.

エラーは次のとおりです。

error running '/usr/local/bin/wkhtmltoimage': '/usr/local/bin/wkhtmltoimage http://yahoo.com 
/home/xxxx/public_html/pdfwebkit/output.png' died with signal 11, with coredump at 
/usr/local/perl-5.18.1/lib/site_perl/5.18.1/MooseX/Role/Cmd.pm line 128.
MooseX::Role::Cmd::run(WKHTMLTOPDF=HASH(0x2714260), "http://yahoo.com", 
"/home/xxxx/public_html/pdfwebkit/output.png") called at /usr/local/
perl-5.18.1/lib/site_perl/5.18.1/WKHTMLTOPDF.pm line 645 WKHTMLTOPDF::generate(WKHTMLT
OPDF=HASH(0x2714260)) called at htmltoimage.cgi line xxx main::convert_using_WKHTMLTOPDF_image("http://yahoo.com", 
"/home/xxxx/public_html/pdfwebkit/output.png") called at htmltoimage.cgi line xx

私が使用しているコードは次のとおりです。

#!/usr/bin/perl
#!C:\perl\bin\perl.exe
print "Content-type: text/html;charset=utf-8\n\n";
use File::Spec::Functions;
use File::Basename;
BEGIN {
    $|=1;
    use CGI::Carp qw(fatalsToBrowser set_message);
    sub handle_errors {
        #print "Content-type: text/html;charset=utf-8\n\n";
        my $msg = shift;
        print qq!<h1><font color="red">Software Error</font></h1>!;
        print qq!<p>$msg</p>!;
    }
    set_message(\&handle_errors);
}

$|=1;
my ($Script, $Bin);
if ($ENV{SCRIPT_FILENAME}) {
    ($Script, $Bin) = fileparse($ENV{SCRIPT_FILENAME});
}
else {
    ($Script, $Bin) = fileparse(__FILE__);
}

use WKHTMLTOPDF;

    my $outfile = catfile ($Bin, 'output.jpg');
    print "Converting url to image file $outfile...<br>\n";
    convert_using_WKHTMLTOPDF_image('http://yahoo.com', $outfile);
    print "Finished...<br>\n";
    exit;

sub convert_using_WKHTMLTOPDF_image {
    my ($page, $output) = @_;
    my $pdf = new WKHTMLTOPDF;
    my $bin = '/usr/local/bin/wkhtmltoimage';
    #my $bin = 'C:/Program Files/wkhtmltopdf/bin/wkhtmltoimage.exe';
    $pdf->bin_name($bin);
    $pdf->_input_file($page);
    $pdf->_output_file($output);
    #$pdf->grayscale(1);
    $pdf->generate;
}

sub convert_html_to_image_direct {
    my ($page, $output) = @_;
    my $bin = '/usr/local/bin/wkhtmltoimage --quiet ';
    my $out = `$bin $page $output`;
    print "out: $out<br>\n";
    return $out;
}

このコードは、通常のブラウザから Windows で動作します。html を pdf に変換するために wkhtmltopdf を使用しようとすると、同じ問題が発生します。

バイナリをインストールした方法は次のとおりです。

https://gist.github.com/DaRamirezSoto/5489861

# wget http://wkhtmltopdf.googlecode.com/files/wkhtmltoimage-0.11.0_rc1-static-amd64.tar.bz2
# wget http://wkhtmltopdf.googlecode.com/files/wkhtmltopdf-0.11.0_rc1-static-amd64.tar.bz2
# tar xvjf wkhtmltoimage-0.11.0_rc1-static-amd64.tar.bz2
# tar xvjf wkhtmltopdf-0.11.0_rc1-static-amd64.tar.bz2
# chown root:root wkhtmltopdf-amd64
# chown root:root wkhtmltoimage-amd64
# mv wkhtmltopdf-amd64 /usr/bin/wkhtmltopdf
# mv wkhtmltoimage-amd64 /usr/bin/wkhtmltoimage

// dependencies
# yum install -y libXrender libXext openssl openssl-devel fontconfig 
4

1 に答える 1

0

Centos 6 サーバーを使用して (IE 11/Win 8.1 で) テストしましたが、保存先のフォルダーへのパスを少し変更するだけで問題なく動作しました。

私の出力は、Converting url to image file /home/user/../bittertruth.jpg... Finished... でした。

それはあなたの期待通りです....

于 2015-01-19T21:43:13.820 に答える