Author Topic: Pdfshelltools - print function  (Read 9764 times)

0 Members and 1 Guest are viewing this topic.

AHN

  • Newbie
  • *
  • Posts: 7
Pdfshelltools - print function
« on: June 21, 2017, 06:59:40 AM »
Hello,

Thanks for good  program.

(I  purchased 2 years ago)

I  think . . print function is needed.

If  someone prints parts of  many pdf~documents,

Print function  is  reduce  time. . .

Have  a  nice  day~!




RTT

  • Administrator
  • *****
  • Posts: 918
Re: Pdfshelltools - print function
« Reply #1 on: June 22, 2017, 02:19:42 AM »
If the need is to batch print a specific page range, i.e. not the whole document, but a selection of pages, and do this to all the selected PDFs, then the best way is to merge all these documents page selection and then print the result document.

This can be done with the merge tool, but manually typing the pages to print, if many documents, can be tedious, so better create a script to automate this.
Code: [Select]
/****************************************************/
//http://cwestblog.com/2012/03/10/jscript-using-inputbox-and-msgbox/
(function(vbe) {  
    vbe.Language = "VBScript";  
    vbe.AllowUI = true;   
    var constants = "OK,Cancel,Abort,Retry,Ignore,Yes,No,OKOnly,OKCancel,AbortRetryIgnore,YesNoCancel,YesNo,RetryCancel,Critical,Question,Exclamation,Information,DefaultButton1,DefaultButton2,DefaultButton3".split(",");  
    for (var i = 0; constants[i]; i++) {
        vbe.eval("vb" + constants[i]);  
    }
    InputBox = function(prompt, title, msg, xpos, ypos) {
        var params = [];
        params.push(toVBStringParam(prompt));
        if (title != null) {
            params.push(toVBStringParam(title));
            if (msg != null) {
                params.push(toVBStringParam(msg)); {
                    if (xpos != null) {
                        params.push(xpos);
                        if (ypos != null) {
                            params.push(ypos);
                        }
                    }
                }
            }
        }  
        return vbe.eval('InputBox(' +       params.join(",") + ')');  
    }
    MsgBox = function(prompt, buttons, title) {    
        return vbe.eval('MsgBox(' + [toVBStringParam(prompt), buttons != null ? buttons : "Empty", toVBStringParam(title)].join(",") + ')');
    };   

    function toVBStringParam(str) {    
        return str != null ? 'Unescape("' + escape(str + "") + '")' : "Empty";  
    }
})(new ActiveXObject("ScriptControl"));
/****************************************************/

var pages = InputBox('Leave empty to print all the pages', "Specify the pages to print");
if (typeof pages != 'undefined') {
    var Merger = pdfe.CreateDocumentMerger();
    var ProgressBar = pdfe.ProgressBar;
    ProgressBar.max = pdfe.SelectedFiles.count;
    for (var i = 0; i < pdfe.SelectedFiles.count; i++) {
        ProgressBar.position++;
        var srcFilename = pdfe.SelectedFiles(i).filename;
        pdfe.echo('Merging: ' + srcFilename);
        if (Merger.MergeDocument(srcFilename, pages)) pdfe.echo(' [OK]', 0, 1)
        else pdfe.echo(' [Failed]', 0xFF0000, 1);
    }
    //save to a temporary file
    var fso = new ActiveXObject("Scripting.FileSystemObject");
               
    var MergedFilename = fso.BuildPath(fso.GetSpecialFolder(2 /*TemporaryFolder*/ ), 'MergePrint.pdf');
    if (Merger.EndAndSaveTo(MergedFilename)) {
        pdfe.echo('Printing');
        var objShell = new ActiveXObject("shell.application");


        //print it using the default associated application.
        //Only works if the default PDF application has the print verb specified.
//        objShell.ShellExecute(MergedFilename, "", "", "Print", 1);


        //Print with Sumatra PDF
//        objShell.ShellExecute("C:\\Program Files (x86)\\SumatraPDF\\SumatraPDF.exe", '-print-dialog "'+MergedFilename+'"', "", "Open", 1);
               
        //Open it in the default PDF reader
        objShell.ShellExecute(MergedFilename, "", "", "Open", 1);
       
    } else {
        pdfe.echo('Failed', 0xFF0000);
    }
    pdfe.echo('Done');
} else pdfe.echo('Canceled');
This script prompts the user for the pages to print (same format as with the merge tool "pages to include" column), executes the merge and then opens, or prints, the result PDF.
Just import it into your PDF-ShellTools scripts and you will get a new entry, under the shell context menu PDF-ShellTools>My Scripts sub-menu, named "Print page selection".

Let me know if you are missing any functionality from your suggested "Print function" idea.

AHN

  • Newbie
  • *
  • Posts: 7
Re: Pdfshelltools - print function
« Reply #2 on: June 23, 2017, 07:11:46 AM »
Well.  Thanks you for your  advice.

But  I can't  understand.

Without creating new file,

Select files and type pages for each document
(Or  automatically all pages)

Is not so tedious.. I think so.

Other pdf  software has the function.

But  I like pdfshelltools more. . So  I just  suggest. .

Coding is not so good for me. . Thanks for reading

RTT

  • Administrator
  • *****
  • Posts: 918
Re: Pdfshelltools - print function
« Reply #3 on: June 25, 2017, 01:30:00 AM »
But  I can't  understand.

Without creating new file,

Select files and type pages for each document
(Or  automatically all pages)

Is not so tedious.. I think so.
If not tedious, then use the merge tool. What's the problem of creating a new file? Just click the preview button, to execute the merge and open it in the default PDF reader. Now you just need to print it, and all the documents/pages you selected will be printed in one shot.

Quote
Coding is not so good for me. .
It's already coded. You just need to use it ;)

AHN

  • Newbie
  • *
  • Posts: 7
Re: Pdfshelltools - print function
« Reply #4 on: June 25, 2017, 02:10:18 PM »
Well, thank you for your help.

Your way is good solution that I wanna to  get.

Many programs has print function  (Adobe..etc).

I think pdfshelltools is powerful  because all functions are

Operated by shell menu (especially exploer).

So I thought additional print function menu would be good.

To creating new file  or  open  default viewer is not so good way.

It is  my opinion. Anyway thank you.

Someday I could use print function I wish. . .

Have a nice day ~!


AHN

  • Newbie
  • *
  • Posts: 7
Re: Pdfshelltools - print function
« Reply #5 on: June 25, 2017, 10:51:15 PM »
Pdfshelltools (3.1.0) now I use.

General tab and  scripts tab are not shown.

Just my tools tab is shown.

Is another setup needed?

Anyway thanks for good program.

RTT

  • Administrator
  • *****
  • Posts: 918
Re: Pdfshelltools - print function
« Reply #6 on: June 27, 2017, 12:07:28 AM »
Interesting! All these tabs should be showing.
Please attach a screenshot of that situation, so I can take a look. You need to register in the forum as user, to be able to attach files/images to your replies.

AHN

  • Newbie
  • *
  • Posts: 7
Re: Pdfshelltools - print function
« Reply #7 on: June 27, 2017, 03:56:13 AM »
Have a nice day.

Thank you for your advise and good program again.

Screenshot is attached. (win 10, 7, xp - now I tested my pc - all the same.)

RTT

  • Administrator
  • *****
  • Posts: 918
Re: Pdfshelltools - print function
« Reply #8 on: June 27, 2017, 04:11:55 PM »
Using the Windows registry editor, check if you have a dword value named MyScripts set to 0, at the HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\PDFShellTools\Options\FeaturesState key (or at HKEY_LOCAL_MACHINE\SOFTWARE\PDFShellTools\Options\FeaturesState if Windows is 32-bit). If yes, change its value to 1.
If the key or value doesn't exists, create it and set the value to 1.
Check if now the manager shows the missing settings tabs.

AHN

  • Newbie
  • *
  • Posts: 7
Re: Pdfshelltools - print function
« Reply #9 on: June 28, 2017, 12:22:24 AM »
You are right. Tabs appear now. Next step ..I will try. Have a nice day.Thanks.