死ぬほど重い腰を上げて、こちらにトライしてみた。そうはいっても、やることは単純だった。下記のUpgrade Assistantに沿って、Enterを叩きまくる簡単なお仕事。Enterを押す回数が多く、20回ぐらい押した。
dotnet.microsoft.com
やってみた所、あっさり.net6でビルドが出来た。PrintDocumentみたいに、Windows固有のAPIを書くと警告が出るようになった。
[SupportedOSPlatform("windows")]
をつけまくるのは辛いので、Windowsしかサポートしないですっていうビルド設定みたいなやつが欲しい。
docs.microsoft.com
唯一困った点が、.NET FrameworkでしかサポートされていないPDFiumViewer
が動かない。Unable to load DLL pdfium.dll
というエラーが出る。.NET Frameworkでビルドした時はこのエラーが出なかったので、.NET6固有の問題のように思う。
PDFをダイレクト印刷したいがためにこれを使っている(それ以外の用途はない)が、PDFがインストールされているマシンなら、プロセスを起動して印刷できるっぽい。
stackoverflow.com
あっさり以下のコード出てきたけど、acrobat32.exe を直で叩いているためか、Acrobat Readerが立ち上がってしまう。また、このやり方はPDFを開くデフォルトアプリケーションがAdobe Readerでないとだめっぽい。Edgeがデフォルトの場合、PrintToオプションがなさそう。
string dir = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData); //これはいらんかも
Process p = new Process();
p.StartInfo = new ProcessStartInfo()
{
Arguments = "\"" + printer+ "\"",
Verb = "PrintTo",
FileName = path, //put the correct path here
WorkingDirectory = dir,
WindowStyle = ProcessWindowStyle.Hidden
};
p.Start();
p.WaitForExit(1500);
なんて思ってたら、RawPrint
なるものがあった!
www.nuget.org
Parallelsの仮想プリンタは印刷できず、Windowsの仮想PDFプリンタは印刷が実行された。なんだろう。コードすげー少ない。とりまfork。実機のプリンタで印刷できれば、なんでもええわ。
10年前に印刷要件の関係でWPFを選んだけど、全部Reactで焼き直したい気持ちが極めて強い... 1年ぐらいかけてまったりと。PDFのダイレクト印刷がReactでできれば、複合機・ドットインパクトプリンタはあまり変わらないはず? ページサイズの設定などが出来ないとやっぱWPFじゃんになるかもですが。