我编写了一个Powershell脚本,询问问题,获取用户的输入,将这些变量插入在ZPL中创建的标签中,然后通过Out-Printer
打印出来。除了打印的标签有不正确的间距或缺少数据外,一切似乎都能正常工作。
最初我让脚本创建一个.txt文件,该文件以ZPL格式保存标签。检查标签所有数据都是正确的。当我使用相同的打印机从记事本打印.txt文件时(Driver设置为Generic / Plain文本)。标签是完美的。
我也尝试将打印方法切换到WMI变体。它会执行相同的格式问题和缺少数据,但现在位于不同的位置。
似乎Powershell在打印之前格式化数据。
以下是我目前的代码,其中包含一些因隐私问题而受到审查的数据。
$i = 0
$global:counter = $i + 1
$AllPrinters = gwmi win32_printer -computername $env:computername
$DefaultPrinterString = $AllPrinters | where {$_.Default -eq $true}
$DefaultPrinter = [regex]::match($DefaultPrinterString, '\"([^\"]+)\"').Groups[1].Value
Write-Host "========== Print Company Labels =========="
Write-Host "Question will be on the left, type in answer and hit ENTER"
$location = Read-Host "Which location? (LOC1 or LOC2)"
$pro = Read-Host "What is the Pro#?"
$quote = Read-Host "What is the quote number?"
$pallet = Read-Host "How many pallets are there?"
$printer = Read-Host "What printer do you want?"
While ($global:counter -le $pallet)
{
$printcode = "^XA^MCY^XZ^XA^SZ2^MMT^MTT~JSN^LT0^MD0^MNY^PR5^PON^PMN^CI0^LRN
^FT300,1300^A0B,350,160^FDPRO: $pro^FS
^FT480,1300^A0B,175,150^FD$location^FS
^FT480,1300^A0B,175,150^FD$location^FS
^FT480,900^A0B,175,100^FDQuote: $quote^FS
^FT800,1300^A0B,350,225^FDPallet $global:counter of $pallet^FS
^PQ01~*QUANT,04~,0,~*COPIES,04~,N^MCY^XZ"
(New-Object -ComObject WScript.Network).SetDefaultPrinter($printer)
$printcode | Out-Printer
Start-Sleep 1
(New-Object -ComObject WScript.Network).SetDefaultPrinter($DefaultPrinter)
$global:counter++
}
非常感谢任何帮助。
提前致谢