上周帮同事收拾一份108页的投标文件,前面96页是规规矩矩的A4,最后硬塞进来几张A3施工图。在屏幕上看挺正常,一送进打印店就出事了:A4那部分被缩成了巴掌大,A3那几张又被裁掉了图框边。同一份PDF文件内部页面大小不一致,是排版交付前最容易被忽略的一颗雷。更让人抓狂的是另一件事——本来顺手就能用的福昕PDF编辑器右键菜单项,某天开机后全没了,右键点一个PDF文件,只剩下系统的"打开方式"。
这两件事看着八竿子打不着,其实都指向同一个问题:我们把工具当成了"装完就该一直好用"的黑盒,既不清楚它内部的数据结构长什么样,也不清楚它在系统里挂了哪些钩子。这篇文章就按我自己踩过坑的顺序,把"PDF内部页面尺寸不一致"和"福昕PDF编辑器右键菜单项缺失"这两件事拆开讲透。前者讲怎么查出哪几页不对、三条统一路线的适用边界、脚本怎么写;后者讲右键菜单项到底注册在哪里、从Windows 11折叠菜单一路查到Shell扩展的完整排查链路。手上有几十上百页文档要处理的人、经常给客户发PDF的人、以及被右键菜单突然消失搞懵的人,都能直接抄作业。
1. 一份PDF里混着A4和A3,是谁"惯"出来的
很多人第一反应是"这文件坏了"。绝大多数情况下文件没坏,只是从生成那一刻起,页面尺寸就没被统一过。PDF规范里,每一页都独立带一套页面框(Page Box)参数,页与页之间互不约束。这意味着把十个来源不同的PDF合并起来,得到的就是一个十种尺寸的大杂烩,阅读器不会帮你自动对齐,也不会给你任何提示。
1.1 页面尺寸打架的四种常见来源
第一种是多来源合并,也是最常见的。扫描仪扫出来的合同是A4,设计院发来的图纸是A3甚至A2,财务系统导出的对账单是针式打印机的连续纸宽度(常见241×140mm这种非标准值),三份合到一起就是三种尺寸。合并工具只负责把页对象按顺序塞进去,不会做任何归一化。
第二种是打印驱动差异。同一个文件在不同机器上"打印到PDF",结果可能不一样。英文环境下虚拟打印机默认纸张是Letter(216×279mm),中文环境默认A4(210×297mm),还有一批驱动会记住"上次用过的纸张尺寸"。我见过最离谱的一份文件,是因为机器上装过某款标签打印机,默认纸张被改成了100×150mm,之后所有"打印到PDF"都按这个尺寸走,直到有人发现。
第三种是网页和长图另存。浏览器"打印网页为PDF"时,页面宽度是按CSS像素换算过来的,很容易产出816×1056pt这种既不等于A4也不等于Letter的怪数字。手机截长图导出的PDF更夸张,宽度可能只有300pt出头,高度却有好几千pt。
第四种是二次加工留下的痕迹。有人用裁剪工具把白边裁掉了,只改了CropBox没改MediaBox;有人用"插入页面"把附件拼接进来,各页的页面框原点还带着偏移。还有一些PDF是从CAD里导出后再被别人缩放过一次,内容缩了、页面框没缩,结果就是"页面挺大,里面字小得像蚂蚁"。
1.2 屏幕上看着一样大,打印时才翻车的原因
理解这一节,需要知道PDF里两个核心的框:MediaBox和CropBox。MediaBox定义的是物理页面边界,也就是"这张纸多大";CropBox定义的是"显示和打印哪一块区域",默认和MediaBox相同。阅读器渲染时以CropBox为准,同时把页面自动缩放适配到窗口里。所以你在一屏之内翻页,A4和A3看起来一样大——阅读器在替你做缩放,这份"善意"恰恰掩盖了问题。
打印是另一套逻辑。打印机只认物理纸张,驱动拿到一个A3尺寸的页面要往A4纸上打,只有两种选择:整体缩小以适应,或者直接裁切。前者把A3内容压成A4,图上的标注、线宽、字号全部失真;后者更狠,超出纸张的部分直接丢,图框、图号、签字栏说没就没。如果文档里有横竖混排(有些页带90度旋转,有些没有),打印出来还会出现"一半页面躺着、一半页面站着"的情况。
还有个更隐蔽的坑:CropBox原点不为0。正常页面的框是0 0 595 842,有些加工过的页面是30 -12 625 830这种带偏移的值。你在阅读器里看不出区别,但一旦用脚本按"宽高"去重排,内容就会整体跑偏,甚至跑到页面外。这也是为什么我从来不建议"看到尺寸不对就盲目重排",一定要先把每一页的框读出来看一遍。
2. 动手改之前,先给PDF做一次尺寸体检
改尺寸这件事,最忌讳的就是打开编辑器直接一刀切。我有一次图省事,把一份200页的技术手册全按A4重排,结果发现其中有30页原本是横向A4(内容本身就是横的),重排之后内容被压在纵向页面中间,上下留出大片空白,反而更难看了。后来我给自己定了个规矩:先出体检报告,再决定动哪几页。
2.1 福昕里的三个查看入口,哪个最靠谱
福昕PDF编辑器里能看到页面尺寸的地方有三个。第一个是文件 → 属性 → 描述,里面有一行"页面大小",但它只显示第一页的值,对于尺寸不统一的文件,这一行信息基本没用,只能骗自己。
第二个是页面管理 → 页面尺寸对话框。打开之后,宽高输入框里默认填的是当前页的数值。这个入口的好处是准确,坏处是要一页一页翻着看。几十页还能忍,上百页就纯属折磨了。
第三个是缩略图面板配合打印预览。缩略图面板虽然会把所有页缩成同样大小的方块,但如果你注意看页面的横竖比例,横向页和纵向页是一眼能分辨的——这一招用来定位"方向混排"特别快。真正的尺寸差异,还是得靠打印预览,因为打印预览是按物理纸张比例渲染的,A3页在A4纸张下的那种"被压缩感"骗不了人。
提示:不同版本的福昕,菜单叫法有差异,"页面尺寸""调整页面大小""设置页面大小"可能是同一个功能。找不到时直接在右上角的命令搜索框里输入"页面尺寸"四个字,比在菜单里翻快得多。
2.2 用 qpdf 和 Python 把每页尺寸一次列清
真正高效的体检方式是命令行。装了qpdf之后,一条命令就能把所有页的页面框打出来:
qpdf --show-pages mixed.pdf输出里每一页都会带一行MediaBox,形如0 0 595.276 841.89。如果页数很多看着眼花,用JSON输出更规整,方便丢给别的工具处理:
qpdf --json mixed.pdf > pages.json顺便说一句,poppler里的pdfinfo只能告诉你总页数和第一页尺寸,用来做尺寸体检是不够的,别指望它。
Python这边我更习惯用PyMuPDF,因为它能同时读出MediaBox、CropBox和旋转角度,一次把可疑项全暴露出来:
import fitz doc = fitz.open("mixed.pdf") seen = {} for page in doc: mb = page.mediabox # 物理页面框 cb = page.cropbox # 显示/打印框 r = page.rect # 已考虑旋转后的可见矩形 key = (round(mb.width), round(mb.height)) seen.setdefault(key, []).append(page.number + 1) flag = "" if abs(cb.x0) > 1 or abs(cb.y0) > 1: flag += " [框原点有偏移]" if page.rotation: flag += " [旋转%d度]" % page.rotation print("第%3d页 MediaBox %.1f x %.1f CropBox %.1f x %.1f%s" % (page.number + 1, mb.width, mb.height, cb.width, cb.height, flag)) print("\n尺寸分布:") for k, v in seen.items(): print("%s pt 共%d页 页码:%s" % (k, len(v), v if len(v) <= 20 else v[:20] + ["..."]))最后那段"尺寸分布"是整份脚本里最有价值的部分。它直接把"这份文件里有几种尺寸、各占多少页、具体是哪些页"列成清单,你拿着这个清单去决定改哪几页,而不是稀里糊涂全改。
2.3 尺寸点数换算表与"看着不对"的判断标准
PDF内部单位是点(pt),1pt = 1/72英寸,换算成毫米就是毫米 = 点 / 72 * 25.4。我心里有一张常用的对照表,看到点数马上能反应出是什么纸:
| 点数(宽×高) | 毫米(宽×高) | 对应纸张 | 常见来源 |
|---|---|---|---|
| 595.28 × 841.89 | 210 × 297 | A4 | 办公文档、扫描件 |
| 841.89 × 1190.55 | 297 × 420 | A3 | 图纸、折页 |
| 612 × 792 | 215.9 × 279.4 | Letter | 英文环境虚拟打印 |
| 419.53 × 595.28 | 148 × 210 | A5 | 手册、小册子 |
| 1190.55 × 1683.78 | 420 × 594 | A2 | 大幅图纸 |
| 960 × 540 | 338.7 × 190.5 | 非标准 | 幻灯片按16:9导出 |
| 816 × 1056 | 287.9 × 372.5 | 非标准 | 网页打印为PDF |
判断"看着不对"的标准其实很简单:只要同一份文件里出现了两种以上宽度或两种以上高度,就不适合直接拿去印刷装订。同一宽高但旋转角度不同的,属于"方向混排",也得单独处理。另外,宽高比异常(比如接近正方形或者细长条)的页面,基本都是网页导出或截图拼进去的,这类页面即使尺寸改对了,内容通常也需要重新落版。
3. 统一页面尺寸的三条路线,各有各的适用边界
把体检报告拿到手之后,真正的问题来了:怎么改。福昕这类编辑器一般会给两三个可选的操作方式,看着都是"统一尺寸",实际效果差别很大。我把它归纳成三条路线,选错了轻则白干,重则把内容搞坏。
3.1 路线一:只改页面框,不碰内容
这条路线的意思是把MediaBox(必要时连CropBox)改成目标尺寸,页面上的内容一个像素都不动。在福昕的"页面尺寸"对话框里,对应的是把"缩放内容"相关选项设为不缩放。
什么时候该用这条路线?页面框比内容大、四周有大片空白的情况。比如扫描时纸张没放正,扫出来是595×900pt,下面多出一截白边,改成标准A4之后内容还是在原位,白边被裁掉,视觉上反而更整齐。
什么时候绝对不能这么干?页面框比内容小的时候。A3的图纸,页面框直接改成A4,等于用剪刀把图框右半边剪掉了——内容不会自动缩小,它是真的会被裁。
用脚本走这条路线的写法也很直接:
import fitz A4_W, A4_H = 595.28, 841.89 doc = fitz.open("mixed.pdf") for page in doc: # 只改页面框,内容位置和比例完全不动 page.set_mediabox(fitz.Rect(0, 0, A4_W, A4_H)) doc.save("box_only.pdf", garbage=4, deflate=True)注意:如果原页面的CropBox原点有偏移(比如
30 -12 625 830),直接set_mediabox会让内容整体位移。稳妥的做法是先把CropBox归零到内容边界,再改MediaBox。改之前务必留一份原始文件。
3.2 路线二:等比缩放内容重新落版
这是我用得最多的一条路线,适合扫描件、图纸、截图这类"内容必须完整保留、尺寸必须统一"的场景。思路是新建一个目标尺寸的空白页,把原页内容按比例缩放着贴进去,整体居中。
计算逻辑不复杂,但要处理三个细节:缩放系数取宽高两个比例中的较小值(这样才能保证内容完整、不会被裁)、留白居中而不是贴左上角(贴左上角印出来像是排版事故)、原页带旋转时宽高要交换(旋转90度的页,可见宽高和MediaBox的宽高正好相反)。
在福昕里,这条路线对应"页面尺寸"对话框里的缩放内容选项,或者走"打印生产"面板里的裁剪/设置页面框配合打印缩放。参数上我一般是这么定的:缩放系数小于0.6时我会停下来想一想——缩到这个程度,180号图纸上的小字基本就糊成一团了,这时候宁可保持A3原尺寸,改成分页打印,也不要硬塞进A4。
还有一个容易被忽略的副作用:缩放会改变线宽和字号的实际尺寸。图纸上的比例尺标注(比如"1:100")在缩放之后就失效了。所以凡是缩放过图纸,我都会在页眉或者附注里补一句"本图按原比例1:100绘制,打印时缩放系数78%",避免施工方拿着尺子量出来对不上。
3.3 路线三:虚拟打印重排,最省事也最容易丢东西
把原文件用虚拟打印机重新"打印"成一份PDF,纸张选A4,缩放选"适合"或者"缩小过大的页面",这是很多人默认的做法,确实省事,也确实有代价。
省事的地方在于它通吃所有情况:横竖混排、尺寸五花八门、内容跑出页面框的,重新打印一遍之后,出来的文件百分百是统一A4、方向正确、内容全在纸内。福昕自带的PDF打印机和系统自带的"Microsoft Print to PDF"都能干这件事。
代价是什么?打印是一次"渲染-重排"的过程,很多PDF的原生特性会在这一步被抹平:
- **书签(目录)**大概率丢失,几百页的手册打完,导航没了
- 超链接失效,外部链接和页内跳转都可能变成普通文字
- 表单域变成静态内容,不能再填
- **图层(OCG)**被合并扁平化,原本可以切换显示的图层全铺在纸面上
- 附件丢失
- 图片重新压缩,文件体积可能变大也可能变小,画质有损
- 文档字体可能被替换或全部内嵌,文件反而膨胀
所以我的取舍规则很明确:要交付给人看的、不需要再编辑的最终稿,走打印重排;还需要保留书签、表单、链接的中间文件,走路线二。另外补一句,福昕里"导出/另存为PDF"和"打印到PDF"是两个完全不同的动作,前者尽量保留原生结构,后者走渲染管线,别搞混。
3.4 方向混排与异构纸张的批处理顺序
拿到体检报告之后,正确的处理顺序不是"一把梭全改A4",而是分三步走。
第一步,先统一方向。把带90度旋转的页面用"旋转页面"功能转正,或者在脚本里把旋转归零并把宽高交换后重新落版。方向不统一的页面,后面无论怎么改纸张都会别扭。
第二步,按尺寸分组,少数派单独处理。比如108页里只有12页是A3,那就把这12页单独挑出来决定去留:能缩就缩,不能缩就保持原尺寸,最后单独出一份图纸册。把A3硬塞进A4,是新手最常犯的错误。
第三步,统一纸张尺寸,同时确认页边距。目标尺寸不一定是A4。装订成册的文档,实际可用区域比A4要小,左右各留15mm装订边是很常见的做法。这一步在脚本里体现为把目标矩形整体内缩后再居中放置内容。
| 症状 | 真实原因 | 处置路线 |
|---|---|---|
| 页面框大小不一,内容比例正常 | 多来源合并 | 路线二,统一到目标尺寸 |
| 页面框大小不一,且有大片白边 | 扫描偏移、二次裁剪 | 路线一,只改框 |
| 内容大小不一,但页面框一致 | 内容被缩放过,框没动 | 路线二,反向补齐留白 |
| 部分页面横向、部分纵向 | 旋转属性或原始方向不同 | 先统一方向,再统一尺寸 |
| 页面框原点非0 | 加工工具留下的偏移 | 先归零CropBox,再改框 |
3.5 一段可以直接复用的批量统一脚本
把前面讲的细节拼起来,就是下面这段脚本。它的策略是:方向统一、等比缩放、居中放置、已经匹配的页面不做无意义缩放,最后把原文件的目录一并带过去。
import fitz SRC, OUT = "mixed.pdf", "mixed_unified.pdf" TW, TH = fitz.paper_size("a4") # 返回(595.28, 841.89) src = fitz.open(SRC) out = fitz.open() report = [] for page in src: r = page.rect # 已考虑旋转的可见矩形 w, h = r.width, r.height scale = min(TW / w, TH / h) # 尺寸已经吻合的页面按1:1放置,避免无意义的重新渲染 if abs(w - TW) < 1.5 and abs(h - TH) < 1.5: scale = 1.0 pw, ph = w * scale, h * scale x, y = (TW - pw) / 2, (TH - ph) / 2 new = out.new_page(width=TW, height=TH) new.show_pdf_page(fitz.Rect(x, y, x + pw, y + ph), src, page.number) report.append((page.number + 1, round(w, 1), round(h, 1), round(scale, 3))) # 保留原书签结构;如果不需要可以直接删掉这一行 out.set_toc(src.get_toc()) out.save(OUT, garbage=4, deflate=True) for n, w, h, s in report: tip = " <== 注意缩放较大" if s < 0.7 else "" print("第%3d页 原尺寸 %.1f x %.1f pt 缩放 %.3f%s" % (n, w, h, s, tip)) src.close() out.close()脚本里那个"缩放较大"的提示,是我加给自己的警戒线。跑完之后先扫一眼哪些页的缩放系数低于0.7,这些页要么内容确实需要放大原纸张,要么就得接受字号变小的现实。实测下来,一份200页的混合文件跑完不到10秒,比在编辑器里手工一页页改快了不止一个数量级。
4. 右键菜单项集体消失,先别急着重装
尺寸的事情解决完,另一件事更让人上火。某天早上右键点一个PDF,本来那一长串"在福昕PDF编辑器中打开""转换为Word""转换为Excel""合并文件"全都不见了,只剩下系统自带的几项。第一反应是软件坏了,于是重装、重启、换版本,折腾一下午。
先别急。右键菜单项缺失,九成不是软件坏了,而是挂载菜单的Shell扩展没有加载,或者加载了但被系统/安全软件屏蔽了。理解这一点,排查效率会有质的提升。
4.1 福昕往右键菜单里挂的项,分几个注册位置
福昕的右键菜单项不是一整块,而是按触发场景分成好几组,注册在不同的注册表位置,出问题的时候也是一组一组地掉,这是判断故障范围的关键线索:
| 触发场景 | 典型菜单项 | 大致注册位置 |
|---|---|---|
| 右键点击PDF文件 | 在福昕PDF编辑器中打开、转Word/Excel/PPT/图片 | HKEY_CLASSES_ROOT\.pdf\shell及HKCR\SystemFileAssociations\.pdf\shell |
| 右键点击任意文件 | 转换为PDF | HKCR\*\shell |
| 右键点击文件夹 | 转换为PDF、合并为PDF | HKCR\Directory\shell |
| 右键点击多个选中项 | 合并文件为PDF | 由Shell扩展在处理多选时动态提供 |
| 卸载/关联入口 | 打开方式、默认程序 | HKLM\SOFTWARE\Classes下对应键 |
配合两个通用的挂载点:HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Shell Extensions\Approved记录哪些扩展被系统批准加载,以及HKLM\SOFTWARE\Classes\CLSID\{...}里的扩展CLSID注册。安全软件"优化右键菜单"的功能,动的就是Approved和对应的CLSID项。这也解释了为什么很多人是装了某个系统优化工具之后,菜单项才开始消失的。
4.2 从Windows 11折叠菜单一路查到Shell扩展的排查链路
我把这些年排查过的顺序整理成了一条链路,从上往下走,每一步都能砍掉一批可能性,别跳步:
第一步,确认不是Windows 11的折叠菜单。新版右键菜单默认只显示一小部分项目,其余全被折叠进"显示更多选项"。按Shift + F10或者右键后点"显示更多选项",先看看福昕那几项是不是藏在里面。这一步能解决相当一部分"菜单没了"的报障,我见过不止一个人因为这个问题重装了三次软件。
第二步,换位置测试。在桌面上的PDF、D盘深层目录里的PDF、中文路径下的PDF、网络位置里的PDF各试一次。如果只有网络位置或者特殊路径下没有菜单项,那问题在Shell扩展的触发条件,不在扩展本身。
第三步,区分"全掉"还是"部分掉"。只剩"在福昕中打开"、转换类菜单项全没了,说明主扩展活着,单独的转换模块(PDF转Word那套组件)没装或未激活;如果连"在福昕中打开"都没了,说明Shell扩展整体没加载。这两种情况的修法完全不同,前者走修复安装补齐组件,后者走重新注册。
第四步,检查福昕自己的开关。打开福昕PDF编辑器,进文件 → 首选项 → 文件关联(部分版本在"常规"或"文档"分类下),里面通常有一项关于"在Windows资源管理器中添加上下文菜单"或"集成到资源管理器"的勾选。这个勾如果被取消过,菜单项就会集体消失,而且重装未必会重新打开。这一步的检查成本极低,但经常被跳过。
第五步,翻安全软件和优化工具的"已禁用"列表。各类管家、优化大师、"右键菜单管理"小工具,都会把Shell扩展列出来让你禁用。去对应工具的已禁用清单里找找有没有Foxit字样,有的话恢复启用,然后重启explorer。
第六步,用ShellExView做权威判定。NirSoft出的ShellExView是免费小工具,绿色免安装。打开后把列类型(Type)筛选为Context Menu,按Publisher列排序找到Foxit相关的条目,看Disabled那一列是不是写着Yes。是的话选中,右键Enable Selected Items,然后重启explorer。这款工具的好处是不光看福昕,还能把系统里所有第三方右键扩展一览无余,谁跟谁冲突一目了然。
第七步,重启资源管理器。任务管理器里找到"Windows资源管理器",右键重新启动;或者直接注销重登。Shell扩展是随explorer进程加载的,很多改动不重启就不生效,别在这一步上偷懒。
4.3 ShellExView 启用、regsvr32 重注册与修复安装
走到第七步还是不行,就进入"动手修"的阶段了。按代价从低到高排:
先做修复安装。设置 → 应用 → 已安装的应用 → 找到福昕PDF编辑器 → 修改 → 修复。修复安装会重新注册所有Shell扩展和相关组件,是性价比最高的一招。修复之前把福昕完全退出,包括托盘图标。
再考虑手动注册DLL。先到安装目录(一般是C:\Program Files\Foxit Software\下面)搜索文件名里含Shell的DLL,常见命名包含Shell、ShellExt、ContextMenu这类关键词,不同版本的文件名不一样,别照抄网上的文件名。找到之后,以管理员身份打开命令提示符,执行:
regsvr32 "C:\Program Files\Foxit Software\Foxit PDF Editor\FoxitPDFEditorShell64.dll"这里有两个细节值得说清楚。一是位数要对上:64位系统上的资源管理器是64位进程,必须注册64位版本的DLL;如果还有旧版32位Office或别的32位程序需要用到"打开对话框"里的右键菜单,那就得把32位DLL也注册一遍。二是报错代码的含义:提示0x80070005是权限不足,确认是用管理员身份运行的命令提示符;提示0x80004005或者"找不到指定的模块",通常意味着这个DLL依赖的其他组件缺失,别硬试,回去做修复安装。
最后才是重装。重装时有个关键步骤容易被忽略:安装向导里有一页会问是否"将福昕集成到Windows资源管理器"或者"添加右键菜单",默认状态不一定是勾上的。一路点下一步的人,装十遍也不会有右键菜单。卸载时也建议顺手把残留的注册表项清掉,否则新旧版本的CLSID可能打架。
4.4 手动补一个最小右键项(附注册表写法与风险)
如果所有正规手段都试过还是不行,可以手动补一个最小可用的菜单项。原理很简单,就是在.pdf这个文件类型的shell键下面加一条命令。示例(保存为.reg文件,双击导入):
Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT\.pdf\shell\FoxitOpen] @="在福昕PDF编辑器中打开" "Icon"="\"C:\\Program Files\\Foxit Software\\Foxit PDF Editor\\FoxitPDFEditor.exe\",0" [HKEY_CLASSES_ROOT\.pdf\shell\FoxitOpen\command] @="\"C:\\Program Files\\Foxit Software\\Foxit PDF Editor\\FoxitPDFEditor.exe\" \"%1\""注意:导入注册表之前,先右键那个键选择"导出"做一份备份;路径必须改成实际安装路径,反斜杠要双写;如果
HKEY_CLASSES_ROOT\.pdf\shell\FoxitOpen这个键已经存在,导入会覆盖它,所以先确认再动手。
手动加的这一条只能实现"用福昕打开",转换类菜单项是Shell扩展动态生成的,注册表补不出来。它适合应急,比如急着给客户演示,但长期方案还是把原生扩展修好。
5. 把这两类问题挡在交付和换机之前
前面讲的是出问题之后怎么修。实际上这两类问题都有明确的"高发时间点":一类是文件要对外交付的时候,一类是换电脑、重装系统、软件升级之后。在这两个时间点花十分钟做自检,比事后花两小时排查划算得多。
5.1 对外发稿前的尺寸自检三件套
我现在养成了一个习惯,凡是给客户、印厂、施工方发的PDF,发之前必做三件事。
查尺寸分布。就是第2节里那段脚本,跑一遍,看清楚有几种尺寸、各占多少页。这份清单还有一个附加价值:如果客户回来说"你这文件打出来不对劲",你能立刻定位是哪些页的问题,不用重新查一遍。
查方向和页面框原点。方向混排在打印预览里比较容易看出来,页面框原点偏移则只能靠脚本。这两项都正常,基本就能排除打印缩放的意外。
查书签和链接是否还在。如果你走的是虚拟打印重排这条路线,这一步尤其重要。点几个目录项,看看跳转还灵不灵;外部链接随便点一个试试。我吃过一次亏,给客户的200页手册走打印重排,目录全丢了,客户翻了两天才翻到附录。
顺便分享一个小技巧:我把常用参数写进一个批处理文件,把PDF拖到图标上就自动跑完体检脚本并弹出报告,比每次打开编辑器省事。体检脚本和统一脚本分开两个入口,日常只用体检。
5.2 换机、升级、装完系统后的右键菜单自检清单
新机器或者重装系统之后,装完福昕,别急着开始干活,右键点一个PDF文件确认四件事:
- 右键点PDF文件,看有没有福昕的打开项和转换项
- 右键点文件夹,看有没有"转换为PDF"
- 右键点桌面空白处,看有没有新建或转换入口
- 打开福昕,进首选项 → 文件关联,确认集成相关的勾选是打开的
这四件事三十秒能做完,但能避免你在一周后突然发现菜单项不见了时的困惑。如果装完之后菜单项不全,当场走修复安装,不要拖。另外,系统上装了新的右键菜单管理工具或者安全套件之后,建议隔一段时间回头看一眼ShellExView里的状态,有些优化工具会在你不知情的时候把扩展禁掉,特别是"启动优化""开机加速"这类一键操作。
我自己在长期使用中的体会是,PDF这类文件格式的麻烦从来不在于它有多复杂,而在于它太容易被当成"就是一个文档"而忽略掉它的内部结构。页面尺寸、页面框、旋转角度、Shell扩展的注册位置,这些东西平时不显山不露水,一旦出问题就卡在交付的最后一步。手里有一份能读页框的脚本,脑子里有一条能顺下来的排查链路,遇到这两类问题时心里就不慌了。