Merge pull request #84 from danielklim/danielklim/pdfcommand-arg-passthrough

Pass command line args to wkhtmltopdf to enable better formatting
This commit is contained in:
Craig Davis 2018-10-22 10:49:22 -05:00 committed by GitHub
commit d4cfc4cdad
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 37 additions and 2 deletions

View File

@ -31,6 +31,25 @@ class PdfCommand extends HtmlCommand
InputOption::VALUE_REQUIRED,
'Which of the templates to use'
)
->addOption(
'htmlonly',
'H',
InputOption::VALUE_NONE,
'Only render interim HTML (don\'t run wkhtmltopdf)'
)
->addOption(
'keephtml',
'k',
InputOption::VALUE_NONE,
'Keep interim HTML'
)
->addOption(
'pdfargs',
'p',
InputOption::VALUE_REQUIRED,
'Passthrough arguments for wkhtmltopdf',
'--dpi 300 -s Letter'
)
->addOption(
'output',
'o',
@ -48,6 +67,9 @@ class PdfCommand extends HtmlCommand
$template = $input->getOption('template');
$pdfSource = join(DIRECTORY_SEPARATOR, array($destination, '.tmp_pdf_source.html'));
$optFilename = $input->getOption('output');
$htmlonly = $input->getOption('htmlonly');
$keephtml = $input->getOption('keephtml');
$pdfargs = $input->getOption('pdfargs');
$destFilename = join(DIRECTORY_SEPARATOR, array($destination, pathinfo($source, PATHINFO_FILENAME) . '.pdf'));
@ -82,11 +104,24 @@ class PdfCommand extends HtmlCommand
// Save to a temp destination for the pdf renderer to use
file_put_contents($pdfSource, $rendered);
// command that will be invoked to convert html to pdf
$cmd = "wkhtmltopdf $pdfargs $pdfSource $destFilename";
// Process the document with wkhtmltopdf
exec('wkhtmltopdf --dpi 300 ' . $pdfSource .' ' . $destFilename);
if(!$htmlonly)
exec($cmd);
// Unlink the temporary file
unlink($pdfSource);
if(!($htmlonly || $keephtml))
unlink($pdfSource);
else
$output->writeln(
sprintf(
"Keeping interim HTML: <info>%s</info>",
$pdfSource
),
$this->app->outputFormat
);
$output->writeln(
sprintf(