WPS文档中如果存在大量图片,没有居中对齐的情况,一个个调整太费时费力, 写了个脚本批量处理, 脚本如下:
javascript
/**
* 清除图片段落布局
*/
function clearImageParagraphLayout_v2() {
try {
const doc = Application.ActiveDocument;
if (!doc) return alert("请先打开文档");
const processedParaIds = new Set();
let totalProcessed = 0;
// 处理嵌入式图片(更可靠的获取方式)
const inlineShapes = doc.InlineShapes;
for (let i = 1; i <= inlineShapes.Count; i++) {
try {
const shape = inlineShapes.Item(i);
const para = shape.Range.Paragraphs.Item(1);
if (para && !processedParaIds.has(para.ParaID)) {
resetParagraphFormat(para);
processedParaIds.add(para.ParaID);
totalProcessed++;
}
} catch (e) {
// 跳过有问题的图片
continue;
}
}
// 处理浮动式图片(兼容不同版本的锚点获取)
const shapes = doc.Shapes;
for (let j = 1; j <= shapes.Count; j++) {
try {
const shape = shapes.Item(j);
// 尝试不同的锚点获取方式
let para;
if (shape.Anchor) {
para = shape.Anchor.Paragraphs.Item(1);
} else {
para = shape.Range.Paragraphs.Item(1);
}
if (para && !processedParaIds.has(para.ParaID)) {
resetParagraphFormat(para);
processedParaIds.add(para.ParaID);
totalProcessed++;
}
} catch (e) {
// 跳过有问题的图片
continue;
}
}
alert(`已处理 ${totalProcessed} 个包含图片的段落\n共检测到 ${inlineShapes.Count + shapes.Count} 张图片`);
} catch (e) {
alert("操作失败:" + e.message);
}
}
// 重置段落格式的辅助函数(使用具体数值代替常量,避免版本问题)
function resetParagraphFormat(para) {
para.FirstLineIndent = 0;
para.LineSpacingRule = wdLineSpaceSingle;
para.Alignment = 1;
}