Powershell:输出打印机、unicode和字体大小
只要foo.txt是英语,一切都很好(大部分情况下都很好) 如果foo.txt包含unicode字符,例如。राष्ट्र 然后打印出来的是像¥€这样的东西 我尝试传递-Encoding选项来获取内容,但结果没有改变Powershell:输出打印机、unicode和字体大小,powershell,unicode,Powershell,Unicode,只要foo.txt是英语,一切都很好(大部分情况下都很好) 如果foo.txt包含unicode字符,例如。राष्ट्र 然后打印出来的是像¥€这样的东西 我尝试传递-Encoding选项来获取内容,但结果没有改变 是否有可能确保unicode文本在没有 在后台启动Word/IE等来打印它 我的第二个问题是 是否可以控制使用哪种字体(类型和大小) 用打印机打印 在我的环境(Windows 10 2004 Build 19041.985,日语区域设置)中,我在以下情况下得到了正确的结果:
- 是否有可能确保unicode文本在没有 在后台启动Word/IE等来打印它
- 是否可以控制使用哪种字体(类型和大小) 用打印机打印
- 将
文件与BOM一起保存在UTF-8中,并使用.txt
获取内容进行打印。\foo.txt|Out Printer
- 将
文件保存在不带BOM的UTF-8中,并使用.txt
获取内容进行打印。\foo.txt-编码UTF8 |输出打印机
爨ー爨セ爨キ爭財、游・財、ー代码>),出现以下情况:
- 将
.txt
文件保存在不带BOM的UTF-8中,并使用Get Content打印。\foo.txt|Out Printer
所以这看起来像是一个编码问题。请先检查@RavenKnit说了什么
是否可以确保unicode文本正确打印,而无需在后台启动Word/IE等进行打印
我找不到使用Get PrinterPort
,Get WmiObject Win32_Printer
,prnmngr.vbs
或prnqctl.vbs
的方法。如果在打印文件内容时不想显示窗口,可以使用print
动词。它为.txt
文件运行notepad.exe
,为.docx
文件运行winword.exe
,等等
powershell "get-content foo.txt|Out-Printer"
是否可以控制打印机打印时使用的字体(类型和大小)
根据,默认字体为。因此,看起来您无法控制默认字体。我认为这取决于打印机。默认配置可能只支持ASCII或某些扩展拉丁字符集。许多打印机可以用自定义语言控制;惠普有PCL,京瓷有PC,许多高端设备支持PostScript。因此,为了打印Unicode,一个特殊的控制序列可能是解决方案。Opt-Printer应该无缝地写入连接的任何打印机。如果我必须开始添加逻辑来确定打印机类型及其支持的语言,然后在文本文件中插入特定于打印机的魔法代码,那么它就无法实现输出打印机的全部目的。问题是,我可以“notepad/p foo.txt”并正确打印unicode代码字符…因此,Microsoft中至少有一个团队知道如何将文本正确发送到打印机:(1)使用带有-Encoding参数的get Content时(不带打印机),显示器是否正确显示字符?打印输出只是一个“假脱机”,因此如果显示器显示乱码,它将打印相同的字符。2)打印机默认支持非ASCII字符打印吗?Powershell 5获取内容如果没有-编码参数,将无法识别utf8无bom。
Start-Process .\foo.txt -Verb Print -WindowStyle Hidden -Wait