我有一个 Powershell 脚本,它调用 LibreOffice 将文本文件 (.fodt) 中指定范围的页面写入 PDF 文件。以下命令运行正常,并从 9 页源文件中创建包含第 3-4 页的 PDF 文件:
& "C:\Program Files\LibreOffice\program\soffice.com" --convert-to 'pdf:writer_pdf_Export:{\"PageRange\":{\"type\":\"string\",\"value\":\"3-4\"}}' $infile --outdir $outdir
但是,当我在脚本的其他位置将页面范围定义为变量,并尝试在导出过滤器参数中调用该变量时,如下所示:
& "C:\Program Files\LibreOffice\program\soffice.com" --convert-to 'pdf:writer_pdf_Export:{\"PageRange\":{\"type\":\"string\",\"value\":\"$PageRange\"}}' $infile --outdir $outdir
...我得到以下输出和错误:
convert C:\Temp\test.fodt as a Writer document -> C:\Temp\test.pdf using filter : writer_pdf_Export:{"PageRange":{"type":"string","value":"$PageRange"}}
Overwriting: C:\Temp\test.pdf
Error: Please verify input parameters... (SfxBaseModel::impl_store <file:///C:/Temp/test.pdf> failed: 0xc10(Error Area:Io Class:Write Code:16) at C:/cygwin64/home/buildslave/source/libo-core/sfx2/source/doc/sfxbasemodel.cxx:3272 at C:/cygwin64/home/buildslave/source/libo-core/sfx2/source/doc/sfxbasemodel.cxx:1822)
我觉得单引号之间的 LibreOffice 参数在看到 Powershell 变量时无法识别,而是传递精确的文本。有没有办法解决这个限制并将页面范围定义为变量?
PowerShell 将单引号“ ”内的变量视为文字字符串,并且不会评估变量内容。已知此行为会导致您遇到的错误。
一种解决方案是提前在“Here String”中创建过滤器,如下所示: