提案: PDFのレンダリングをPdfiumViewerからWinRTに変更

Issue #1073 closed
udaken created an issue

PdfiumViewerは既に開発を停止しており、.NET 5以降への対応( #570 )が望めません。

開発停止後にもPdfium自体に脆弱性が発見されており、現時点でPdfiumViewer自体に影響はないかもしれませんが、今後発見される可能性があります。

そのため、PDFをWinRTでレンダリングするように変更することを提案します。


ただし、WinRTに変更するとWindows 10以降でしか動作しないので、ユーザーへの影響があります。
(正確には、WinRT自体はWindows 8でも利用可能ですが、ライブラリの​Microsoft.Windows.SDK._Contracts_がサポートしていない。)

Windows 7/8は既にMicrosoftによる延長サポートが終了していますし、Windows 8.1を利用しているユーザーは少ないと思います。

私見ですが、Windows 10以前を利用しているユーザーには、Susie Plugin などを案内し、標準では未対応で良いと思います。


もし提案を採用してもらえるなら、WinRTに対応した初期実装を作成しましたので、参考にしていただければ幸いです。

https://bitbucket.org/udaken/neeview/branch/winrt-pdf

Comments (5)

  1. Ito Mitsuhiro repo owner

    ご提案ありがとうございます。
    WinRT の PdfDocument の存在は知らなかったので助かります。

    PdfiumViewer

    PdfiumViewer 自体は .NET5 でビルドしなおせばいいのですが、
    問題は pdfium.dll のほうで、最新版を自前でビルドして更新すると例外がしばしば発生するようになるため、PdfiumViewer のほうにもなんらかの修正が必要だがそこまで追うのは大変です。
    このため、フォークしているプロジェクトへの乗り換えを検討していました。(PdfiumViewer.WPF とか)

    Windows10

    おおまかな構想ですが、.NET6 に移行したタイミングで Windows7 等のサポートをはずす予定です。
    サポートは外しますが、専用の修正対応しないというだけでその後のバージョンでもしばらくは動作すると思われます。

    その時期は、Google Chrome の Windows7 サポート終了にあわせようと思っています。現状では2022年1月です。

    WinRT

    外部ライブラリを使用しなくて済むのは大きいメリットなので、採用を前提に検討します。
    おそらく最初は現在の PdfArchiver とは別のアーカイバクラスを作って切り替えて両方提供する形になり、.NET6移行時にこれのみの実装になると思います。

  2. udaken reporter

    前向きに検討いただきありがとうございます。

    PdfArchiver とは別のアーカイバクラスを作って切り替えて両方提供する形

    その方が機能を先行リリースできるので、良いと思います。


    手元で.NET 6への移行すると、レスポンスが向上している気がするので、楽しみにしています。


    このチケットですが、情報共有が主な目的ですので、閉じていただいて構いません。

    ブランチはこのまま放置するつもりですが、もしメインリポジトリのブランチにPRする方が良いのであれば、その旨連絡いただければPR作成します。

    (お任せになってすいません)

  3. Ito Mitsuhiro repo owner

    ブランチはそのまま残していただけると助かります。先の述べたとおり別クラスでの実装に鳴ると思いますので、PRは不要です。

    新たに作業チケット(#1074)を作成しましたので、このチケットは終了とします。

  4. Log in to comment