我试图在当前目录中打印所有pdf。
当我在cmd(singlepdf.sh
)中调用此bash脚本时:
'"C:\Program Files (x86)\Adobe\Reader 10.0\Reader\AcroRd32.exe"' /t Gemeinde_348_BioID_842_alt.pdf
一切正常。
使用此内容致电multiplepdfs.sh
时:
declare -a pdfs=(*.pdf)
for pdf in ${pdfs[@]}; do
echo -e "\nprinting **$pdf** with AcroRd32.exe...\n"
'"C:\Program Files (x86)\Adobe\Reader 10.0\Reader\AcroRd32.exe"' /t $pdf
sleep 3
done
echo显示文件在循环中正确处理 - 但后来我收到错误"C:\Program Files (x86)\Adobe\Reader 10.0\Reader\AcroRd32.exe": No such file or directory
有人可以帮忙解决这个问题吗?
修改 顺便说一句,我安装了msys mingw
答案 0 :(得分:14)
我知道这是一个古老的问题,但我最近遇到了同样的问题,没有一个答案适合我:
在搜索了一下后,我发现了这个:http://www.columbia.edu/~em36/pdftoprinter.html。
它是一个用文件名调用的简单exe,它会打印到默认打印机(或您指定的打印机)。 来自网站:
PDFtoPrinter是一个用于从Windows命令行打印PDF文件的程序。该程序通常用于Windows命令行,也适用于vDos DOS模拟器。
要将PDF文件打印到默认的Windows打印机,请使用以下命令:
PDFtoPrinter.exe filename.pdf
要打印到特定打印机,请在引号中添加打印机名称:
PDFtoPrinter.exe filename.pdf "Name of Printer"
如果要打印到网络打印机,请使用Windows打印对话框中显示的名称,如下所示(并注意名称开头的两个反斜杠和服务器名后面的单个反斜杠): / p>
PDFtoPrinter.exe filename.pdf "\\SERVER\PrinterName"
答案 1 :(得分:7)
使用Acrobat Reader完成此任务时遇到两个问题。
我偶然发现了这个blog,建议使用Foxit Reader。 Foxit Reader是免费的,API几乎与Acrobat Reader完全相同,但至关重要的是记录在案,并且不会为打印作业加载GUI。
警告,不要只是点击安装过程而不注意,它也会尝试安装不相关的软件。为什么软件供应商仍然这样做?
答案 2 :(得分:4)
第一反应 - 希望最终回馈一个有用的社区...
希望将此添加到仍在寻找简单解决方案的人的回复中。我使用Foxit Software的免费产品 - FoxItReader 以下是与静默打印一起使用的版本的链接 - 较新版本的静态打印功能仍然无效。 FoxitReader623.815_Setup
FOR %%f IN (*.pdf) DO ("C:\Program Files (x86)\Foxit Software\Foxit Reader\FoxitReader.exe" /t %%f "SPST-SMPICK" %%f & del %%f)
我只是创建了一个循环遍历目录的命令,并为每个pdf文件(FOR %% f IN * .pdf)静默打开阅读器(/ t)获取下一个PDF(%% f)并将其发送到打印队列(SPST-SMPICK),然后在将每个PDF发送到打印队列(del %% f)后删除它们。 Shashank展示了一个将文件移动到另一个目录的示例,如果你需要做的那样
FOR %%X in ("%dir1%*.pdf") DO (move "%%~dpnX.pdf" p/)
答案 3 :(得分:3)
错误消息告诉你。
尝试
"C:\Program Files (x86)\Adobe\Reader 10.0\Reader\AcroRd32.exe" /t "$pdf"
当您将字符串括在单引号中时,这会使所有内容都包含在有效字符串中,包括"
字符。通过删除单引号,shell将处理dbl-quotes作为字符串“wrappers”。
我还要将文件名变量包装在dbl-quotes中,以便您可以轻松处理名称中带有空格的文件,即
"C:\Program Files (x86)\Adobe\Reader 10.0\Reader\AcroRd32.exe" /t "$pdf"
IHTH
答案 4 :(得分:3)
看起来您缺少打印机名称,驱动程序和端口 - 按此顺序。你的最终命令应该类似于:
AcroRd32.exe /t <file.pdf> <printer_name> <printer_driver> <printer_port>
例如:
"C:\Program Files (x86)\Adobe\Reader 11.0\Reader\AcroRd32.exe" /t "C:\Folder\File.pdf" "Brother MFC-7820N USB Printer" "Brother MFC-7820N USB Printer" "IP_192.168.10.110"
注意:要查找打印机信息,请右键单击您的打印机并选择属性。在上面显示的情况下,打印机名称和驱动程序名称匹配 - 但您的信息可能不同。
答案 5 :(得分:3)
我遇到了连续打印多个PDF文件的类似问题,并且发现只使用2Printer软件解决了这个问题。 打印PDF文件的命令行示例:
2Printer.exe -s "C:\In\*.PDF" -prn "HP LasetJet 1100"
可免费用于非商业用途
答案 6 :(得分:3)
使用Acrobat阅读器不是一个好的解决方案,尤其是没有记录命令行属性。此外,Acrobat Reader的窗口在打印过程后保持打开状态。 PDF文件是打印机驱动程序所熟知的,因此您可以找到更好的工具,如2Printer.exe或RawFilePrinter.exe。在我看来,RawFilePrinter有更好的支持和明确的许可过程(你付了一次捐款,你可以在你喜欢的许多项目中重新分配RawFilePrinter - 即使是新版本也可以使用之前购买的许可证)
RawFilePrinter.exe -p "c:\Users\Me\Desktop\mypdffile.pdf" "Canon Printer"
IF %ERRORLEVEL% 1(
echo "Error!"
)
答案 7 :(得分:1)
@ECHO off set "dir1=C:\TicketDownload"
FOR %%X in ("%dir1%*.pdf") DO ( "C:\Program Files (x86)\Adobe\Reader 9.0\Reader\AcroRd32.exe" /t "%%~dpnX.pdf" "Microsoft XPS Document Writer" )
FOR %%X in ("%dir1%*.pdf") DO (move "%%~dpnX.pdf" p/)
试试这个......可能你有其他版本的Reader,这就是问题..
答案 8 :(得分:1)
今天,我一直在寻找这种解决方案,我尝试了一个有问题的PDFtoPrinter(尝试打印的PDF建议他们使用了不正确的纸张尺寸,这使打印作业挂了,直到解决为止,其他任何东西都无法打印)。在寻找替代方案的过程中,我想起了GhostScript及其相关的实用程序。我发现 GSView及其关联程序GSPrint(参考https://www.ghostscript.com/)。这两个都需要GhostScript(https://www.ghostscript.com/),但是在安装了所有组件之后,GSPrint可以正常工作,并且我能够创建一个计划任务,该任务可以在一夜之间自动打印PDF。
答案 9 :(得分:0)
这是另一种解决方案:
1)下载SumatraPDF(便携式版本)-https://www.sumatrapdfreader.org/download-free-pdf-viewer.html
2)创建一个类库项目,然后将SumatraPDF.exe解压缩到项目目录的根目录并取消阻止。
3)在项目属性内,转到“重新排列”选项卡,然后将exe作为文件添加。
4)将以下类添加到您的库中:
FileInfo file = new FileInfo(@"c:\Sandbox\dummy file.pdf");
SumatraWrapper pdfToPrinter =
new SumatraWrapper();
pdfToPrinter.Print(file, "My Printer");
5)享受从代码中打印pdf文件的乐趣。
像这样使用:
public class dropdown {
public string selectedvalue {get;set;}
}
答案 10 :(得分:0)
以下批处理脚本应该可以实现您想要的。虽然它会在完成后让 Acrobat Reader 的实例继续运行,但这不会在下次运行此脚本时造成任何问题。
@echo off
for %%f in (*.pdf) do (
echo Printing %cd%\%%f with Adobe Acrobat Reader...
start /b "Printing %%f" "C:\Program Files (x86)\Adobe\Acrobat Reader DC\Reader\AcroRd32.exe" /p /h "%cd%\%%f"
)
虽然您可以在之后单独终止 Acrobat Reader 进程,但是这可能会关闭您不想关闭的其他打开的 PDF 文档。
答案 11 :(得分:-1)
“开箱即用”的另一种解决方案
FOR %X in ("*.pdf") DO (C:\Windows\System32\print.exe /d:"\\printername" "%X.pdf")