Is there any wkhtmltopdf option to convert html text rather than file?

后端 未结 5 810
栀梦
栀梦 2021-02-19 09:47

I recently stumbled on wkhtmltopdf and have found it to be an excellent tool for on-the-fly conversion from html to pdf in the browser.

A typical usage (in Windows) woul

相关标签:
5条回答
  • 2021-02-19 10:00

    In addition to the answer provided by pp. If you prefer not to escape the < > characters, you can also do the following:

    echo | set /p="<h3>Magical ponies</h3>" | wkhtmltopdf - test.pdf
    
    0 讨论(0)
  • 2021-02-19 10:03

    I couldn't get wkhtmltopdf to work on my end converting raw html to PDF, but I did find a simple microservice that was able to do it with a couple minutes work on bantam.io.

    Here's how it works:

    bantam
     .run('@images/html', {
       html: `
       <h1 style='width: 400px; text-align: center'>TEST</h1>
       <br/>
       <img src='https://images.unsplash.com/photo-1507146426996-ef05306b995a?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=crop&w=1950&q=80' />
       `,
       imageType: 'pdf',
     })
     .then(pdfUrl => {
        // pdf is temporarily hosted on AWS S3 via a secure link at `pdfUrl`
    });
    

    They also have options for taking in a URL rather than raw HTML and you can produce images as well as PDFs. Here are the docs: https://bantam.io/functions/@images/html?link=docs&subLink=0

    0 讨论(0)
  • 2021-02-19 10:04

    Using PowerShell, you can do it like this:

    $html = "<h1>Magical Ponies</h1><p>Once upon a time in Horseland, there was a band of miniat
    ure creatures..."
    $html | .\wkhtmltopdf.exe - C:\temp\test.pdf
    

    Just make sure you're running the code from within the \bin\ directory of wkhtmltopdf, otherwise, you'd have to provide a full path to the executable.

    0 讨论(0)
  • 2021-02-19 10:17

    Just a correction to the answer provided by Nenotlep. As Jigar noted (in a comment to Nenotlep's answer), Nenotlep's command results in quotation marks preceding and following the actual text. On my system (Windows 10) this command is the correct solution:

    echo ^<h3^>magical ponies^</h3^> | "C:\Program Files\wkhtmltopdf\bin\wkhtmltopdf.exe" - test.pdf
    

    The echo command needs no quotation marks - but, if you do not put the text between quotation marks, the < and > characters need to be escaped (by ^).

    Another way to try out is writing the text into a temporary file, which - on Windows - might even be faster as some sources state:

    echo ^<h3^>magical ponies^</h3^> > temp.txt
    "C:\Program Files\wkhtmltopdf\bin\wkhtmltopdf.exe" - test.pdf < temp.txt
    

    (This can also be written in one line: just put an & between the two commands.)

    0 讨论(0)
  • 2021-02-19 10:19

    You can pipe content into wkhtmltopdf using the command line. For Windows, try this:

    echo "<h3>blep</h3>" | wkhtmltopdf.exe - test.pdf
    

    This reads like "echo <h3>blep</h3>, output it's stdout (standard out stream) to wkhtmltopdf stdin (standard in stream)".

    The dash - in the wkhtmltopdf command means that it takes it's input from stdin and not a file.

    You could also echo HTML into a file, feed that file to wkhtmltopdf and delete that file inside a script.

    0 讨论(0)
提交回复
热议问题