PDF旋转后保存,打开为什么还是旋转前的方向?

方向变回去,多半不是保存失败,是那次旋转压根没写进文件。不少阅读器的旋转按钮只改当次显示视图,关掉窗口就没了。 判断只要两步:转完保存,跑 pdfinfo 看 Page rot 那一行,再看文件体积。rot 还是 0、体积跟原件几乎一样,就是没写进去,换个能真正改页面属性的工具重来。 PDF 里旋转有两种写法,落到文件里完全不是一回事。我拿一份三页 A4 的基准文件量过。 一种是打标记。页面对象上有个 /Rotate 属性,写上 90 就行,内容流一个字节都不动。原件 1305 字节,标记式转 90 度之后 1318 字节,只多了 13 个。pdfinfo 里 size 行仍然是 595.28 x 841.89 没变,只有 rot 行变成 90;pdftotext 抽出来的文字和转之前一模一样;渲染出来倒确实是 842×596 的横图。页面本身还是竖的,文件里只是挂了张“请转 90 度显示”的条子,渲染器照办而已。 另一种是重画。把原页整个嵌进一张新页面里再画上去。同一份基准文件这么做完是 3084 字节,涨了一倍多;rot 回到 0,页面尺寸自己变成 841.89 x 595.28。这回是真横过来了。 两种各有各的用处。90 度整数倍优先用标记式,无损、增量极小,拆分合并也带得走(pdf-lib 的 copyPages 实测会保留 /Rotate,但别默认所有实现都这样,拆完合完再看一眼 rot 行)。歪了几度的扫描件纠偏只能走重画,标记式根本不接受非 90 倍数,pdf-lib 里传 degrees(45) 会直接抛错 must be a multiple of 90。代价是像素得重采样一遍,边缘会糊一点,四角还会露出白色三角,得再裁一刀。 下次再碰上保存了又变回去,先别怀疑软件坏了,看 rot 行和体积这两个数就够了。
编辑于 2026-08-26 · 著作权归作者所有