RTTSoftware Support Forum
PDF-ShellTools => Ideas/Suggestions => Topic started by: AHN 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~!
-
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 (http://www.rttsoftware.com/Manuals/STIndex.htm?pageURL=ST/English/Merge.htm), but manually typing the pages to print, if many documents, can be tedious, so better create a script to automate this.
/****************************************************/
//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 (http://www.rttsoftware.com/Manuals/STIndex.htm?pageURL=ST/English/MyScripts.htm) 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.
-
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
-
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.
Coding is not so good for me. .
It's already coded. You just need to use it ;)
-
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 ~!
-
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.
-
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.
-
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.)
-
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.
-
You are right. Tabs appear now. Next step ..I will try. Have a nice day.Thanks.