You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用PowerShell+Ghostscript将TXT转PDF遇错求助

解决方案:PowerShell下将TXT转换为PDF

错误原因分析

你当前的PowerShell脚本直接将格式化后的纯文本传入Ghostscript,但Ghostscript仅支持处理PostScript或PDF格式的输入,无法直接解析纯文本,这就是触发/undefined in NameOperand错误的原因。你的bash脚本之所以可行,是因为通过pr格式化文本后,用enscript将其转换为PostScript,最后再通过ps2pdf(Ghostscript的封装工具)生成PDF。

可行方案

方案1:移植bash脚本逻辑(依赖Windows版工具)

在Windows环境中安装与bash脚本对应的工具,直接复用原有逻辑:

  1. 安装工具:
    • 通过Chocolatey包管理器快速安装:
      choco install enscript coreutils -y
      
    • 或从GNUWin32官网手动下载enscript和coreutils(包含pr工具)并添加到系统PATH。
  2. 在PowerShell中执行转换命令:
    $pdf_file = "C:\table.pdf"
    pr -t -e20 "C:\Projekt\erg\table.txt" | enscript -B -o - | ps2pdf - $pdf_file
    

方案2:使用Pandoc(跨平台简便工具)

Pandoc是一款强大的文档转换工具,支持直接将TXT转PDF,无需复杂管道:

  1. 安装Pandoc:
    • 通过Chocolatey安装:
      choco install pandoc -y
      
    • 或从Pandoc官网下载安装包手动安装。
  2. 基础转换命令:
    pandoc "C:\Projekt\erg\table.txt" -o "C:\table.pdf"
    
  3. 自定义格式(可选):如果需要调整字体、行距等,添加参数:
    pandoc "C:\Projekt\erg\table.txt" `
      -V fontfamily=courier `
      -V fontsize=12pt `
      -V linestretch=1.5 `
      -o "C:\table.pdf"
    

方案3:纯Ghostscript实现(无需额外工具,适合简单文本)

手动将纯文本封装为PostScript后传入Ghostscript,适合格式简单的文本:

$txt_path = "C:\Projekt\erg\table.txt"
$pdf_path = "C:\table.pdf"
$gs_path = "C:\Program Files\gs\gs10.01.1\bin\gswin64c.exe"

# 生成简单的PostScript内容(处理换行和基础排版)
$raw_text = (Get-Content $txt_path -Raw) -replace "`n", "\n" -replace "`r", ""
$ps_content = @"
%!PS
/Courier 12 selectfont
72 750 moveto
0 -18 setleading
($raw_text) show
showpage
"@

# 传入Ghostscript转换为PDF
$ps_content | & $gs_path -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOutputFile="$pdf_path" -

内容的提问来源于stack exchange,提问作者ZoniK

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 18:33:08