ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

SumatraPDF 命令行工具完全指南:sumatrapdf-tool 与 SumatraPDF.exe 的 PDF 处理命令详解

SumatraPDF 命令行工具完全指南:sumatrapdf-tool 与 SumatraPDF.exe 的 PDF 处理命令详解 SumatraPDF 命令行工具完全指南sumatrapdf-tool 与 SumatraPDF.exe 的 PDF 处理命令详解【免费下载链接】sumatrapdfSumatraPDF reader项目地址: https://gitcode.com/gh_mirrors/su/sumatrapdfSumatraPDF 从预发布版 3.7 起内置了一套完整的命令行工具你既可以用控制台程序sumatrapdf-tool.exe也可以直接用便携版 GUI 程序SumatraPDF.exe以同样参数执行 PDF 合并、压缩、加密、解密、删页、抽页、文本检索、图片提取与格式转换等操作无需安装、无需额外解压。读完本文你将掌握 17 个内置子命令的完整用法与全部选项并能将它们直接写入批处理或脚本实现 PDF 处理的自动化工作流。sumatrapdf-tool.exe 与 SumatraPDF.exe 的区别安装 SumatraPDF 时安装程序会同时安装sumatrapdf-tool.exe并将其加入PATH。两者的核心区别在于程序子系统sumatrapdf-tool.exe是一个控制台程序console subsystem专为命令行与脚本使用而设计输出重定向到文件、管道接力等操作都能稳定工作。SumatraPDF.exe是GUI 程序Windows subsystem虽然也能执行同样的tool命令但在重定向输出或从脚本调用时表现不如控制台程序。从源码 src/sumatrapdf-tool.cpp 的注释可以确认这一设计意图Unlike SumatraPDF.exe - a GUI (Windows subsystem) app that cant write to a console or be piped reliably - this is a console subsystem app, so it behaves well under cmd.exe / PowerShell.便携版用户无需安装即可使用直接运行SumatraPDF.exe tool或先用-x参数从便携版中解出独立的sumatrapdf-tool.exe控制台二进制。两种方式均指向同一套工具实现。源码视角入口与分派逻辑sumatrapdf-tool.exe本身非常小巧。从 src/sumatrapdf-tool.cpp 可以看到它只负责参数解析与分派所有工具的真正实现都位于libsumatrapdf.dll工具实现导出自该 DLL因此可执行文件本身保持极小体积。具体调用链为main()先调用InstallEmbeddedFontLoader()加载随 SumatraPDF.exe 内置的字体见 src/EmbeddedResources.cpp通过CommandLineToArgvW()解析宽字符命令行再由fz_argv_from_wargv()转换为工具期望的 UTF-8 argv保证非 ANSI 代码页下的路径正确FindTool()在gTools表中按名称大小写不敏感查找工具命中后调用对应的xxx_main(argc, argv)函数如pdfclean_main、mudraw_main、mugrep_main这些函数声明于 src/sumatrapdf-tool.cpp并从 src/libsumatrapdf.def 导出。也就是说sumatrapdf-tool本质上是 MuPDF 官方命令行工具mutool 系在 SumatraPDF 项目中的嵌入式分发形式——底层引擎与mupdf源码目录ext/mupdf同源。快速上手我想做……速查表原文档 docs/md/Tools.md 提供了一张按目标反查工具的命令速查表是日常使用最频繁的入口目标工具 / 文档删除指定页面clean— Delete pages from PDF不知道总页数时删除最后一页clean input.pdf out.pdf 1-N-1N 最后一页抽取页面到新 PDFclean— Extract pages from PDF合并多个 PDFmerge— Tool merge在一个或多个 PDF 中搜索文本grep— Tool grep提取纯文本draw -tt或grep— Extract text from PDF提取嵌入图片extract— Extract images from PDF压缩 / 重写 PDFclean— Compress a PDF移除压缩流clean— Decompress a PDF为 PDF 加密码clean— Encrypt a PDF移除密码clean— Decrypt a PDF图片 / 其他格式转 PDFconvert/draw— Tool convert漫画/图片走 GUIConvert to PDF检查 PDF 结构info、show、pages— Tool info在 PDF 上运行 JavaScriptrun— Tool run其中删除页面操作也可在应用内完成按Ctrl K打开命令面板选择Delete Pages From PDF或通过右键菜单Document → Delete Pages From PDF。全部子命令一览统一的调用语法为sumatrapdf-tool.exe command [options]其中command取自 src/sumatrapdf-tool.cpp 中gTools表。注意源码中的注册表比文档列出的 16 个还多一个sign操作 PDF 数字签名与一个被编译开关FZ_ENABLE_JS保护的rundraw -- convert document convert -- convert document (with simpler options) audit -- produce usage stats from PDF files bake -- bake PDF form into static content clean -- rewrite PDF file create -- create PDF document extract -- extract font and image resources info -- show information about PDF resources merge -- merge pages from multiple PDF sources into a new PDF pages -- show information about PDF pages poster -- split large PDF page into many tiles recolor -- change colorspace of PDF document show -- show internal PDF objects trim -- trim PDF page contents grep -- search for text trace -- trace device calls run -- run a MuPDF JavaScript program其中draw、convert、grep、trace、run对任何文档类型PDF、EPUB、图片等都可用其余工具为 PDF 专用。源码中还通过宏FZ_ENABLE_PDF、FZ_ENABLE_JS、FZ_ENABLE_BARCODE当前为 0在编译期控制相关工具是否编入见 src/sumatrapdf-tool.cpp。各工具的详细文档见 docs/md/Tools.md 中的链接清单draw、convert、audit、bake、clean、extract、info、merge、pages、poster、recolor、show、trim、grep、trace、run以及 run JavaScript 示例 与 JavaScript API 参考draw文档转换与页面级操作draw是最通用的转换工具用法为sumatrapdf-tool draw [options] file [pages]可用于PDF 转图片 / HTML / SVG、页面抽取与删除、文本提取。典型用法示例假设foo.pdf有 8 页目标命令抽取第 2 页为 PNGsumatrapdf-tool draw -o foo-page-2.png -F png foo.pdf 2旋转页面sumatrapdf-tool draw -R 90 foo.pdf-R 90\|180\|270每页导出为一张 PNGsumatrapdf-tool draw -o foo-%d.png foo.pdf指定输出尺寸sumatrapdf-tool draw -o foo-%d.png -w 400 -h 800 foo.pdf按分辨率渲染默认 72 DPIsumatrapdf-tool draw -o foo-%d.png -r 300 foo.pdfPNG 转 PDFsumatrapdf-tool draw -o foo.pdf foo.pngPDF 转自包含 HTMLsumatrapdf-tool draw -o foo.html foo.pdfPDF 转自包含 SVGsumatrapdf-tool draw -o foo.svg foo.pdf提取全部文本sumatrapdf-tool draw -o foo.txt foo.pdf提取结构化文本XMLsumatrapdf-tool draw -o foo.stext foo.pdf提取结构化文本JSONsumatrapdf-tool draw -o foo.stext.json -F stext.json foo.pdf抽第 2 页为独立 PDFsumatrapdf-tool draw -o foo-page-2.pdf foo.pdf 2抽 1、2、7、8 页为独立文件sumatrapdf-tool draw -o foo-page-%d.pdf foo.pdf 1-2,7,8删除第 3 页sumatrapdf-tool draw -o foo-3rd-page-deleted.pdf foo.pdf 1-2,4-8-o中的%d会被替换为页码%03d等 printf 修饰符同样可用未提供-o时输出到 stdout。关于结构化文本PDF 中的文本本质是按(x,y)坐标排布的字体字形因此文本提取依赖启发式算法去还原单词与行。结构化文本stext则输出每个字符的字体、字形、坐标与包围盒便于程序化加工。XML 输出形如font nameCharisSIL size7.9701 char quad187.4652 295.9985 191.96033 295.9985 187.4652 301.9683 191.96033 301.9683 x187.4652 y301.871 bidi0 color#000000 alpha#ff flags16 cd/输出格式与全部选项-F指定输出格式默认根据输出文件名推断支持的格式族见 docs/md/Tool-draw.md栅格png、pnm、pam、pbm、pkm、pwg、pcl、ps、pdf、j2k矢量svg、pdf、trace、ocr.trace文本txt、html、xhtml、stext、stext.jsonOCR 文本ocr.txt、ocr.html、ocr.xhtml、ocr.stext、ocr.stext.json当前禁用位图包裹为 PDFpclm、ocr.pdf常用选项速查usage: SumatraPDF draw [options] file [pages] -p - password -o - output file name (%d for page number) -F - output format (default inferred from output file name) -q be quiet (dont print progress messages) -s - show extra information: m - show memory use; t - show timings f - show page features; 5 - show md5 checksum of rendered image -R - rotate clockwise (default: 0 degrees) -r - resolution in dpi (default: 72) -w - width (in pixels) (maximum width if -r is specified) -h - height (in pixels) (maximum height if -r is specified) -f fit width and/or height exactly; ignore original aspect ratio -b - use named page box (MediaBox, CropBox, BleedBox, TrimBox, or ArtBox) -B - maximum band_height (pXm, pcl, pclm, ocr.pdf, ps, psd and png output only) -T - maximum number of rendering threads (banded mode only) -W - page width for EPUB layout -H - page height for EPUB layout -S - font size for EPUB layout -U - file name of user stylesheet for EPUB layout -X disable document styles for EPUB layout -a disable usage of accelerator file -c - colorspace (mono, gray, grayalpha, rgb, rgba, cmyk, cmykalpha, filename of ICC profile) -e - proof icc profile (filename of ICC profile) -G - apply gamma correction -I invert colors -A - number of bits of antialiasing (0 to 8), e.g. -A 2/2 for graphics/text -l - minimum stroked line width (in pixels) -K do not draw text; -KK only draw text -D disable use of display list -i ignore errors -m - limit memory usage in bytes -L low memory mode (avoid caching, clear objects after each page) -P parallel interpretation/rendering -N disable ICC workflow (No color management) -O - Control spot/overprint rendering: 0 none, 1 overprint simulation (default), 2 full spot -t - language/script for OCR (default: eng) (disabled) -d - path for OCR files (disabled) -k - Skew correction options (disabled) -y l list layer configs to stderr; -y - select layer config by number -Y list individual layers; -z - hide layer; -Z - show layer pages comma separated list of page numbers and rangesconvert更简单的转换入口convert与draw功能重叠但选项更精简适合常见转换场景。输出格式同样由文件扩展名推断或用-F显式指定。输出文件名用-o给出%d代表页码不传-o则输出到 stdout。# 每页转一张 PNG sumatrapdf-tool convert -o page%d.png input.pdf # 转纯文本 sumatrapdf-tool convert -o out.txt input.pdf # 仅 1-5 页合并为一个 CBZ sumatrapdf-tool convert -o out.cbz input.pdf 1-5 # 以 300 DPI 栅格化输出 sumatrapdf-tool convert -o page%d.png -O resolution300 input.pdf # 单张 PNG 转 PDF sumatrapdf-tool convert -o output.pdf input.png # 文本文件转 PDF sumatrapdf-tool convert -o output.pdf input.txtconvert支持-O参数以逗号分隔的键值对细调输出格式例如栅格输出的rotateN、resolutionN、widthN、heightN、colorspace(gray|rgb|cmyk)、alpha、graphics(aaN|cop|app)、text(aaN|cop|app)PDF 输出的compressyes|flate|brotli、compress-fonts、compress-images、garbagecompact|deduplicate、incremental、objstms、encryptrc4-40|rc4-128|aes-128|aes-256、user-passwordPASSWORD、owner-passwordPASSWORD等。完整选项见 docs/md/Tool-convert.md其中包括 PCL、PCLm、PWG 打印机格式与 SVG 输出的大量专属参数。clean重写 PDF压缩 / 解压 / 加解密 / 页面操作 / 修复clean是重写 PDF 语法的瑞士军刀用法为sumatrapdf-tool clean [options] input.pdf [output.pdf] [pages]可完成压缩、解压、加密、解密、抽取/删除页面以及修复结构损坏的 PDF重写常能修复结构性问题。不指定输出文件时默认写入out.pdf。四个最常见场景# 压缩最激进参数组合 sumatrapdf-tool clean -gggg -e 100 -f -i -t -Z foo.pdf foo-compressed.pdf # 解压便于检查结构 sumatrapdf-tool clean -d foo.pdf foo-decompressed.pdf # 加密用户需输入密码 pwd 才能打开 sumatrapdf-tool clean -E aes-256 -U pwd foo.pdf foo-encrypted.pdf # 解密 sumatrapdf-tool clean -D -p pwd foo-encrypted.pdf foo-decrypted.pdf页面抽取与删除# 抽取第 1、3、4、5 页为新 PDF sumatrapdf-tool clean input.pdf output.pdf 1,3-5 # 删除第 4 页保留 1-3 与 5 到最后一页 sumatrapdf-tool clean input.pdf output.pdf 1-3,5-N这里N是特殊字符代表最后一页因此删除最后一页可以写成clean input.pdf out.pdf 1-N-1。抽取与删除本质是同一操作——抽取时指定要保留的页面删除则只需列出除目标页之外的所有页。若 PDF 未压缩压缩后通常更小若已高度压缩则效果有限。对应 GUI 操作位于命令面板Ctrl K与右键菜单Document下的 Compress PDF、Decompress PDF、Encrypt PDF、Decrypt PDF、Extract Pages From PDF、Delete Pages From PDF。全部选项Usage: SumatraPDF clean [options] input.pdf [output.pdf] [pages] -p - password -g garbage collect unused objects -gg in addition to -g compact xref table -ggg in addition to -gg merge duplicate objects -gggg in addition to -ggg check streams for duplication -D save file without encryption -E - save file with new encryption (rc4-40, rc4-128, aes-128, or aes-256) -O - owner password (only if encrypting) -U - user password (only if encrypting) -P - permission flags (only if encrypting) -a ascii hex encode binary streams -d decompress streams -z deflate uncompressed streams -e - compression effort (0 default, 1 min, 100 max) -f compress font streams -i compress image streams -c clean content streams -s sanitize content streams -t compact object syntax -tt indented object syntax -L write object labels -v vectorize text -A create appearance streams for annotations -AA recreate appearance streams for annotations -m preserve metadata -S subset fonts if possible [EXPERIMENTAL!] -Z use objstms if possible for extra compression --{color,gray,bitonal}-{,lossy-,lossless-}image-subsample-method - average, bicubic --{color,gray,bitonal}-{,lossy-,lossless-}image-subsample-dpi -[,-] DPI at which to subsample [ target dpi] --{color,gray,bitonal}-{,lossy-,lossless-}image-recompress-method -[:quality] never, same, lossless, jpeg, j2k, fax, jbig2 --recompress-images-when - smaller (default), always --structurekeep|drop Keep or drop the structure tree pages comma separated list of page numbers and ranges压缩命令中-gggg执行四档垃圾收集收集未用对象 → 压缩 xref 表 → 合并重复对象 → 检查流重复-e 100表示最大压缩力度-f/-i压缩字体流与图像流-t紧凑化对象语法-Z尽量使用对象流。加密时-E可选rc4-40、rc4-128、aes-128、aes-256四种算法-O/-U分别设置所有者密码编辑权限与用户密码打开文档-P设置权限位。grep命令行全文检索grep在一个或多个 PDF 中搜索文本用法为sumatrapdf-tool grep [options] pattern input.pdf [input2.pdf ...]。由于 PDF 文本往往带连字符断行、合字与重音符号该工具内置了相应的搜索选项。# 大小写不敏感搜索推荐默认 sumatrapdf-tool grep -i foo file.pdf # 正则搜索匹配所有以 x 开头的字符串 sumatrapdf-tool grep -i -G x.* file.pdf # 多文件搜索同时输出文件名与页码 sumatrapdf-tool grep -i -n -H foo file.pdf file2.pdf关键选项-G将搜索模式解释为正则表达式-a忽略重音变音符-n打印每个匹配所在页码-H打印每个匹配所在文件名多文件搜索时很有用-[与-]用起始/结束标记包裹每个匹配便于在行内定位-S逗号分隔的搜索选项exact、ignore-case、ignore-diacritics、regexp、keep-lines、keep-paragraphs、keep-hyphens-O逗号分隔的 stext 选项与draw/convert的结构化文本选项一致如preserve-ligatures、dehyphenate、accurate-bboxes、table-hunt等完整列表见 docs/md/Tool-grep.md-b逆序搜索页面-v详细输出-q静默extract提取嵌入图片与字体extract把 PDF 中嵌入的图片和字体文件保存到磁盘保存到 PDF 所在目录用法为sumatrapdf-tool extract [options] file.pdf [object numbers]。不给对象号时提取全部图片与字体。# 提取全部图片 sumatrapdf-tool extract input.pdf # 先列出图片对象号 sumatrapdf-tool info -I input.pdfinfo -I的输出形如Images (9): 1 (1189 0 R): [ Flate ] 400x300 8bpc DevRGB (3 0 R) 1 (1189 0 R): [ Flate ] 602x250 8bpc DevRGB (10 0 R)其中(1189 0 R)是该图片所在页的对象号(3 0 R)、(10 0 R)才是图片自身的对象号。随后按对象号精确提取sumatrapdf-tool extract input.pdf 3 15文件按image-对象号.扩展名命名扩展名由实际编码决定JPEG 图片存为.jpg。其余选项-p密码、-r将图片转为 RGB、-a将 SMask 作为 alpha 通道嵌入、-N不使用 ICC 色彩转换。info盘点 PDF 内部对象info按页列出 PDF 中的对象字体、图片、图案、着色、XObject 等每个对象带对象号用法为sumatrapdf-tool info [options] file.pdf [pages]。默认列出全部支持类型不提供pages列表时检查全部页面。可用过滤器-F仅列字体-I仅列图片-M列尺寸-P列图案-S列着色shadings-X列 form 与 PostScript XObject-Z列 ZUGFeRD 信息merge多文件合并merge从两个或多个文件挑选页面合并为单一输出 PDF用法为sumatrapdf-tool merge [-o output.pdf] [-O options] input.pdf [pages] [input2.pdf] [pages2] ...。每个输入文件后可跟逗号分隔的页码与范围首页为 1末页为 N省略页码列表则使用该文件全部页面。# 取 a.pdf 的 1-3 页与 b.pdf 的第 5 页 sumatrapdf-tool merge -o merged.pdf a.pdf 1-3 b.pdf 5不指定-o时输出到out.pdf。-O支持的 PDF 输出选项与convert/clean一致compressyes|flate|brotli、garbagecompact|deduplicate、incremental、objstms、encrypt...、user-password、owner-password等完整列表见 docs/md/Tool-merge.md。pages查看页面盒子与旋转pages以 XML 格式列出每页的盒子尺寸MediaBox、CropBox、TrimBox 等、旋转与 UserUnit用法为sumatrapdf-tool pages [options] file.pdf [pages]page pagenum1 MediaBox l0 b0 r595.28 t841.89 / CropBox l85.0394 b109.134 r510.241 t732.756 / TrimBox l113.386 b137.48 r481.894 t704.41 / Rotate v0 / /pageposter大页面切块打印poster把大尺寸 PDF 页面分割为多个瓦片tile页面用于放大打印后拼接。-x/-y指定每页在水平/垂直方向切成几块-m在相邻瓦片间添加重叠边距单位磅或百分比便于对齐粘合-r从右到左分割# 每页放大为 2×2 共 4 页打印 sumatrapdf-tool poster -x 2 -y 2 input.pdf output.pdfrecolor改变色彩空间recolor改变 PDF 的色彩空间用法为sumatrapdf-tool recolor [options] input filename。-c指定输出色彩空间gray默认、rgb、cmyk-r同时移除文件中的 OutputIntent嵌入色彩配置文件-o指定输出文件。sumatrapdf-tool recolor -o output.pdf -c gray input.pdfshow深入 PDF 内部结构show是面向高级用户的 PDF 结构检查工具用法为sumatrapdf-tool show [options] file.pdf ( trailer | xref | pages | grep | outline | js | form | path ) *。它把请求的对象与流打印到标准输出流默认解码不可打印字节显示为句点。可用关键字trailer— trailer 字典xref— 交叉引用表pages— 每页的对象号grep— 所有对象的紧凑单行格式便于管道给grepoutline— 文档大纲书签/目录js— 文档级 JavaScriptform— 表单对象path— 指向具体对象的路径对象路径Object paths路径以对象号或关键字trailer、pages开头用.或/深入对象pages/N选择第 N 页首页为 1*遍历数组索引或字典属性。几个高价值示例# 查询文档页数 sumatrapdf-tool show input.pdf trailer/Root/Pages/Count # 打印第一页内容流-b 输出原始字节 sumatrapdf-tool show -b input.pdf pages/1/Contents # 打印每页所用字体的 BaseFont 名称 sumatrapdf-tool show input.pdf pages/*/Resources/Font/*/BaseFont # 列出所有 JPEG 压缩流配合 grep 过滤 sumatrapdf-tool show input.pdf grep | grep /Filter/DCTDecode其余选项-o输出文件、-e保留流原始形式、-b仅输出流内容原始二进制、-g每对象一行便于 grep、-r显示前强制修复、-L显示对象标签。trim裁剪页面内容trim裁剪指定盒子以外的内容用法为sumatrapdf-tool trim [options] input filename。PDF 页面有 MediaBox、CropBox、BleedBox、TrimBox、ArtBox 五种盒子定义页面内的矩形区域可先用pages查看。-b选择盒子默认 MediaBox-m添加边距——单个值作用于四边两个值V,H分别为垂直/水平四个值T,R,B,L分别为上右下左正值向内、负值向外。-e反向操作删除盒子内部内容-f在指定盒子不存在时回退到 MediaBox。# 按 MediaBox 向内 200 磅裁剪 sumatrapdf-tool trim -b mediabox -m 200 -o out.pdf in.pdf # 上下 20 磅、左右 30 磅 sumatrapdf-tool trim -b mediabox -m 20,30 -o out.pdf in.pdf # 四边各自独立边距 sumatrapdf-tool trim -b mediabox -m 10,10,50,20 -o out.pdf in.pdf # 删除 ArtBox 内部内容保留外部 sumatrapdf-tool trim -b artbox -e -o out.pdf in.pdfauditPDF 文件格式审计audit生成一份 HTML 报告从三个维度剖析 PDF 文件对象数据与存储开销的占比含对象流内外、各类对象的空间占用分布、内容流中每个图形操作符的使用频率。报告的数值是指示性的而非 100% 精确且需要读者对 PDF 格式有一定了解。sumatrapdf-tool audit -o report.html .\foo.pdf生成后在浏览器中打开report.html即可查看。bake把注解与表单固化为静态内容bake把 PDF 中的注解annotations与表单控件widgets/表单字段转换为常规的静态页面内容用法为sumatrapdf-tool bake [options] input.pdf [output.pdf]。默认同时固化注解与表单字段-A保留注解为注解不固化-F保持表单可交互-O传入逗号分隔的输出选项。不指定输出文件时写入out.pdf。trace追踪渲染设备调用trace输出渲染一页时所有设备调用路径填充与描边、文本跨度、图片、裁剪等的 XML 追踪根元素为文档每页一个子元素页内每个设备调用一个元素。输出体积非常大可用于深入分析页面绘制流程?xml version1.0? document filename...pdf page number1 mediabox0 0 409 684 set_default_colorspaces grayDeviceGray rgbDeviceRGB cmykDeviceCMYK oiNone/ group bbox0 0 409 684 isolated1 knockout0 blendmodeNormal alpha1 ignore_text transform.17986 0 0 -.17986 0 684 span fontCourier wmode0 bidi0 trm231.11 0 0 231.11 g unicodeP glyphP x688 y3173 adv.6/ ...选项-p密码、-b页面盒子、EPUB 排版四件套-W/-H/-S/-U/-X、-d使用显示列表display list、pages页面范围。run运行 MuPDF JavaScript 程序run执行 JavaScript 脚本获得对 PDF及其他文档的编程式访问能力——读取/编辑页面、注解与元数据、渲染图片、提取文本等用法为sumatrapdf-tool run script.js [arguments...]。它与 MuPDF 官方mutool run使用同一套脚本引擎详细示例见 run JavaScript 示例完整 API 见 JavaScript API 参考。最小脚本与文档访问// hello.js print(hello from sumatrapdf-tool run);// pages.js打印文档页数 var doc Document.openDocument(scriptArgs[0]); print(doc.countPages() pages);sumatrapdf-tool run hello.js sumatrapdf-tool run pages.js file.pdf脚本参数运行sumatrapdf-tool run script.js a b c时脚本可读取scriptPath— 脚本自身路径script.jsscriptArgs— 脚本名之后的参数数组[a, b, c]process.argv— Node 兼容的完整参数数组含程序名与脚本路径交互式 REPL 与 stdin不带脚本运行sumatrapdf-tool run进入交互式求值循环显示提示符逐行求值并打印结果sumatrapdf-tool run 1 2 3 var doc Document.openDocument(file.pdf) doc.countPages() 21按Ctrl Z再回车输入结束退出或调用quit()。REPL 也读取 stdin因此可以整体管道输入程序echo print(6*7) | sumatrapdf-tool runreadline()从标准输入读一行让脚本可被管道或键入驱动3.7 新增对应 issue #5665 场景// echo.js var line readline(); print(you typed: line);echo hello | sumatrapdf-tool run echo.js内置函数除 MuPDF API 外脚本环境还提供以下全局函数print(...)— 打印参数并换行write(...)— 打印参数但不换行read(filename)— 读取文件并以字符串返回内容readline()— 从标准输入读一行repr(value)— 返回值的字符串表示load(filename)— 加载并执行另一个脚本文件gc()— 运行垃圾收集器quit(code)— 退出程序脚本化与自动化实战建议由于sumatrapdf-tool.exe是控制台程序它天然适合写入批处理.bat与 PowerShell 脚本。几个实用组合# 批量把目录下所有 PDF 转成 PNG每页一图 for %%f in (*.pdf) do sumatrapdf-tool convert -o %%~nf-page%%d.png %%f # 批量压缩后清理原文件谨慎使用 sumatrapdf-tool clean -gggg -e 100 -f -i -t -Z big.pdf big-compressed.pdf # 从多份 PDF 抽取关键页合并为一份 sumatrapdf-tool merge -o report.pdf a.pdf 1-3 b.pdf 5 c.pdf 1-N # 批量检索一批 PDF 是否包含某关键词 sumatrapdf-tool grep -i -n -H keyword *.pdf需要提醒的是压缩仅对未压缩的 PDF 有明显效果clean重写对结构损坏的 PDF 有修复作用所有涉及加密解密的操作中-p参数直接暴露在命令行上注意脚本本身的安全管理。进一步阅读本文全部命令的原始出处docs/md/Tools.md各子命令完整文档见 docs/md/Tool-draw.md、docs/md/Tool-convert.md、docs/md/Tool-clean.md、docs/md/Tool-grep.md、docs/md/Tool-extract.md、docs/md/Tool-info.md、docs/md/Tool-merge.md、docs/md/Tool-pages.md、docs/md/Tool-poster.md、docs/md/Tool-recolor.md、docs/md/Tool-show.md、docs/md/Tool-trim.md、docs/md/Tool-audit.md、docs/md/Tool-bake.md、docs/md/Tool-trace.md、docs/md/Tool-run.md按使用场景组织的实操文档docs/md/Tool-x-delete-pages-from-pdf.md、docs/md/Tool-x-extract-pages-from-pdf.md、docs/md/Tool-x-compress-pdf.md、docs/md/Tool-x-decompress-pdf.md、docs/md/Tool-x-encrypt-pdf-with-password.md、docs/md/Tool-x-decrypt-pdf.md、docs/md/Tool-x-extract-text-from-pdf.md、docs/md/Tool-x-extract-images-from-pdf.md、docs/md/Tool-x-search-pdf.md、docs/md/Tool-x-convert-png-to-pdf.md、docs/md/Tool-x-convert-text-to-pdf.md命令行实现入口src/sumatrapdf-tool.cpp、DLL 导出表src/libsumatrapdf.defGUI 内对应的命令面板操作docs/md/Command-Palette.md【免费下载链接】sumatrapdfSumatraPDF reader项目地址: https://gitcode.com/gh_mirrors/su/sumatrapdf创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表