Powershell:Out-Printer,unicode和字体大小

时间:2017-09-01 07:09:16

标签: powershell unicode

powershell "get-content foo.txt|Out-Printer"

只要foo.txt是英语,一切都很好(大部分都是)

如果foo.txt包含unicode字符,例如राष्ट्र然后被打印的东西像是像€à€€à¬¬

我尝试将-Encoding选项传递给get-content,但它没有改变结果。

  • 是否可以确保无需正确打印unicode文本 在后台启动Word / IE等打印它?

我的第二个问题是

  • 是否可以控制使用哪种字体(类型和大小) 用打印机打印?

1 个答案:

答案 0 :(得分:0)

在我的环境(Windows 10 2004 Build 19041.985,日语语言环境)中,我在以下情况下得到了正确的结果:

  • 使用 BOM 以 UTF-8 格式保存 .txt 文件,并使用 Get-Content .\foo.txt | Out-Printer 打印
  • .txt 文件保存在没有 BOM 的 UTF-8 中,并使用 Get-Content .\foo.txt -Encoding UTF8 | Out-Printer 打印

enter image description here

我在以下情况下得到了不正确的结果(如 爨ー爨セ爨キ爭財、游・財、ー):

  • .txt 文件保存在没有 BOM 的 UTF-8 中,并使用 Get-Content .\foo.txt | Out-Printer 打印

enter image description here

所以看起来像是编码问题。请先看看@RavenKnit 说了什么。

<块引用>

是否可以确保正确打印 unicode 文本而无需在后台启动 Word/IE 等进行打印?

我找不到处理 Get-PrinterPortGet-WmiObject Win32_Printerprnmngr.vbsprnqctl.vbs 的方法。如果您只是不想在打印文件内容时显示 Windows,则可以使用 Print 动词。它为 notepad.exe 个文件运行 .txt,为 winword.exe 个文件运行 .docx,等等。

Start-Process .\foo.txt -Verb Print -WindowStyle Hidden -Wait
<块引用>

是否可以控制输出打印机使用哪种字体(类型和大小)进行打印?

根据the source of Out-Printer,默认字体为embbeded in the .resx file。所以看起来你无法控制默认字体。