Board logo

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

作者: 盛世繁华    时间: 2023-6-13 21:02     标题: 【已解决】批处理把图片导入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
复制代码

作者: buyiyang    时间: 2023-6-13 21:56

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

作者: terse    时间: 2023-6-15 11:10

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




欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2