1

ブラウザーで JBIG2 イメージをレンダリングしようとしています。pdf.js の一部であるこのスクリプトは、これを行うように見えます: https://github.com/mozilla/pdf.js/blob/master/src/core/jbig2.js

通常、pdf.jsの依存関係として実行されるため、使用方法に関する指示がありません(完全なPDFレンダリングのために、私は望んでいないか必要ありません。)

このスクリプトを使用して Web ページに JBIG2 画像をレンダリングする方法を誰か理解できますか?

4

3 に答える 3

1

誰もこれについてあなたを助けていないので、少なくともこの問題に関する私の進歩を共有させてください:

<script src="arithmetic_decoder.js"></script>
<script src="util.js"></script>
<script src="jbig2.js"></script>
<script>
    var jbig2 = new Jbig2Image();
    httpRequest = new XMLHttpRequest();
    httpRequest.responseType = 'arraybuffer';
    httpRequest.onreadystatechange = function() {
        if (httpRequest.readyState === 4) {
            if (httpRequest.status === 200) {
                var data = jbig2.parseChunks([{
                    data:new Uint8Array(httpRequest.response),
                    start:0,
                    end:httpRequest.response.byteLength
                }]);
                for (var i = 0; i < data.length; i++)
                    data[i] ^= 0xFF;
                console.log(data);
            } else {
                alert('There was a problem with the request.');
            }
        }
    };
    httpRequest.open('GET', "sample.jbig2");
    httpRequest.send(); 
</script>

したがって、これにより、関連するすべての依存関係が明確になり、parseChunks関数を呼び出す必要があると私が信じている方法が含まれています (XMLHttpRequest の arraybuffer と組み合わせた Uint8Array 部分については確信があります。そのようなもの)。データに返される配列は、ある種のピクセル配列のように見えますが、幅や高さに関する情報が不足しているため、続行する方法がわかりません。さらに、あなたが提供したサンプル.jbig2ファイルは、STDU ビューアー (ファイルを表示するために見つけた唯一の無料アプリ.jbig2) で破損エラーを示しているため、画像がほとんど白であるかどうかを確認できませんでした (結果のデータが示唆しているように)。幅も高さもなかったので、手で結果を出すのは良い考えのように思えました。あなたがそれを描きたいなら、行く方法はもちろんですcanvas要素 (理想的には、pixeldataarray を構築してから使用する必要がありますputImageData)。

ここで、残りのソリューションを「把握」する方法の概要を説明します。おそらく最もうまくいくのは、pdf.js をフォークし、ログを追加し、単一の jbig2 画像で pdf を生成し、上記の配列がキャンバスにどのように正確に描画されるか (および寸法がどのように/どこで決定されるか) を観察することです。

于 2014-03-16T02:01:19.120 に答える
0

PDF 仕様で使用される JBIG2 は、完全な JBIG2 仕様 (いわゆる埋め込みプロファイル) のサブセットです。たとえば、pdf では、1 つの共有シンボル ディクショナリのみを参照できる jbig2 ストリームを使用できます。完全な仕様にはこの制限はなく、すべての要素をまとめる形式も定義されています (これらはすべて pdfjs にはありません)。

要約すると、探しているものは技術的には可能ですが (多少の努力が必要です)、単純ではありません。

于 2014-03-10T21:34:50.353 に答える