WordPress.org

Forums

WooCommerce PDF Invoices & Packing Slips
[resolved] Print option (11 posts)

  1. killerdog
    Member
    Posted 1 year ago #

    GREAT plugin! Would be VERY cool if you could add a third option to the "How do you want to view the PDF" that will directly print the PDF without the need to first display/download it. We send copies of PDF to users automatically by email, so, when the store manager actually needs to access a PDF, it's usually for a quick printout. This is especially true for packing slips. This option would most likely save store managers a lot of time since many PDF readers are still somewhat slow and cumbersome. Thanks!

    http://wordpress.org/plugins/woocommerce-pdf-invoices-packing-slips/

  2. Ewout
    Member
    Plugin Author

    Posted 1 year ago #

    Hi killerdog,
    Thanks for the kind words! It is possible to add an option like that - it would output HTML to the background instead of PDF and fire the browser's print window. Directly printing a PDF is not possible afaik, and would still require launching the PDF reader.

    There's one big issue with this though, which is that I have not reliable solution for footers. In PDF, I can add a footer to the bottom of a page, but in (printed) HTML this is not as easy as one might think. For a single page there are a few (CSS) options, but they don't work in all browsers or work different across browsers and for multiple pages it gets even more difficult. Tables might work, but that becomes a problem for invoices/packing lists spanning more than one page.

    If you have (HTML/CSS/JS) suggestions for how to solve this, I would gladly integrate that feature into the plugin.

    Ewout

  3. killerdog
    Member
    Posted 1 year ago #

    Good point!

    I'm wondering if there isn't a way to launch a direct file print of a document using javascript or such. The same way you can right-click a document in Windows and select print. This DOES open the document application briefly BUT there is no interaction with the user. The application just reads the document, seamlessly prints using the default printer, and then shuts down automatically. This seems works with almost any file and it's associated application in Windows. I wish I knew more about javascript so that I could help out more here.

    Worst case scenario, I personally at least, wouldn't mind using HTML for the quick printout version. Invoices and packing slips don't have to be exactly the same with every printout. As long as they all contain the same information, then all is good. Although, keeping them as homogeneous as possible makes people less nervous, if they happen to view both versions simultaneously. :)

  4. killerdog
    Member
    Posted 1 year ago #

    If choose to go down the HTML route, you might be able to utilize a open source conversion function, like this one:

    http://sourceforge.net/projects/pdftohtml/

    Click on the link to their website. They put up a demo where you can compare a source PDF file with the resulting HTML. Looks amazing. And this is somewhat of a complex layout too. So converting a simple invoice or packing slip should be a breeze, keeping them almost identical. Hope this helps somewhat.

  5. Ewout
    Member
    Plugin Author

    Posted 1 year ago #

    Hey Killerdog,
    Thanks for thinking along. It is possible to make the browser automatically print a PDF document when it opens, but it would still need to load. Since you made that remark about PDF readers being slow & cumbersome, I was assuming that was not an option. I find Chrome's built in PDF reader quite good though.

    About the pdftohtml plugin, this plugin invoice & packing slip plugin actually does the reverse: it uses html templates as a source for the PDF. It is quite simple to bypass the PDF engine and output the html directly, but it doesn't solve the footer issue. I checked out that demo but there was no sign of a footer there. The web is littered with solutions to this problem, but from what I found I couldn't find one that was universal enough (between browsers, operating systems, multiple, single pages) that I wanted to use it.

    I could add the feature and put a notice that it's experimental and doesn't give consistent footer output, this way you could at least see if it works for you.

  6. killerdog
    Member
    Posted 1 year ago #

    Not sure about the footer issue. I only dabble in PHP enough to modify and/or create smaller functions, but don't consider myself a programmer. With that said, I'd be happy to test anything you throw at me, if you want the feedback. They don't call me the bugmaster for nothing, here at the office. ;)

  7. killerdog
    Member
    Posted 1 year ago #

    Oh, regarding the speed issue and PDFs being somewhat slow and cumbersome...

    What I really meant was, that even if the PDF-reader needs to be loaded for printing, it save time if the printing process could be automated with a one-push-button. Rather then pressing the print button, waiting for the reader to render the document, pressing the reader printer button, selecting a printer, and then manually closing the reader tab or window.

    I understand that this might not be a big deal if only a few packing slips need to be printed, now and again. But this does become very tedious work when many packing slips need to be individually selected and printed, say a few hundred back-orders, all at the same time. :)

    Avoiding the PDF-format altogether when printing, especially if the source material is already HTML, would be amazing. Didn't know that this was the case. If this gets solved somehow, maybe there could be separate buttons for viewing PDF-documents and printing, with the option to display either or both, for those folks who hate too many buttons on display. ;)

  8. Ewout
    Member
    Plugin Author

    Posted 1 year ago #

    Hey killerdog,
    I'll see if I can add that feature to the next release or make a test version for the bugmaster :o)

    Note that you can print in bulk by selecting the orders in the WooCommerce order admin and the select "PDF Invoices/Packing Slips" from the bulk actions drop down. That should save you some of that tedious work already.

    It is definitely not possible to print straight from the browser without any user intervention, not in any browser that I am aware of. The print dialogue is always shown to the user. Which makes sense because otherwise websites could just print spam without the user having any control over it.

  9. killerdog
    Member
    Posted 1 year ago #

    Very cool! Even with the print dialogue still necessary, it's still a lot faster printing HTML directly, and not having to go through the PDF reader to print each time. Don't get me wrong, the PDF-to-email is the best feature of this plugin, and the main reason why we started using it. Customers love receiving PDF invoice copies automatically, and it saves us a lot time for to manually process PDF invoice requests, coming from mainly corporate customers. So this plugin is already amazing either way. Great job! :)

  10. Ewout
    Member
    Plugin Author

    Posted 1 year ago #

    Hey Killerdog!
    Good news for the bugmaster. The latest version of the plugin allows you output and/or print HTML. Because this is an experimental feature and I have no plans on giving template support on this, I decided to hide the option with some code in functions.php instead of the settings panel.

    It's done by using three filters, one for outputting HTML, one for adding some JS to automatically launch a print dialogue and one to use http urls instead of server paths for images. I have added the $template_type parameter to the first two, so you can differ between packing-slips (for printing for example) or invoices (to save for the books for example). If you want to output HTML for both, you can just return true. These filters do not affect the email attachment functionality (which would be bad).

    add_filter( 'wpo_wcpdf_output_html', 'wpo_wcpdf_html', 10, 2 );
    add_filter( 'wpo_wcpdf_print_html', 'wpo_wcpdf_html', 10, 2 );
    
    function wpo_wcpdf_html( $setting, $template_type ){
    	if ( $template_type == 'packing-slip' ) {
    		return true; // output html
    	} else {
    		return false; //output pdf
    	}
    }
    
    add_filter( 'wpo_wcpdf_use_path', 'wpo_wcpdf_use_path' );
    function wpo_wcpdf_use_path(){
    	return false; // return false to turn off path and use url instead
    }
  11. Ewout
    Member
    Plugin Author

    Posted 1 year ago #

    Hey Killerdog,
    Did you get around testing this? Let me know if you need anything, I'll mark this to resolved for now, as the functionality is implemented.

    Ewout

Topic Closed

This topic has been closed to new replies.

About this Plugin

  • WooCommerce PDF Invoices & Packing Slips
  • Frequently Asked Questions
  • Support Threads
  • Reviews

About this Topic