加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

批量指印pdf并指定页码命令行

(2020-10-10 17:27:16)
其它方案:先用命令行工具合并指定页数的pdf,再打印。

正常情况下可以选中多个文件,然后右击,选择打印。或者使用foxit reader有个批量打印功能,可以设置打印页码范围,还可以页码倒序打印。

另外foxit reader也支持命令行打印,不过不支持指定页码,而且有些版本的foxit reader有使用命令行打印出现图形界面的bug。
用/t 指定打印机或/p直接默认打印机。

adobe reader也可以用命令打印,不支持选择打印哪些页,不过从adobe reader 8版本以后,其命令行打印会出现图形,不能自己关,否则批处理不会继续执行,可以提前打开个acrobat reader别关来全批处理继续执行。以下没有指定打印机
start /wait "D:\Program Files\Adobe\Acrobat Reader DC\Reader\acrord32.exe" /A "page=1" /t "C:\Users\CCL\Downloads\1.pdf"

可以使用biopdf的acrowrap.exe这个工具协助,其是依赖acrobat reader的,个人免费。

命令行的话可以用,PDFtoPrinter,不到10M。可以批量打印,并指定打印页码。这个是使用autoit 脚本来控制xchange viewer。当然,xchange viewer(有单文件绿色版)也可以了。这个文件名不能用相对路径比如.\,要么使用全名,要么pdftoprinter.exe和pdf文件同一目录时,仅使用文件名,可以使用%~dp0代替当前路径。如果有中文文件名,bat文件要用GB2312编码,要不然用UTF8编码的话,文件名是乱码,找不到。
.\PDFtoPrinter.exe "%~dp0中文.pdf" pages=1,3,5-10 copies=2
xchange viewer不支持指定打印几份,pdftoprinter支持。但xchange viewer可以支持一次指定多个文件打印。均支持指定打印机打印。
.\PDFXCview.exe /print:pages=1 "%~dp0中文.pdf" "%~dp0filename.pdf"
你还可以在xchange viewer图形界面打印设置其它打印选项,比如缩放,奇偶页,页次反向,多页合并等,然后把这些设置export all settings to date file。把导出的dat文件和pdftorpinter放到同一目标,然后默认打印会调用这个文件设置,实现更复杂的打印功能。xchange viewer支持javascript,自己编写javascript脚本,想怎么打印就怎么打印。

以下bat和pdftoprinter放到某个文件夹中,双击bat,可打印此文件夹下的所有pdf,包括子目录。
@echo off
rem 修复中文乱码
CHCP 65001 >nul
echo 正在打印
for /r .\ %%i in (*.pdf) do (
rem 打印命令
pdftoprinter.exe "%%~fi" pages=1
echo %%i 处理完毕。
rem delay 1 second.
ping -n 1 127.0.0.1 >nul
)
echo 到此结束。
pause

SumatraPDF 也可以吧,好像选项更多。

pdf24里带的pdf24-doctool也支持命令行打印,不过调用的是shell print。如果对一个pdf文件右击,没有打印命令的话,这个也用不了。如果是acrobat reader,可以连续执行命令,但是打印完成后,同样会有个acrobat reader的GUI窗口在打开着,倒是可以在bat最后用个taskkill /IM "acrord32.exe" /F强行结束。如果这样,还不好用acrowrap了。当然用foxit也没问题。

coolutils的total pdf printer也支持,不过收费。 但是选项多的不要不要的,还可以用图形界面设置好,自动生成bat文件。

再不行就只能上python了



再不济,就用VBA调用shellexecute,就是对应右击然后打印。

Declare Function apiShellExecute Lib "shell32.dll" Alias "ShellExecuteA" ( _
   ByVal hwnd As Long, _
   ByVal lpOperation As String, _
   ByVal lpFile As String, _
   ByVal lpParameters As String, _
   ByVal lpDirectory As String, _
   ByVal nShowCmd As Long) _
   As Long

Public Sub PrintFile(ByVal strPathAndFilename As String)

   Call apiShellExecute(Application.hwnd, "print", strPathAndFilename, vbNullString, vbNullString, 0)

End Sub

 Sub test()
PrintFile ("C:\Us\266.pdf")
 End Sub

excel也没有,就用VBS。如果是用acrobat打印,再用
Option Explicit

Dim shl
Dim fldr
Dim files,file

Set shl = CreateObject("Shell.Application")
Set fldr = shl.Namespace("C:\Users\lyy\Desktop\test\pdf24\")
Set files = fldr.Items


For Each file in files
   file.InvokeVerbEx("Print")
Next

Set shl = Nothing
Set fldr = Nothing
Set files = Nothing
WScript.Quit






xchange viewer command line mannual

PDFXCview.exe [command] [filename1] [[filename2] [… [filenameN]]]
Where command can be one of the following commands:
ƒ /A "param=value [&param2=value [&...]"
ƒ /close[:save|discard|ask]
ƒ /print[:[default=yes|no][&showui=yes|no][&printer=][&pages=]]
ƒ /printto[:[default=yes|no][&showui=yes|no][&pages=]]
ƒ /exportp
ƒ /importp
ƒ /RegServer
ƒ /UnregServer
ƒ /usep

/print When this command is specified, PDF file(s) specified by parameters
… will be printed. Printing parameters differ depending on
arguments used:
default=yes|no If this argument is used and its value is yes, viewer
will reset printing settings before printing
documents. Otherwise if the last is used, stored
parameters will be applied. Default value: yes.
showui=yes|no Defines if printing progress will be shown. Default
value: no.
printer= Specifies the printer on which documents should
be printed. If not specified, default system printer
will be used. Please note, if printer name contains
spaces or & character, it should be enclosed into
quotes.
pages= Specifies the pages range(s) which should be
printed. Syntax of range is the same as on print
dialog. If argument is omitted, all pages will be
printed.
For example,
PDFXCView.exe /print:showui=yes c:\mydocument.pdf 




用gsprint也可以命令行批量打印pdf,支持页码选择。可以使用ghostscript的几乎所有命令行参数。应该是gsprint不识别的参数全都扔给ghostscript.  Unrecognised options are passed on to Ghostscript.

有一批PDF文件,好几百个,每个只打印第2,3页,双面打印。

网上搜索一波,方案如下:

安装Ghostscript,GhostView,使用gsprint命令批量打印pdf文件。对部分PDF中的中文支持好像有点问题。

gsprint命令参数说明:

     "-dQUIET",    安静的意思,指代执行过程中尽可能少的输出日志等信息。(也可以简写为“-q”)
     "-dNOSAFER",    通过命令行运行
     "-dBATCH",    执行到最后一页后退出
     "-dNOPAUSE",    每一页转换之间没有停顿
     "-dNOPROMPT",    没有相关提示
     "-dFirstPage=1",    从第几页开始
     "-dLastPage=5",     到第几页结束
     "-sDEVICE=pngalpha",    转换输出的文件类型装置,默认值为x11alpha
     "-g720x1280",    图片像素(-gx),一般不指定,使用默认输出
     "-r300",    图片分辨率(即图片解析度为300dpi),默认值好像是72(未测试证实)
     "-sOutputFile=/opt/shanhy/error1png/%d.png",    图片输出路径,使用%d或%ld输出页数


比如打印c.pdf第2,3页,命令如下

gsprint -dFirstPage=2 -dLastPage=3 c.pdf

https://www.cnblogs.com/onelang/p/10631350.html
http://people.brandeis.edu/~aminul/Docs/USBTeX-0.9.8/texmf/Ghostgum/gsview/gsprint.htm

Usage

Typical usage would be

gsprint golfer.ps
gsprint -colour colorcir.ps

You may need to configure gsprint with a gsprint.cfg file. See the configuration section below.

Command line options are:

-help
Print usage summary
-mono
Render in monochrome as 1bit/pixel
-grey or -gray
Render in greyscale as 8bits/pixel
-colour or -color
Render in colour as 24bits/pixel
-query
Show printer setup dialog
-noquery
Don't show printer setup dialog
-printer "name"
Print to the specified printer
-noprinter
Use default printer
-port "name"
Print to the specified printer port, instead of the default for the printer
-ghostscript "name"
Path and filename of command line Ghostscript
-config "name"
Read options from this file, one argument per line.
-odd
Print only odd pages
-even
Print only even pages
-all
Print all pages
-from NN
First page to print is NN
-to NN
Last page to print is NN
-twoup
Two pages per sheet
-portrait
Portrait orientation
-landscape
Landscape orientation
-duplex_vertical
Duplex (for long edge binding)
-duplex_horizontal
Duplex (for short edge binding)
-copies NN
Print NN copies (if supported by Windows printer driver)
"filename"
The PostScript/PDF file to print
-
Tell Ghostscript to read PostScript from standard input

Defaults are -mono -noquery -noprinter -all
Unrecognised options are passed on to Ghostscript.
The filename to print must be the last option.

If neither -query nor -printer are used (the default), the default printer will be used. This is equivalent to -noquery and -noprinter.

-all overrides -odd, -even, -from and -to.
DSC comments are ignored.
-odd, -even, -from and -to operate by rendering every page but only sending the selected pages to the printer.
Printing one page out of a 200 page document using "-from 100 -to 100" will result in a long wait before and after the page is printed.
If using "-from 10 -odd", the first page printed will be 11.

The last occurence of -mono, -grey, -colour is used.

Page size and margins cannot be set from the command line. These are obtained from the printer driver. To change the page size, change your printer settings.

Ghostscript options that must not be used are:

  -r  
  -g  
  -sDEVICE=  
  -sOutputFile=  
  -sPAPERSIZE=

These are either used by, or interfere with gsprint.

Possible future options are:

 -twoup
 -scale NN.NNN
 -papersize A4


Print Conductor这个软件好像也是可以的。

pdf xchange pro 带了个工具pdf-tools这个工具太强大 ,专注于批量操作。可以批量打量。批量处理pdf必须用它。

verypdf pdf batch print command line 也可以,也是强大到没朋友 。

2printer 也是很强大的命令行打印文件工具。免费版会在每个文件后面添加单独一页水印页。
RawFilePrinter 也支持命令行打印PDF,不过参数少的可怜,$10,免费的同样会插入一页水印页。和直接拖pdf到打印队列没什么区别吧。

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有