• Resolved jmjimenez

    (@jmjimenez)


    Hi,

    I have build a custom template for my post, to be called from your excellent plugin.

    Also, I’m taking advantage I have 2 urls:
    – posting/pdf
    – posting/pdf-preview

    I’m using the first one to download the pdf file. And I’m using the second one to offer my users the choice to print directly from the browser.

    I would like to insert some additional code in my pdf-template to check if it’s been called from /pdf-preview. If it’s so, I would like to insert an additional javascript window.print() at the end of the pdf-template (so, when the page finishes loading in the browser, the browser’s print dialog will open)

    Something like this:
    <?php
    if (the pdf-template has been called for pdf-preview) {
    echo ‘<script type=”text/javascript”>window.print();</script>’;
    }
    ?>

    Is it possible? thanks for your help

    https://wordpress.org/plugins/wp-pdf-templates/

Viewing 8 replies - 1 through 8 (of 8 total)
  • Plugin Author Viljami Kuosmanen

    (@zuige)

    Sure! How about:

    <?php if( false !== strpos( $_SERVER['REQUEST_URI'], 'pdf-preview' ) ) : ?>

    Thread Starter jmjimenez

    (@jmjimenez)

    Thanks for your quick response

    Your suggestion was my first intention

    To check it, I have include in my test environment a trace in my pdf-template:
    <h5>the request uri is <?php echo $_SERVER['REQUEST_URI']; ?> </h5>

    If I open the post/pdf-preview url, I can read the following:

    the request uri is /listing/chalet-pareado-de-700-m2-en-habana/?pdf-template

    If I open the post/pdf url, the output is the same 🙁

    Any tips?

    Thanks again for your help

    Plugin Author Viljami Kuosmanen

    (@zuige)

    Ahh, you’re completely right. The plugin externally loads the /pdf-template endpoint and renders it onto the page.

    I can’t immediately think of a way to differentiate between the /pdf and the /pdf-preview endpoints without altering the plugin source. This may well be a feature I could implement in the next version of WP PDF Templates.

    This is a bit of a hack, but you could experiment with setting a cookie to track which endpoint is being used. Just add define('FETCH_COOKIES_ENABLED', true); to your wp-config.php to make sure cookies are being forwarded to the template.

    Let me know if you have any luck with this method. I haven’t actually tried this myself.

    Plugin Author Viljami Kuosmanen

    (@zuige)

    How about just adding the <script> tags statically into the template? The PDF document can’t render it anyway.

    Plugin Author Viljami Kuosmanen

    (@zuige)

    Another thing you could do, is define a completely new endpoint or use the /pdf-template endpoint instead of /pdf-preview, and look at the user agent.

    The $_SERVER['HTTP_USER_AGENT'] variable shouldn’t be defined when the request is coming from /pdf-preview or /pdf, but should be defined when using /pdf-template.

    Thread Starter jmjimenez

    (@jmjimenez)

    The static <script> alternative does’t work because in some browser (for example, firefox) the pdf is opened inside the browser AND the static <script> is executed 🙁

    It is something strange, my script is:

    <?php wp_footer(); ?>
       <script type="text/javascript">
          if (location.href.indexOf('pdf-preview') != -1) {
             window.print();
          }
       </script>

    That is: I only want to execute the window.print when the browser is in pdf-preview. However, the window.print() statement is executed by firefox.

    This is the reason I want to render only the <script> when I access the /pdf-preview choice

    Thread Starter jmjimenez

    (@jmjimenez)

    Your last suggestion has done the magic 🙂

    Now, I access to:

    • {post}/pdf
    • {post]/pdf-template

    And this piece of code in my pdf-template works fine:

    <?php wp_footer(); ?>
    <?php
          if ($_SERVER['HTTP_USER_AGENT'] != '') {
             echo '<script type="text/javascript"> window.print(); </script>';
          }
    ?>

    Thanks!!!

    Plugin Author Viljami Kuosmanen

    (@zuige)

    Glad to hear you got it working!

    I think the static javascript option would have worked as well. Your logic seemed to be a bit faulty. This piece of script would’ve also worked:

    <script>
    if ( window.location.pathname.match(/pdf-preview/g) ) {
      window.print();
    }
    </script>

    [marked topic as resolved]

Viewing 8 replies - 1 through 8 (of 8 total)
  • The topic ‘How to find in my pdf template if it's called for pdf or preview’ is closed to new replies.