尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

SumatraPDF 命令行参数完全指南:启动、导航、打印与自动化实战

SumatraPDF 命令行参数完全指南:启动、导航、打印与自动化实战 SumatraPDF 命令行参数完全指南启动、导航、打印与自动化实战【免费下载链接】sumatrapdfSumatraPDF reader项目地址: https://gitcode.com/gh_mirrors/su/sumatrapdfSumatraPDF 是一款开源 Windows PDF 阅读器其命令行接口功能强大不仅支持打开文档时同时指定页码、缩放、视图模式与搜索词还内置了面向无人值守场景的完整打印管线、DDE 控制通道以及 LaTeX 正反向搜索支持。本文以官方文档 Command-line-arguments.md 为核心骨架结合仓库源码与配套文档系统讲解 SumatraPDF 全部命令行选项的用法、底层实现与自动化技巧帮助你把它嵌入脚本、编辑器与 kiosk 场景。说明本文所述版本信息以当前仓库为准命令行打印等能力与 Windows 平台强相关且部分选项如-dbg-control依赖特定构建如 profile 构建或测试框架。命令行语法基础SumatraPDF 的通用调用形式为SumatraPDF [argument ...] [filepath ...]要点如下大多数选项以连字符-开头同时也兼容部分 Adobe Reader 的斜杠形式/p、/t、/A。部分选项后面会跟随附加参数。未被识别为已知选项的任何内容都被当作文件路径处理因此可以自由混合文件路径与命令行选项例如SumatraPDF -presentation report.pdf从源码看选项的注册表定义在 src/Flags.cpp 的Arg枚举与gArgNames字符串表中解析逻辑位于ParseFlags()src/Flags.cpp。GetArg()会将每个以-//开头的参数去前缀后与字符串表做大小写不敏感匹配未命中即进入CollectFile分支收集为文件路径src/Flags.cpp解析结果统一存入 src/Flags.h 的Flags结构体供后续启动流程消费。一个实用细节如果某个文件名恰好以-开头例如-notes.pdf由于它匹配不到任何已知选项也会被当作文件处理但此时该选项之后不能再跟参数否则参数会被吞掉。启动方式选项选项说明-presentation以演示模式启动-fullscreen以全屏模式启动-new-window每个文件在各自的新窗口中打开而不是在已有窗口的新标签页中打开3.2。多个文件参数时每个文件一个窗口-new-window-tabs打开一个新窗口并把所有文件作为标签页加载到该窗口中3.7issue #5044-appdata directory设置自定义目录用于存放SumatraPDF-settings.txt文件与缩略图缓存-restrict受限模式运行可禁用需要访问文件系统、注册表和网络的功能适合 kiosk 类场景详见 Configure for restricted use-for-testing供人类或 Agent 临时测试使用。始终启动新实例、不恢复会话只加载命令行给定的文件、不保存设置3.7-quicklook在无边框、始终置顶的预览窗口中打开文件Explorer 空格键预览。按 Esc 或 Space 关闭3.7修复 #2568-quicklook-agent以无 UI 方式运行隐藏的 Explorer 空格键辅助进程。当设置ExplorerQuickLook为 true 时自动启动3.7-dbg-control named-pipe在命名管道上启动测试控制服务器供自动化测试通过 tests/control.ts 使用常与-for-testing组合3.7。在 profile 构建中控制命令StartPerfLog/StopPerfLog可开启某段代码的函数计时日志WaitSessionRestored等待启动会话恢复标签页、选中文档、首次布局完成——因为-for-testing会跳过恢复-start-perf-log在 profile 构建bun cmd/build.ts -profile中立即开始记录函数进入/退出耗时。默认关闭。日志在退出时保存为 exe 旁的sumperf.txt或用-log-perf-file path指定路径-log-perf-file path把性能函数计时日志写到该路径而非默认的sumperf.txt3.7-dump-chm file无头方式打开 CHM 文件列出所含文件及大小、把每个文件解包到内存以验证可检索性并把 TOC/索引元数据打印到 stdout。若 CHM 无法打开、枚举或解包则以非零退出码退出-pwd password用给定密码打开受密码保护的文档。密码错误时SumatraPDF 会回退到默认密码最后再交互式询问与源码的对应关系以上选项在 src/Flags.cpp 中都有直接的处理分支。例如-restrict设置i.restrictedUse true-presentation/-fullscreen分别设置enterPresentation/enterFullScreen-new-window与-new-window-tabs写入inNewWindow/inNewWindowTabs-appdata写入appdataDir控制SumatraPDF-settings.txt与缩略图缓存的落盘位置-for-testing写入forTesting其语义新实例、不恢复会话、不保存设置在 src/Flags.h 中有完整注释。受限模式kiosk-restrict搭配同目录下的sumatrapdfrestrict.ini使用仓库根目录即提供了一份参考配置 sumatrapdfrestrict.ini。受限模式下会禁用打开新文件、从 PDF 内启动 URL、文本/图片选择、打印、更改默认设置、保存到磁盘、自动/手动更新检查、最近文件历史、TeX 预览支持、注册为默认 PDF 阅读器、用 Adobe Acrobat 打开、邮件发送 PDF 等能力。完整选项说明见 Configure for restricted use。导航选项以下选项均作用于命令行中的第一个文件若文档已经打开可配合-reuse-instance让已有实例响应。选项说明-named-dest destination-name在第一个文件中搜索与destination-name匹配的命名目标、目录项或3.1页面标签并将文档滚动到该位置-page pageNo将第一个文件滚动到指定页-view view-mode设置第一个文件的视图模式可选值见下表-zoom zoom-level设置第一个文件的缩放级别-scroll x,y将第一个文件滚动到给定坐标-search term打开文档时立即开始搜索指定词条3.4例如SumatraPDF -search foo bar.pdf。开头的-必须保留/A paramsAdobe Reader 兼容的打开参数3.5详见下文-view可用视图模式single page continuous single page facing continuous facing book view continuous book view含空格的选项值必须用双引号括起来。-zoom可选值支持fit page、fit width、fit height、fit content或任意百分比数值如125、75。从源码看ParseViewMode()通过DisplayModeFromString()将字符串映射为DisplayModesrc/Flags.cppParseZoomValue()则接受fit page/fit width/fit height/fit content的多种连写变体fitpage、fit-width等百分比数值会被解析为float小于 1 的值回退为实际大小src/Flags.cpp。Adobe Reader 兼容的/A参数/A params的params是由;、#或分隔的namevalue列表目前识别pagen跳转到第 n 页从 1 开始nameddestname跳转到命名目标searchterm开始搜索同-search例如SumatraPDF /A page1;searchmr Fox file.pdf同样的namevalue列表也可以附加在文件路径的?之后例如file.pdf?page4;searchfoo这一机制的底层实现是ParseFileArgs()它把?之后的部分提取出来交由ParseAdobeFlags()解析src/Flags.cpp。ParseAdobeFlags()还额外支持 Sumatra 自定义的annotattn附件型注释的 PDF 对象号与attachnon附件编号参数这些字段定义在 src/Flags.h 的FileArgs结构体中。通过 DDE 控制已运行实例-dde cmd发送 DDE 命令3.5SumatraPDF -dde [Open(C:\Users\kjk\foo.pdf)]向当前正在运行的实例发送 DDE 命令。参数必须正确加引号文件路径必须是绝对路径。DDE 命令的通用格式为[Command(parameter1, parameter2, ..., )]多个命令可拼接为[Command1(...)][Command2(...)][...]。-dde在源码中的处理见 src/Flags.cpp命令字符串存入Flags::dde后由启动流程转发给已注册为 DDE 服务器的实例。DDE 服务器名称为SUMATRA、主题为controlWindows API 调用示例见 src/base/Win.cpp 的DDEExecute()。常用 DDE 命令速览详见 DDE-Commands.md打开文件[Open(filePath[,newWindow,focus,forceRefresh])]正反向搜索TeX[ForwardSearch([pdffilepath,]sourcefilepath,line,column[,newwindow,setfocus])]跳转命名目标[GotoNamedDest(pdffilepath,destination name)]跳转页面[GotoPage(pdffilepath,page number)]搜索[Search(pdffilepath,search-term)]跨页继续并回绕定位页内词条3.7[GotoPageWord(pdffilepath,page number,search-term)]仅当该词出现在指定页时选中设置视图[SetView(pdffilepath,view mode,zoom level[,scrollX,scrollY])]其中 zoom 为 86400 的百分比或 -1Fit Page、-2Fit Width、-3Fit Content、-6Fit Height0 表示保持当前缩放查询文档状态DDE request[GetFileState(pdffilepath)]返回path/page/pageCount/zoom/view/sumver键值对列出打开文件[GetOpenFiles()]每行返回一个打开文档的完整路径DDE 命令中字符串里的与\需要用\转义例如[SetView(\c:\\file.pdf\,\continuous\,-3)]。DDE 方式也是 SumatraPDF 作为 LaTeX 编辑器预览工具的主要集成途径详见 LaTeX-integration.md。命令行打印选项完整的打印指南含常见任务示例见 Printing.md。命令行打印的核心选项如下选项说明-print-to-default把命令行中列出的所有文件打印到系统默认打印机打印完成后立即退出通过退出码判断失败-print-to printer-name把命令行中列出的所有文件打印到指定名称的打印机打印后立即退出。例如-print-to Microsoft XPS Document Writer把所有文件打到 XPS 虚拟打印机-print-settings settings-list与-print-to/-print-to-default组合使用无需打开打印对话框即可调整打印设置-silent与-print-to/-print-to-default组合静默命令行打印相关的错误消息-print-dialog为命令行中列出的所有文件弹出打印对话框/pAdobe Reader 兼容别名等价于-print-dialog/t file printerAdobe Reader 兼容的静默打印等价于-print-to printer file。可选的驱动与端口参数会被接受并忽略。若文件已在命令行中出现写/t printer即可-exit-when-done与-print-dialog及-stress-test组合使用打印对话框关闭且文档打印完成后退出-print-settings的底层处理在 src/Flags.cpp会先去掉字符串中的空格并把分号;统一转换为逗号,再存储因此两种分隔符都可以使用。-print-settings详细说明设置列表是逗号分隔的页面范围与高级选项组合页面范围单页5范围2-6也可反向10-8last最后一页负数表示从末尾倒数-1是最后一页-2是倒数第二页范围也可用负数如-3--1表示最后 3 页输出选项even或odd只打印偶数页或奇数页portrait或landscape提供内容的 90 度旋转不是纸张旋转纸张方向必须在打印机默认设置中预先设定disable-auto-rotation默认情况下宽大于高的页面会被旋转 90 度以适配纸张此选项按原始方向打印3.5 起可用rotatedegrees在自动旋转的基础上额外旋转90、180或270度。适合修正错误方向例如虚拟打印机上上下颠倒rotate180的输出noscale、shrink、fit、stretch缩放策略其中stretch在两个维度都填满纸张忽略宽高比center将页面在纸张上水平居中。配合noscale在页面小于纸张时有用例如信封或 A5 纸料送入居中的纸盒color或monochromecollate或nocollate多份打印时是否逐份排序1,2,3,1,2,3或不排序1,1,2,2,3,3duplex、duplexshort、duplexlong、simplex双面/单面打印binnum or name选择进纸盒。binauto让打印机自动选择纸张尺寸与文档页面匹配的进纸盒类似 Adobe 的 Choose paper source by PDF page sizepaperpage size纸张尺寸为A2、A3、A4、A5、A6、letter、legal、tabloid、statement或打印机报告的名称如A3 297 x 420 mm。自定义尺寸paper76mm x 130mm。混合页面尺寸的文档可用paperauto按每页自身尺寸设置纸张配合binauto同时选择匹配的纸盒paperkindnum按 WindowsDMPAPER_*ID 指定纸张值可从SumatraPDF.exe -list-printers获取当paperA3无法匹配驱动程序的纸张名称时使用ignore-pdf-print-settings不应用 PDF 内嵌的ViewerPreferences打印默认值见下文使用示例SumatraPDF -print-to-default -print-settings 1-3,5,10-8,odd,fit,bin2 file.pdf该命令打印第 1、3、5、9 页即范围 1-3、5-5 与 10-8 中的奇数页并按fit缩放使其适配纸张的可打印区域。SumatraPDF -print-to-default -print-settings 3x file.pdf把文档打印 3 份。PDF 内嵌打印默认值对于 PDF 文件文档ViewerPreferences中内嵌的打印默认值会被自动应用PrintScaling/None表示不缩放、NumCopies、DuplexSimplex/DuplexFlipShortEdge/DuplexFlipLongEdge以及PickTrayByPDFSize按页面尺寸选纸盒。-print-settings中任何显式设置都会覆盖 PDF 默认值若想完全忽略 PDF 内嵌值加上ignore-pdf-print-settings即可。退出码无人值守打印的成败判定使用-print-to/-print-to-default时进程退出码直接告诉你打印失败的原因非常适合无人值守/静默打印退出码含义0成功2无法打开文件未找到或不支持的格式3文档不允许打印4打印机指定或默认不存在5打印机驱动/设备失败6受限策略禁用了打印多个文件时退出码为0当且仅当全部打印成功否则返回第一次失败所属的类别。注意作业提交后发生在打印缓冲池/驱动内部的失败缺纸、脱机等无法通过此机制报告。这一设计在源码中有明确注释PrintResult枚举的数值同时充当进程退出码以便自动化调用方判断失败原因见 src/Print.h对应 issue #3478主程序在 src/SumatraPDF.cpp 中对每个文件调用PrintFile()并汇总结果。不支持的 Adobe Reader 标志以下 Adobe Reader 标志不被支持因为它们与 SumatraPDF 自身选项冲突/h在 Adobe 中是帮助而非隐藏模式/n在 Adobe 中是 stress-test 并行度而非新实例/s在 Adobe 中是静默打印错误而非抑制启动画面LaTeX 正反向搜索相关选项SumatraPDF 是 LaTeX 工作流中常用的 PDF 预览器以下选项服务于正向源码→PDF与反向PDF→源码搜索-forward-search sourcepath line pdfpath从 LaTeX 源文件对已加载的 PDF 执行正向搜索基于 PdfSync 或 SyncTeX是 ForwardSearch DDE 命令的替代方案。例如SumatraPDF -forward-search /path/to/main.tex 123 /path/to/main.pdf会高亮 main.tex 中第 123 行对应的所有文本。源码中该选项要求-forward-search或旧别名-fwdsearch后紧跟源路径与行号两个参数src/Flags.cpp其中AdditionalParam会拒绝任何看起来像选项的参数避免误吞。-reuse-instance让已打开的 SumatraPDF 实例加载指定文件。若同时有多个运行实例行为未定义。仅在需要通过 DDE 与 SumatraPDF 通信时才需要否则请使用ReuseInstance设置。-inverse-search command-line设置从 PDF 执行反向搜索通常回到 LaTeX 源文件所用的命令行。也可以在Set Inverse Search Command Line对话框Ctrl K命令面板中设置或在启用EnableTeXEnhancements后从Settings / Options中设置或通过高级设置InverseSearchCmdLine设置。命令行中使用%f表示当前文件名、%l表示当前行号。-fwdsearch-offset offset -fwdsearch-width width -fwdsearch-color hexcolor -fwdsearch-permanent flag自定义正向搜索高亮。将 offset 设为正数可把高亮样式改为页面左侧的矩形而不是覆盖所有文本的矩形。-fwdsearch-permanent的 flag 可为 0高亮淡出默认或 1持久高亮。已弃用请改用对应的高级设置。反向搜索与 SyncTeX 的完整配置流程可参考 LaTeX-integration.md。开发者与测试选项选项说明-console在 SumatraPDF 旁打开一个控制台窗口用于访问MuPDF调试输出-list-printers打印已安装打印机、默认设置、纸张尺寸与进纸盒后退出。用于选择-print-to、paper、paperkind或bin的值。配合-console或-silent时输出只进入控制台不弹对话框-stress-test path [file-filter] [range] [cycle-count]渲染指定文件/目录的所有页面以做稳定性与性能测试-html-backend ie\|webview2强制指定内嵌浏览器来显示 CHM 与 markdown 文档3.7。默认在已安装 WebView2 时使用 WebView2否则用 IE 控件此选项用于让测试覆盖两种情况-bench filepath [page-range]渲染给定文件的所有或指定页面输出渲染耗时用于性能测试与对比。常与-console配合-stress-test用法示例-stress-test file1.pdf 25x -stress-test file2.pdf 1-3 -stress-test dir *.pdf;*.xps 15- 3x第一个示例把 file1.pdf 渲染 25 次第二个示例只渲染 file2.pdf 的第 13 页第三个示例从目录dir中渲染除前 14 个之外的所有 PDF 和 XPS 文件每个渲染 3 次。-stress-test的解析顺序在 src/Flags.cpp 中路径后先检查含*的文件过滤器再检查页面范围最后检查以x结尾的循环次数页面范围还会经过IsValidPageRange()校验该函数底层即ParsePageRanges()src/Flags.cpp支持3、2-4、5-等写法。已弃用选项以下选项只是往设置文件中写入值可能在未来的任何版本中被移除选项说明替代设置-bg-color hexcolor把黄色背景改成其他颜色如-bg-color #999999改为灰色MainWindowBackground-esc-to-exit启用 Esc 键退出 SumatraPDFEscToExit-set-color-range text-hexcolor background-hexcolor用给定前景/背景两色映射文档中所有其他颜色如-set-color-range #dddddd #333333显示深灰底上的柔白文字FixedPageUI.TextColor与FixedPageUI.BackgroundColor-lang language-code设置界面语言如-lang de。可用语言代码见 src/TranslationLangs.cppUiLanguage-manga-mode mode启用/禁用漫画模式主要针对日式漫画从右到左阅读。mode 为 true 或 1 启用false 或 0 禁用ComicBookUI.CbxMangaMode-invert-colors本次运行临时交换固定页面文档的文本与背景颜色。旧别名-invertcolors同样被接受参见高级设置从源码看这些选项的处理方式是把参数名与值原样追加到Flags::globalPrefArgssrc/Flags.cpp之后由设置加载逻辑按旧的键值格式写入设置文件因此文档明确标注其仅用于兼容、应迁移到高级设置。组合实战场景1. 直接打开并定位SumatraPDF -reuse-instance -page 42 -view continuous book view -zoom fit width book.pdf已打开的实例会切到 book.pdf 第 42 页并应用连续书本视图 宽度适配。2. 无人值守静默打印结合退出码判断成败SumatraPDF -print-to-default -print-settings 1-3,5,10-8,odd,fit,bin2 -silent report.pdf echo %errorlevel%3. LaTeX 编辑器正向搜索SumatraPDF -reuse-instance -forward-search main.tex 123 main.pdf4. kiosk 演示机SumatraPDF -restrict -fullscreen -presentation slides.pdf配合同目录的sumatrapdfrestrict.ini即可锁住除翻页外的绝大部分操作。关键文件索引参数定义与解析 src/Flags.cpp、src/Flags.h打印结果/退出码定义 src/Print.h、src/Print.cppDDE 命令文档 DDE-Commands.md受限模式配置 sumatrapdfrestrict.ini、Configure for restricted use完整打印指南 Printing.mdLaTeX 集成 LaTeX-integration.md安装包命令行参数/S、/D等与本文所述运行期参数不同 Installer-cmd-line-arguments.md【免费下载链接】sumatrapdfSumatraPDF reader项目地址: https://gitcode.com/gh_mirrors/su/sumatrapdf创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表