我正在使用powershell生成一个文档。我需要在文档内容中插入一些PDF文件和一些TIFF图像。它只在页面中插入TIF或PDF文件的第一页。
我使用inlineShapes.AddPicture或inlineShapes.AddOLEObject将这些添加到文档中。
我们如何添加迭代器或类似的东西,一次在文档对象中插入一个页面?
发布于 2022-11-07 22:45:27
大多数答案都提到,我们需要下载或安装一个实用工具,如用于拆分的iTextSharp或用于分割图像的一些成像实用程序。然而,经过更多的搜索后,我能够实现如下:
For Image:使用Windows中内置的图像库将Tiff文件拆分成页面,然后将每个文件分别插入word中。
For PDF:在word中打开PDF并保存为Word。然后在文档中插入单词文件。
PDF代码示例
$word=New-Object -ComObject word.application
$word.visible=$false
$doc=$word.documents.add()
$sel = $word.selection
$sel.typetext ("Just some test text")
$sel.typeParagraph()
$newDoc=$word.documents.open("c:\apps\sample.pdf")
$filebasename = [System.IO.Path]::GetFileNameWithoutExtension("c:\apps\sample.pdf")
$newDoc.saveAs("c:\apps\sample.docx")
$newDoc.close()
$doc.activate()
$rng=$word.activedocument.range()
$rng.insertFile("c:\apps\sample.docx")
$doc.saveas("C:\apps\new.docx")
$doc.close()
$word.quit()
第一次执行上述代码时,将显示一个对话框,其中询问是否要将PDF转换为word。下一次将有一个复选框跳过此对话框。我们需要选中那个框,这样下次就不会出现了。这也可以通过添加注册表条目来完成,但这超出了这个答案的范围。
图像代码:
$a=[System.Drawing.Bitmap]]::FromFile("c:\apps\sample.tiff")
$pages=$a.getFrameCount([System.Drawing.Imaging.FrameDimension]::Page)
for ($page=0;$page -lt $pages;$page++) {
$a.selectActiveFrame([System.Drawing.Imaging.FrameDimension]::Page,$page)
$pageFileName = "C:\apps\sample-" + $page + ".tiff"
$a.save($pageFileName)
$newPic = $sel.inlineShapes.AddPicture("$pageFileName","false","true")
}
在上面的代码中,"$sel“是一个选择对象,设置为以前打开的Word文档。
https://stackoverflow.com/questions/74227837
复制相似问题