3 ポイント 投稿者 GN⁺ 2023-10-25 | 1件のコメント | WhatsAppで共有
  • SumatraPDFはWindows向けのマルチフォーマット文書リーダーで、PDF、EPUB、MOBI、CBZ、CBR、FB2、CHM、XPS、DjVu形式に対応
  • ライセンスは**(A)GPLv3**で、一部のコードにはBSDライセンスが適用
  • 追加情報はWebsiteManualDeveloper Informationで提供されています

1件のコメント

 
GN⁺ 2023-10-25
Hacker Newsのコメント
  • Adobe が Acrobat の収益化をさらに積極化しているため、一部の PDF 作業を オープンソースツール に置き換えている。SumatraPDF も使っているツールの一つで、qpdf は暗号解除・ロック解除・変換に使っており、WSL では apt-get install qpdf でインストールできる
    qpdf --decrypt --password="" input.pdf output.pdf で暗号を解除でき、PDF4QT はページ削除・並べ替え・抽出用のオープンソース PDF エディタだが、まだ Chocolatey リリースがないため手動インストールが必要
    Inkscape と LibreOffice Draw は PDF 編集・テキスト追加に、MuPDF は解析・フォーム入力・テキスト追加用のコマンドラインツールおよび Python パッケージとして、SumatraPDF は閲覧用として、pdfplumber は Jupyter Lab と組み合わせて PDF 表をデータパイプラインへ抽出するのに便利

    • Firefox でも PDF の閲覧、署名、テキスト追加が可能。ロック解除後に PDF に印刷 すれば暗号解除もできる
    • PDFTKpdfjam も便利なコマンドラインツール。PDFTK は PDF 結合、ページ抽出・削除・複製、生の PDF コマンドからテキストやデータを取り出して操作するための展開に使い、pdfjam は複数ページの面付けやページサイズ・余白調整に使う
    • qpdf は Chocolatey にはないと言われていたが、別の Windows パッケージマネージャーである Scoop にはある: https://github.com/ScoopInstaller/Main/blob/master/bucket/qp...
    • 表抽出にはここ数年 http://tabula.technology/ を使っている。かなり複雑な表でもうまく処理できており、特に問題はなかった
    • 実際、SumatraPDF は現在 MuPDF を使っている。ただし PDF や電子書籍のレンダリングにはやや制約があり、たとえば PDF レイアウトの処理や epub の Unicode 文字表示などの点がある
  • SumatraPDF 作者が書いた素晴らしい回顧記事: https://blog.kowalczyk.info/article/2f72237a4230410a888acbfc...

    • 回顧記事の「テストなしでも複雑で比較的バグの少ないコードは書ける」「コードレビューなしでも可能」「誰もアプリを使わなければクラッシュしても構わない」「多く使われればクラッシュ報告が来て、それを直す」という4つの文は互いに矛盾している
      実際の意味は、テストやコードレビューが不要ということではなく、ユーザーにテストを任せられる という話に近い
      作者もおそらくコードはテストしているはず。アプリを動かしてみるのもテストだからだ。ただ、回帰テストが与える安心感を語るほど厳格または体系的なやり方ではない可能性が高い
      自動化テストなしで複雑なコードを書くのが不可能だと本気で主張する人はほとんどいない。自分は自動化テストの強い支持者だが、90年代後半から2000年代初頭にかけて、自動化テストを一つも使わずにかなり大きなクロスプラットフォームレンダラーを作ったことがあり、その過程は長く、変更するたびにますます怖くなっていった
    • SumatraPDF 15年回顧記事の過去の HN 議論: https://news.ycombinator.com/item?id=27968900 - 2021年7月、コメント133件
      同じ記事の2023年再投稿時の議論: https://news.ycombinator.com/item?id=35065785 - 2023年3月、コメント173件
    • 「Gtk は醜く、Qt は極度に肥大化しており、WxWidgets はほとんど動作しない」という部分を見ると、作者は クロスプラットフォームツールキット を90年代以降ほとんど見ていないように思える
    • 興味深い記事で、最後に 編集機能の追加 に触れていた点が特に驚きだった。機能要望と肥大化が際限なく吸い込まれるブラックホールのように聞こえる
  • すべての PDF リーダー開発者が sioyek の overview 機能[0] を実装してくれたらいいのにと思う。相互参照項目の上にマウスを置くと、参照内容が小さなプレビューウィンドウで開く
    教科書や技術論文を読むときには本当にゲームチェンジャーで、この有用性はどれだけ強調してもしすぎることはない
    [0] https://github.com/ahrm/sioyek#overview

    • SumatraPDF を作った立場から言うと、sioyek は知っていて、そこからいくつかアイデアを取り入れようと考えている。次のバージョンに入るかもしれない
    • Wikipedia も似たように動くので、たぶんそれは知っているはず。何を誤解しているのか気になる
      それに、その機能のせいで PDF リーダーが任意のリモートコードを実行するようになったら、かなり深刻なリスクではないかと思う
    • これは Ted Nelson の トランスクルージョン(transclusion) ではないか? つまり「同じコンテンツが知覚可能な形で2つ以上の場所に存在すること」だ
      https://en.m.wikipedia.org/wiki/Transclusion
    • 本当に素晴らしい。自分のアプリ Kavita にもこのアイデアの一部を取り入れたい
  • たった今初めてインストールしてみたが、性能はAdobe ReaderはもちろんFoxitさえ圧倒している。Adobe Readerに勝つのは大したことではないが、Foxitに勝つのはかなり印象的だ。
    インストール容量もそれらのプログラムの10%程度しかない。Adobeはいったい何をしているから、ソフトウェアがここまで耐えがたいほど遅く、使いづらいのか気になる

    • Adobeはおそらく PDF仕様の100%サポート と、ごく狭い業界の6社が本気で切望している難解な機能要望への対応をやっているのだろう。
      Sumatraは素晴らしく、Windowsでほぼ唯一使っているPDFリーダーだが、Adobe Acrobatの機能の10%ほどしか持っていない。ただし、その10%こそがほぼ全員に必要な機能だ
    • さらに印象的なのは、おそらく 個人開発者1人 のプロジェクトだという点だ。SumatraPDFは優れたソフトウェアプロジェクトの代表例の1つであり、目標にしたい存在だ
    • Adobeが何をしているかといえば、おそらくこれまで挙がったあらゆる機能要望リストを処理しているのかもしれない。ここのコメントも全部「Sumatraは良いけど、あれこれ機能が足りない」という話ばかりだ
    • Foxitが スパイウェア を同梱し始めたときに痛い目を見て以来、他のものを試すのもためらってしまう
    • https://old.reddit.com/r/geek/comments/ddh5p/comment/c0zfics...
  • PDF仕様を見て「いいね、これ用の パーサー を書いてみたい」と思った人に祝福を

    • SumatraPDFを作った立場から、公平に言うとPDFレンダリング自体を自前で書いたわけではない。それは本当に一筋縄ではいかない。
      以前はpopplerを使っていて、後にMuPDFへ切り替えた。当時はMuPDFのほうが活発で、その後popplerも勢いを増したようだ。
      中核となるPDF機能セット自体の実装は、そこまでひどくはない。見てきた限り、厄介で複雑なのは後から追加されたXMLのようなもの、フォーム内のJavaScript、ベクターマスキングのような複雑なベクターグラフィックス機能、複数の色空間対応とCMYK分版、フォント処理とテキストレンダリングだ。
      壊れたPDFも高速にレンダリングしなければならない点も難しく、PDFは作成時に壊しやすく、人は想像しうるあらゆる方法で壊してくる。AdobeやChromeで開けるなら単に「不正なPDF」とも言えないので、MuPDFの開発者たちは壊れたPDF文書も表示できるよう、多くのヒューリスティクスを追加している
    • パーサーそのものを作ったあとも、実際に何をどこへ表示すべきかを見極めるのは興味深い。特に手作業で作られた文書より生成された文書でその傾向が強く、要素の位置を求めるには行列を掛けなければならず、テキスト内容を把握するには非常にカスタムなコードポイント表のためのパーサーをさらに書かなければならない
    • 冗談ではない。昨日、PDFには JavaScript入りのフォーム があり得ることを知った。
      https://tcpdf.org/examples/example_014/
      これがいったいどう動くのか分からない
    • 実際にやってみた立場からすると、PDF仕様は多くの面で、現代のJavaScript開発者が作る多くの「API」よりはるかに正気で、よく設計されている。
      元の仕様はフォーマット内のバイト節約のために辞書キーに1文字を使うなど少し見栄えが悪いが、実際にはよく考えられた部分もある。Appearance Streams は前方・後方互換性の点で素晴らしく、PDFを置き換えるものが何もない最大の理由かもしれない
    • 仕様に従ったPDFファイル向けのパーサーを書くこと自体は、それほど難しくないかもしれない。もちろん完全なレンダラーとインターフェースを書くのは明らかに難しい。
      ただ、多くのPDFファイルは仕様に従っていないため、Adobeのパーサーのように不正なPDFファイルも寛容に受け入れる必要がある
  • SumatraPDFの 大型アップデート が昨日出た [1]。保留中の作業リスト [2] にはバグ修正や改善が数多く入っている。
    [1] https://github.com/sumatrapdfreader/sumatrapdf/releases/tag/...
    [2] https://github.com/sumatrapdfreader/sumatrapdf/issues/3672

    • 高度なオプションで、こんなふうに ダークモード 的に使っている。暖色系のページ色と暗い背景を設定する感じだ。
      MainWindowBackground = #191919
      FixedPageUI [
      TextColor = #282828
      BackgroundColor = #ebdbb2
      SelectionColor = #2d938f
      ...
      これまではAutoHotkeyで SumatraPDF-settings.txt を上書きして別モード間を切り替えていた。ちょっとしたスクリプトを共有したいが、少し前に突然壊れてしまった
    • ダークモードとキーボードでのタブ切り替えは、最高の軽量PDFリーダー に加わった素晴らしい機能だ
    • 印刷まわりの問題は直ったのだろうか。それが理由でいつも別のPDFビューアを使うことになっていた
  • ほかの人も言っているように、SumatraはMacやLinuxを使っているといつも恋しくなる数少ないWindows専用ユーティリティの1つだ。特に回路図、機械・技術図面、データシートを見るときに、毎日のように恋しくなる単純な操作が2つある。
    Alt + スクロールで拡大/縮小右クリック + ドラッグで移動だ。MacやLinuxでこの2つの機能を提供するビューアがあるのか気になる。MacのSkimはOption + スクロールと左クリック + ドラッグ移動をサポートしているが、別のキーやマウスボタンに再設定はできない

    • LinuxではZathuraがそれをサポートしている。違いは拡大/縮小がAltではなくCtrlだという点だ。右クリックドラッグは移動として動作する。
      本当に気に入っている機能の1つは、Page Downで次のページの先頭へ移動することだ。ページサイズにぴったり合わない拡大率で素早く流し読みしたいときに非常に実用的だ
    • Okularが本当に好きだ。特に、暗い赤の背景に黄色い文字でPDFを読めるテーマが気に入っている。ただ、Apple Silicon Mac Miniでは起動できなかった。最新のMac向けbrew formulaが壊れているようだ
    • FoxitはCtrl+スクロールで拡大/縮小し、左クリック+ドラッグで移動する。Macで動くし、Linuxでもおそらく動くはずだ。
      十分に近いのではないかと思う。本気でこだわるなら、アプリごとのキーボードエミュレーションや入力リマップをその場で行ってくれるシェアウェアアプリがあるはずだ。
      https://www.keyboardmaestro.com/main/ が標準的な解決策だと認識している
    • qpdfviewを使っていて、とても満足している。カスタマイズの自由度が高い
    • Skimが前面にあるときだけ、Karabiner ElementsとBetterTouchToolでその入力を再マッピングできるのではないかと思う
  • SumatraPDFのとても便利な点は、通常の画像ファイルが更新されると自動で再読み込みすることだ。だから、画像ファイルを保存する形でウィンドウ内にグラフィック出力を表示しやすい

    • 画像だけでなくPDF全体でも同じだ。仕事でPDFを生成しているが、更新コマンドを実行して終わった直後に変更がすぐ見えるのは素晴らしい
    • コマンドラインから選択したプリンターにPDFを送れるのもとても便利だ。少なくともWindowsではキラー機能
  • SumatraPDFが本当に好きだ。何年も使っていて素晴らしい。vimでLaTeXを書きながら、文書をSumatraに並べて開いたままコンパイルすると即座に更新される。
    ページが即時に再読み込みされるおかげで、作業フローが非常にスムーズになる

    • その通り。lervagにも敬意を表すべきだ。彼のvimtexプラグインは怪物級だ。
      おそらくそれを使っている可能性が高い。Sumatraと標準で統合され、MuPDFやSkimなどとも統合されている。その点がすばらしい
    • Evinceもこの機能をサポートしている。個人的には完全に必須の機能だと思う。
      Linuxに移る前にSumatraを少し使ったことがあるが、かなり良くて軽快だった
    • Atrilも自動で再読み込みする
  • 博士課程のあいだ、原稿や論文を書きながらPDFの変更をリアルタイムで見るために、Sumatra PDFを主力ツールとして使っていた。Acrobat有料版やFoxit無料版のほうが機能は多いが、変更中のファイルをロックしてしまう

    • 不要な制限を実装するとき、その制限がユーザーをどう妨げるかを十分に考えないと製品を損なうことがある、という良い例だ。Androidで同じようなことをするソフトウェア、たとえばSafetyNetやスクリーンショット防止のようなものも、Acrobat Readerのように無意味になってほしい