PDF-ShellTools > Ideas/Suggestions

Pdfshelltools - print function

(1/2) > >>

AHN:
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:
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: ---/****************************************************/
//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');

--- End code ---
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:
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:

--- Quote from: Ahn on June 23, 2017, 07:11:46 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.

--- End quote ---
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. .

--- End quote ---
It's already coded. You just need to use it ;)

AHN:
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 ~!

Navigation

[0] Message Index

[#] Next page

Go to full version