我有一个文本文件,其上有简单的固件版本。我需要使用powershell脚本将文本文件转换为安全的pdf文件。
此外,有没有办法在转换文件时将日期和时间戳放在文件上?
我不知道该怎么做我使用PowerShell相当新,谢谢!
答案 0 :(得分:2)
我让它与Word 2010一起使用,但它也适用于2007:
# File paths
$txtPath = "C:\Users\Public\test.txt"
$pdfPath = "C:\Users\Public\test.pdf"
# Required Word Variables
$wdExportFormatPDF = 17
$wdDoNotSaveChanges = 0
# Create a hidden Word window
$word = New-Object -ComObject word.application
$word.visible = $false
# Add a Word document
$doc = $word.documents.add()
# Put the text into the Word document
$txt = Get-Content $txtPath
$selection = $word.selection
$selection.typeText($txt)
# Set the page orientation to landscape
$doc.PageSetup.Orientation = 1
# Export the PDF file and close without saving a Word document
$doc.ExportAsFixedFormat($pdfPath,$wdExportFormatPDF)
$doc.close([ref]$wdDoNotSaveChanges)
$word.Quit()
答案 1 :(得分:1)
必须假设用户安装了Word或其他一些此类应用程序的替代方法是在脚本中包含一个库,该脚本将支持将文本转换为PDF。 iTextSharp专门设计用于与.Net一起创建和维护PDF文档。你可以得到它here。
唯一的规定是它是使用AGPL(免费!)许可证结构的许可软件,除非您计划将其打包在您自己的软件或某些软件中,并且不打算将其作为开源软件。听起来你只是在写一个脚本,这应该不是问题。如果你是iTextSharp的go find a v4 copy,你实际上可以逃脱,而不必将所有内容透露为开源,所以你可能想要走这条路。
与powershell一起使用它的好参考是slipsec.com/blog post 414,这是我自己通常引用借用代码的地方,我必须自己使用这个库(两次,但我认为这很乏味且烦人所以我不使用它经常,但我很少需要批量或自动生成PDF文档。
所以,细节...这会加载DLL,创建生成PDF文件所需的对象(它使用字体Ariel,字体大小为10)。
然后它读取源文件(C:\ temp \ source.txt用作示例),并将内容添加到$paragraph
对象,为每行添加一个New Line字符,否则是smashes所有的文字都变成了一个丑陋的大块。
然后打开文件对象(有效创建文件),将$paragraph
对象添加到文件中,然后关闭文件。不需要保存,添加$paragraph
对象将数据直接写入驱动器。
[System.Reflection.Assembly]::LoadFrom("C:\path\to\itextsharp\itextsharp.dll")
$doc = New-Object iTextSharp.text.Document
$fileStream = New-Object IO.FileStream("C:\temp\output.pdf", [System.IO.FileMode]::Create)
[iTextSharp.text.pdf.PdfWriter]::GetInstance($doc, $filestream)
#iTextSharp provides a class to work with fonts, but first we have to register them:
[iTextSharp.text.FontFactory]::RegisterDirectories()
$arial = [iTextSharp.text.FontFactory]::GetFont("arial", 10)
$paragraph = New-Object iTextSharp.text.Paragraph
$paragraph.add((gc C:\temp\source.txt|%{"$_`n"})) | Out-Null
$doc.open()
$doc.add($paragraph) | Out-Null
$doc.close()