Windows上でプログラムを印刷するPDF

1864 ワード

理論上、PDFを自動的に印刷することはWindowsで簡単でなければなりません.すべてのPDFを開くとCtrlを行うpの問題なしで動作します.実際には、それが必要とされるよりもずっと難しく、迷惑でした.
私はクイックPowerShellスクリプトが必要なすべてであると考えました、そして、私はそれのかなりの数回の反復を試みました、そして、多くの試行錯誤の後、それは働くようになりました.
動作しなかったもの
> (New-Object -ComObject WScript.Network).SetDefaultPrinter('Test')
> $Printer = Get-WmiObject -Class Win32_Printer -Filter "(Name='PRINTER20')"
> $Printer.SetDefaultPrinter()
以下のスクリプトは動作しましたが、デフォルトのプリンタをジャグリングする必要があり、スクリプトは印刷を終了すると処理を終了しなければなりません.これは睡眠のためのものです.
> $OldPrinter = Get-WMIObject -Query " SELECT * FROM Win32_Printer WHERE Default=$true"
> $printer = Get-CimInstance -Class Win32_Printer -Filter "Name='PRINTER20'"
> Invoke-CimMethod -InputObject $printer -MethodName SetDefaultPrinter
> Start-Process -FilePath "C:\temp/some.pdf" -Verb Print -PassThru | %{sleep 5;$_} | kill
> $OldPrinter.SetDefaultPrinter()
これはhackyと言うには控えめです!それはPDFビューアであるので、これが本当にAdobe Acrobat Readerで問題であるようです、そして、それはWindows農場をそれに印刷しているようです.これは実際に意味をなすのです.そして、私は、物事がどのような方法であるかについて、きちんとした理由があることを確信しています.私もPowerShellを知りません、そして、私は本当にそれを理解しようとしませんでした.
ノードを入力!私は、私のためにPDFを印刷する印刷ユーティリティのためにNPMを見ました、そして、私はパッケージにPrintと呼ばれているパッケージを見つけました.ソースを突っ込んだことは、それが本当にスマトラのPDFのための包装紙であることを示しました.
これはまさに私が探していたものでした!コマンドラインからドロップして使用できる小さな実行可能ファイル.
最終的に、私はPowerShellスクリプトを廃棄して、Simatrapdfを使って小さなスクリプトを書きました.
> .\SumatraPDF.exe -print-to PRINTER0 "C:\temp\some.pdf"
これは見事に、単に作品!
ノードかPythonで答えを捜して、それがどのようにされるかについて調べていると言われる何かがあります.人々が書いたコードの量は正気ではない.私は誰かがなぜノードの下で動作するように役立つとしてスマトラPDFのノードラッパーを作った理由を見ることができます.私の目的のために、私は単に実行可能パッケージを取り、ノードパッケージをインストールするのではなく、直接使うことができます.