[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文件操作] 【已解决】批处理把图片导入word如何不被压缩,并适配word的宽度

现在桌面名为“test”的文件夹下有三个文件夹:“picture”是图片文件夹、“docx”是文档文件夹、“completed”是输出文件夹。图片文件夹和文档文件夹里的文件名是对应的。如下:
picture文件夹
          1.jpg
          2.png
docx文件夹
          1.docx
          2.docx
completed文件夹


批处理是把图片导入到相同文件名的文档后,再把文档保存到completed文件夹里。现在每张图片的大小是3M左右,图片很清晰,只是尺寸有点长,在批量导入word后发现整个文档的大小也只有400KB左右 ,即便把文档保存为网页查看里面的图片也只有几百kb,所以图片被压缩了。那么图片导入word如何避免被压缩呢,最好导入的图片的宽度能适配文档的正文宽度。有的说把doc.InlineShapes.AddPicture('%%f', $false, $true)的第三个值改为false,但修改后生成的文档里没有图片。请教各位了~~~~~~



代码如下:
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set "picture_path=C:\Users\X3S2\Desktop\test\picture"
  4. set "docx_path=C:\Users\X3S2\Desktop\test\docx"
  5. set "output_path=C:\Users\X3S2\Desktop\test\completed"
  6. for /r "%picture_path%" %%f in (*.jpg, *.jpeg, *.png, *.bmp) do (
  7.     set "filename=%%~nf"
  8.     set "word_path=!docx_path!\!filename!.docx"
  9.     start winword.exe "!word_path!" /q
  10.     ping -n 2 localhost > nul 1>nul 2>nul
  11.     if not errorlevel 1 (
  12.         powershell "$word = New-Object -ComObject Word.Application;$doc = $word.Documents.Open('!word_path!', $false, $true, $false);$selection = $word.Selection;$selection.EndKey(6);$selection.TypeParagraph();$inlineShape = $doc.InlineShapes.AddPicture('%%f', $false, $true);$inlineShape.Range.InsertParagraphAfter();$doc.SaveAs('!output_path!\!filename!.docx');$doc.Close();$word.Quit();"
  13.     )
  14. )
  15. echo completely!
  16.     taskkill /F /IM WINWORD.EXE > nul 2>&1
复制代码
1

评分人数

    • Batcher: 感谢给帖子标题标注[已解决]字样PB + 2

  1. $word = New-Object -ComObject Word.Application;
复制代码
后加上
  1. $word.Options.CompressPictures = $False;
复制代码
1

评分人数

TOP

试试根据 $doc.PageSetup.PageWidth 减去两边来调整呢

TOP

返回列表