windows - PDF打印脚本
问题描述
我需要打印很多文件,我不想去每个选择它并打印所有文件。这些文档有修订版并且都在同一个文件夹中。我想打印这些文件的最新版本。这些文件的格式是
630-0-110
9A-0-9
44-0-190
44-0-191
在这四个 pdf 文件中,44-0-191
是比44-0-190
所以我想打印630-0-110
的更新版本9A-0-9
,,,44-0-191
我需要打印从6-0-
(revision no.) 到699A-0-
(revision no.) 的数字,其中一些数字在开头也有 A、B、C。
有没有办法创建一个外壳来自动打印这些?还是我必须手动 ctrl+click 来打印它们?
如果我可以创建一个外壳,我该怎么做?
解决方案
您的任务需要几个步骤
- 列出文档,使用正则表达式从修订中拆分名称,
- 按名称对文档进行分组,
- 每组按修订数字排序,
- 只获得最高转速。(最后一个)
- 选择打印机/或使用定义的/默认标准打印机
- 将要打印的文档列表提供给您首选的 pdf 应用程序(使用 Adobe Reader 打印 pdf)
由于您的修订号有不同的地方,您需要对数字进行排序,这是通过$ToNatural实现的
为了测试排序,我使用了扩展样本(要打印的修订标记为 **)
44-0-19.pdf
44-0-190.pdf
44-0-191.pdf **
44-0-2.pdf
630-0-110.pdf **
630-0-90.pdf
9A-0-10.pdf **
9A-0-9.pdf
## Q:\Test\2018\07\09\SO_51246286.ps1
#Requires -Version 3
## To sort numbers with a different places count use:
## $ToNatural from Roman Kuzmin source https://stackoverflow.com/a/5429048/6811411
$ToNatural = { [regex]::Replace($_, '\d+', { $args[0].Value.PadLeft(20,"0") }) }
Push-Location "X:\start\folder"
$PDFsToPrint = (Get-ChildItem *.pdf -File |
Where-Object BaseName -match '^([0-9]+[A-C]?-\d+)-(\d+)$'|
Group-Object {$Matches[1]} |
Foreach-Object {
$_.Group | Sort-Object $ToNatural | Select-Object -Last 1
} ).FullName
# $PDFsToPrint
Pop-Location
$Printer = Get-Printer | Select-Object Name,Drivername,PortName |
Out-GridView -Title "Select the printer for output" -OutputMode Single
#Adobe SDK: http://www.adobe.com/content/dam/Adobe/en/devnet/acrobat/pdfs/Acrobat_SDK_developer_faq.pdf
$Acrobat = 'C:\Program Files (x86)\Adobe\Acrobat Reader DC\Reader\AcroRd32.exe'
ForEach($Pdf in $PDFsToPrint) {
$ArgList=' /S /T "{0}" "{1}" "{2}" {3}' -f `
$Pdf,
$Printer.Name,
$Printer.DriverName,
$Printer.PortName
Start-Process $Acrobat -ArgumentList $ArgList
#Start-Sleep -Seconds 60 #optional delay
}
推荐阅读
- java - 如何使用 POI 将 Excel 文件头名称提取到数组列表中?
- r - 在 ATAC-seq 的 R 工作流程中使用 makeGRangesFromDataFrame 时出错
- qt - 使用 clang 和 lld 生成 .map 文件
- c# - EF6 多对多表中没有数据
- material-design - vuetify 的“edit-icon”类的 v-icon 不显示图标,而是显示“编辑”文本
- oracle - Oracle EntityFramework Core 数据库优先 - 更改默认类型映射
- ruby-on-rails - 在 .each(&:) 函数中传递参数
- javascript - 动态访问属性中的函数
- python - TypeError:运行 PIL 图像时,“模块”对象不可调用
- jquery - 在codeigniter 4中,我使用jQuery发出了一个POST请求,但请求没有到达服务器