3

PurePDF を使用して PDF ファイル内の情報を収集しようとしていますが、PurePDF に読み取らせることができません。

PurePDF が pdf を読み込もうとすると、ヘッダーが見つからないというメッセージが表示されます。デバッグを試みたところ、bytearray から読み取った文字列が日本語の文字になっていることに気付きました。PurePDF に渡す前に、pdf の bytearray のエンディアンを変更しようとしましたが、何も変更されませんでした。

PDF ファイルは、テキストとして開くたびに「%PDF-」ヘッダーが表示されるので問題ありませんが、何らかの理由で actionscript が間違った文字コードを取得しているため、PurePDF がまったく機能しません。

何か案は?

ありがとう。


更新: 私は bytearray のスペシャリストではありませんが、デバッガーを介してコードの実行を追跡し、文字を取得するために readInt() を使用していることがわかったので、それを readByte() に書き直しました。 PDFを読んでいます!機能が機能するかどうかはまだわかりません...低レベルのプログラミングに詳しい人は、何が起こっているのか説明できますか? プロジェクトがsvnで壊れているとは思わない

これは私が使用しているコードです。非常に簡単だと思います。

private function loadPdf():void
    {
        var loader:URLLoader=new URLLoader();
        loader.dataFormat=URLLoaderDataFormat.BINARY;
        loader.addEventListener(Event.COMPLETE, onLoadComplete);
        loader.load(new URLRequest(PDF_FILE));
    }

protected function onLoadComplete(event:Event):void
    {
        var data:ByteArray = URLLoader(event.target).data as ByteArray;
        pdfReader = new PdfReader(data);
        pdfReader.readPdf();
    }
4

1 に答える 1

0

私はこれまでPurePDFを使用したことがありませんが、bytearrayを使用してファイルから情報を抽出しました。このPDFから正確に何を取得したいですか?テキストだけを抽出しますか?また、PDFへのリンクをアップロードできますか?同じことを見ていると、助けやすくなります。

日本語のテキストについて...PDFをバイト配列で読む場合、そのデータのほとんどはファイル構造などを設定するためのものであるため、人間が読めるテキストを簡単に見つけることは期待できません。PDFの実際のテキストと画像は、というタグ内に配置されます。ストリーム。したがって、通常、テキストのストリームを見つけて、それをバイト配列に抽出します。テキストを正しく表示するには、PDFデータに記載されているデコーダータイプ(UTF-8、UTF-16など)を使用します。

以下のこのリンクは、PDFストリームについてよりよく説明しています:(「/ Length」はバイト配列の長さになり、「Filter」はデコードタイプ(ASCIIなどの文字セットタイプ)などを示します)

http://blog.didierstevens.com/2008/05/19/pdf-stream-objects/

とにかく、PDFを16進エディタで開くと、これはすべて理にかなっています。必要な場合は、以下を試してください。これで、ストリームの位置を確認し、そこから抽出するようにAS3に指示できます。

http://www.hhdsoftware.com/free-hex-editor

それでも問題が解決しない場合は、PDFをどこかにアップロードして、ドキュメントから抽出しようとしている内容を正確に伝えてください。私はそのために正確な助けを与えるように努めます(約束はなく、ただ助けようとします)。平和。

于 2013-02-18T07:57:28.360 に答える