通过命令行使用苏门答腊pdf批量打印pdf

2024-01-15

自从 Adob​​e 发布了 Adob​​e Reader 的新更新(2014 年 9 月 16 日的 11.09)以来,我们在通过命令行打印 pdf 文件时遇到了问题。

我们的正式脚本如下所示:

:job
@for /F "tokens=1,* delims= " %%p in ('dir /b/a-d /s "Y:\*.pdf"') do (
echo Printing file: "%%p" on %date%
::prints the pdf document with adobe reader
"C:\Program Files (x86)\Adobe\Reader 11.0\Reader\AcroRd32.exe" /p /h "%%p"
::move file to destination
echo wait 10 seconds
::wait 10 seconds then continue
ping 127.0.0.1 -n 10 > nul
echo move file: "%%p" to "C:\PDF"
::move file to destination
move "%%p" "C:\PDF"
echo moved successfully!
echo proceeding next file
)
echo waiting for files to print...
echo wait 7 seconds
ping 127.0.0.1 -n 7 > nul
::clear console
cls
::repeat with job (endless loop)
goto job

该脚本按照之前的预期运行。由于更新,脚本经常挂起或速度非常慢。 该脚本或多或少变得毫无用处。

由于 adobe reader 可能不是最小的,我们还考虑使用像 sumatrapdf 或 Foxitreader 这样的轻量级替代品。这将是开始使用这些替代方案之一的好时机。

所以我想用 sumatrapdf 尝试一下。 他们的文件说:http://blog.kowalczyk.info/software/sumatrapdf/manual.html http://blog.kowalczyk.info/software/sumatrapdf/manual.html

=> -print-to-default $file.pdf 在默认打印机上打印 PDF 文件

所以我想到了这个,类似于 adobe reader 的例子

:job
@for /F "tokens=1,* delims= " %%p in ('dir /b/a-d /s "Y:\*.pdf"') do (
call "C:\Program Files (x86)\SumatraPDF\SumatraPDF.exe" -print-to-default "%%p" 
start "" "C:\Program Files (x86)\SumatraPDF\SumatraPDF.exe" -print-to-default "%%p"
"C:\Program Files (x86)\SumatraPDF\SumatraPDF.exe" -print-to-default "%%p"
... the rest

但没有任何作用。如果也尝试过: “C:\Program Files (x86)\SumatraPDF\SumatraPDF.exe -print-to-default”“%%p”用于调用、启动等...

有人知道如何使用 sumatrapdf 进行打印吗?我也不会反对让它与福昕阅读器一起使用。

很高兴得到一些建议:) 也许有人有类似的问题需要解决。


Adobe阅读器

根据如何将 Windows 命令行与 Acrobat 和 Adob​​e Reader 结合使用? http://help.adobe.com/livedocs/acrobat_sdk/10/Acrobat10_HTMLHelp/DevFAQ_UnderstandingSDK.22.31.html(适用于 Adob​​e Acrobat/Reader 10,不适用于 XI)用于打印并显示对话框的命令是:

start "Print PDF" /wait "%ProgramFiles(x86)%\Adobe\Reader 11.0\Reader\AcroRd32.exe" /p "%%p"

我认为,使用选项没有用/h如果应显示打印对话框,则以最小化窗口启动 Adob​​e Reader。

要打印到特定打印机,要使用的命令行类似于

start "Print PDF" /wait /min "%ProgramFiles(x86)%\Adobe\Reader 11.0\Reader\AcroRd32.exe" /t "%%p" "printername" "drivername" "portname"

/wait停止执行批处理作业,直到 Adob​​e Reader 自行终止。和选项/min如果应用程序不覆盖它,则会导致使用最小化窗口执行 GUI 应用程序,并且仍然显示最大化或恢复模式的窗口。


苏门答腊PDF

我不确定是否苏门答腊岛PDF手册 http://blog.kowalczyk.info/software/sumatrapdf/manual.html是最新的,因为它在底部链接到苏门答腊岛 PDF 的 Wiki 文档命令行参数 https://code.google.com/p/sumatrapdf/wiki/CommandLineArguments页。此 Wiki 页面最近更新,包含有关打印选项的不同信息。

  • -打印到默认值
    将此命令行上指示的所有文件打印到系统默认打印机。打印完成后,SumatraPDF立即退出(检查错误代码是否失败)。

因此,应该可以通过调用 SumatraPDF 来打印命令行上指定的多个文件,这将使您的批处理文件更加高效。

由于我还没有安装 SumatraPDF,我建议先尝试只包含 3 行的批处理文件

"%ProgramFiles(x86)%\SumatraPDF\SumatraPDF.exe" -print-to-default "Full Path and Name of a PDF file"
echo Exit code of SumatraPDF is: %ERRORLEVEL%
pause

接下来查看批处理文件的输出。是否显示错误或 PDF 文件是否按预期打印?

打印完成之前控制台窗口中的第二行输出是否完成?

如果是这种情况,SumatraPDF 将作为单独的进程启动,并且退出代码评估实际上是不可能的。否则你已经有了要使用的命令。

但是,如果 SumatraPDF 作为单独的(GUI)进程启动,则很可能需要使用命令start有选项/wait也许还有/min如上所示(适用于 Adob​​e Reader)。

注:没有@echo off在小批处理文件的顶部进行测试,还可以查看执行批处理文件的命令。


FOR loop

查看您的代码FOR循环有问题,因为您指定空格字符作为分隔符,这对于内部带有空格的文件路径/名称不利。另外,空格字符默认是命令的分隔符FOR因此,如果确实需要的话,没有必要将其显式定义为分隔符。

因此我建议使用

@for /F "delims=" %%p in ('dir "Y:\*.pdf" /b /a-d /s' 2^>nul) do (
    "%ProgramFiles(x86)%\SumatraPDF\SumatraPDF.exe" -print-to-default "%%p"
)

With "delims="分隔符列表仅更改为换行符。%%p因此,即使命令输出的行上存在 1 个或多个空格,也始终具有文件的完整路径和名称dir.

2^>nul抑制命令的错误消息dir如果在整个驱动器 Y 上根本找不到 PDF 文件:将错误消息重定向到设备 NUL。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

通过命令行使用苏门答腊pdf批量打印pdf 的相关文章

  • 如何消除批处理文件动画中的闪烁? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 因此 我一直在批量制作一个假 GUI 以作为我正在做的 YouTube 评论的结尾 它基本上是一堆方框
  • 在 WebView 中打开 PDF 文件

    大约 2 天 我尝试在我的自定义中打开 PDF 文件WebvView 这是我的WebView code import android app AlertDialog import android app ProgressDialog imp
  • java设置图像的分辨率和打印尺寸

    我编写了一个程序 生成一个 BufferedImage 以显示在屏幕上 然后打印 图像的一部分包括 1 像素宽的网格线 即 一行为1个像素 行与行之间大约有10个像素 由于屏幕分辨率的原因 图像显示得比这大得多 每行有几个像素 我想将其绘制
  • 使用 Pyqt4 从 URL 下载数千个 PDF

    理想情况下 我试图从给定网站下载数千个 PDF 然而 由于某种原因 它甚至无法下载 100 个 PDF 我不知道为什么 这是代码 usr bin env python import time from pyPdf import PdfFil
  • 从命令行获取 NuGet.exe 版本

    我想得到NuGet exe使用命令行的版本 我知道我可以按照说明获取作为 Visual Studio 一部分运行的 NuGet 版本here http docs nuget org docs start here nuget faq How
  • 回显 unicode 字符

    我想通过运行bat 文件在cmd 中回显unicode 字符 我准备了一个简短的脚本 echo off SET message G p3 echo message pause 我怎样才能做到这一点 是否可以直接将这封信放入代码中 这样做 两
  • 如何使用 FOR 循环处理批处理文件中的“net use”命令错误输出?

    我在用着net use批处理文件中的命令用于连接远程位置 我想将它的输出存储到一个变量中并对其进行处理 当命令成功完成时 我的代码工作正常 但是 如果出现一些错误 例如密码错误 那么我无法将错误输出存储在变量中 它直接打印到正在运行脚本的控
  • 通过管道连接到 findstr 的输入

    我有一个文本文件 其中包含宏名称列表 每行一个 我的最终目标是打印宏名称在当前目录的文件中出现的次数 宏的名称位于C temp macros txt type C temp macros txt在命令提示符下可以正常打印列表 现在我想将该输
  • Zend 框架 PDF 问题

    又是我 伙计们 我有一个小问题 Create new PDF pdf new Zend Pdf Add new page to the document page pdf gt newPage Zend Pdf Page SIZE A4 p
  • 使用变量更改批处理文件中的目录

    这是问题 set Pathname C Program Files cd Pathname pause 正如我所期望的 上面的内容不会更改目录 有人可以告诉我为什么吗 The set语句不会按照您期望的方式处理空格 你的变量确实被命名了Pa
  • 创建仅在使用 PDFBox 打印时显示的水印(pdf 可选内容)

    我遇到过许多使用 PDFBox Layer Utility 的appendFormAsLayer 方法的示例 如下所示 Places the given form over the existing content of the indic
  • 如何在安装过程中运行“.bat”文件?

    在安装项目中 诸如 exe dll js vbs 之类的可执行文件是可以接受的 但无法运行 bat自定义操作中的文件 问题是如何运行 bat安装过程中的文件 好吧 经过大量搜索和反复试验 我解决了这个问题 我不确定这是否是最好的方法 但它确
  • 使用 Tabula 通过 Python 读取 pdf 时出现 Java 错误

    我已经安装了 tabula 库 用于使用 python 将 pdf 读取到 pandas 数据框中 但是当我运行代码时 import tabula df tabula read pdf sample1 pdf pages 1 我得到了例外
  • 使用 for /f 查找并替换字符串为 if 语句和变量

    我编写了一个批处理文件 我想用另一个 txt 文件中的字符串覆盖关键字符串 目前 它完美地复制新的 File txt 文件 但不会用 OldFile txt 文件中的字符串替换字符串 File txt 文件中的字符串示例 密码 Pword
  • LibreOffice 并行将 .docx 转换为 .pdf 效果不佳

    我有很多 docx 文件需要转换为 pdf 将它们一一转换需要很长时间 所以我编写了一个 python 脚本来并行转换它们 from subprocess import Popen import time import os os chdi
  • 打印表数据mysql php

    我在尝试打印表格的一些数据时遇到问题 我是 php mysql 的新手 但我认为我的代码是正确的 这里是 h1 Lista de usu rios h1
  • 使用 Windows 批处理文件在文本文件中添加新行

    我有一个文本文件 其中有 200 多行 我只想在第 4 行之前添加一个新行 我使用的是 Windows XP 输入前的示例文本文件 header 1 header 2 header 3 details 1 details 2 输出后 hea
  • 批处理脚本生成特定年月、周和工作日的文件夹

    最近几天我一直在寻找这个问题的答案 有很多关于全年批量文件夹创建的答案 但不够具体 所以我非常感谢答案 所以我想要这样的文件夹结构 如下所示 2017 for example main folder for year 2017 01 JAN
  • 使用 PDFbox 从区域中提取文本

    是否可以从一个区域中提取文本PDFbox http pdfbox apache org index html仅使用二进制文件而不必创建自己的代码 编译这个简单的程序并将其打包到 jar 中 import java awt geom Rect
  • 将文本叠加在图像背景上并转换为 PDF

    使用 NET 我想以编程方式创建一个 PDF 它仅包含一个背景图像 其上有两个具有不同字体和位置的标签 我已阅读过有关现有 PDF 库的信息 但不知道 如果适用 哪一个对于如此简单的任务来说最简单 有人愿意指导我吗 P D 我不想使用生成的

随机推荐