2

学校向けのアプリを作っており、スケジュールが変更されているかどうかを確認できます。すべてのスケジュール変更はここにリストされています:http ://www.augustinianum.eu/roosterwijzigingen/14062012.pdf 。そのページでキーワード(EditTextに入力されているユーザーのグループ)を検索したいと思います。edittextが特定の文字列と一致するかどうかをアプリでチェックする方法を見つけたので、今はそのページのすべてのテキストを文字列にダウンロードするだけで済みます。しかし、問題は、それが単純なWebページではなく、PDFページであるということです。PDFからテキストを抽出し、そのテキストを文字列に入れて、。を使用して文字列でキーワードを検索するには、特別なPDFライブラリなどが必要だと聞きましたcontains()。しかし、私はそれについていくつか質問があります:

  • このPDFはPDF-creatorで作成されており、スキャンされたページなどではありません。たとえば、テキストを選択したり、CTRL+Fを使用してキーワードを検索したりできます。それで、PDFなどを抽出することが実際に必要なのか、それとももっと簡単な方法があるのだろうか。

  • アプリに毎回、たとえば1時間ごとに変更をチェックしてもらいたい。それで、PDFをダウンロードして1時間ごとにテキストを抽出する必要があります(約8ページ)、それは非常に多くのジュースを消費しますか?

  • 私がやりたいことをやってくれる図書館はたくさんあると聞きました。では、どちらを使用すればよいですか?(可能であれば、無料のものが欲しいです:))

  • 誰かが私のコードでそれを使用する方法を私に説明できますか?(私は実際には経験がないので、plzはそれを少し簡単にしてください:))

どうもありがとうございました!!!

4

2 に答える 2

4

残念ながら、私はJavaを使用していなかったため、Javaコードに自分で実装する必要があります。今、私はあなたに話します、私がそれをどのように最終的にしたか:

1)私はあなたのリンクでファイルを取りました。PHPは@fopen( "http:// ...")によってそれを行っています。

2)バイナリとして開き(重要です)、2つの部分を抽出しました:

2.1)データ3 0 obj部分。これは、作成日と変更日を表します。正規表現でやった。それは単純で、私はそれを上で述べました。

2.1)収縮したデータを表す50objからのデータストリーム。重要!Microsoft Excel0D 0Aは、改行として2バイトを挿入します。regexpでコンテンツをフィルタリングするときは、それを忘れないでください。最初と最後のこのバイトは、抽出された文字列に含まれている必要はありません。

3)関数$ uncompressed = @gzuncompress($ compressed)でコード化されたものを膨らませ、外部ファイルに入れます。あなたはそこで結果を見ることができます

4)おかしな部分。テキスト形式のファイル内の生データ。のように見え[(V)-4(RI)16(J)] TJ、を意味しVRIJます。PDFのテキストについては、PDFリファレンスv1.7、パート5で読むことができます。

5)正規表現は、データの抽出や変換に役立つと思います。

重要:「5 0 objからのデータストリーム」と言いましたが、オブジェクトの番号は「変更される可能性があります」。ディクショナリ->ページ->ページ->コンテンツチェーンからオブジェクトへの参照を制御する必要があります。上記のマニュアルに記載されている「パン粉」の説明。

残念ながら、ExcelはPDFにテーブル構造を埋め込みませんが、テキスト部分の座標を見つけて解釈することはできます。とにかくそれは混乱です。

親愛なるマーリン、難しいと思いますか?いいえ、そうではありません。Unicode記号がないため、難しくはありません。PDFのユニコードは本当のサックです!

幸運を!

于 2012-07-31T23:43:27.040 に答える
1

This PDF was made by Microsoft Excel and have the date stamps:

3 0 obj
<</Author(Janszen, Jan) 
/CreationDate(D:20120613153635+02'00') 
/ModDate(D:20120613153635+02'00') 
/Producer(˛ˇMicrosoftÆ ExcelÆ 2010) 
/Creator(˛ˇMicrosoftÆ ExcelÆ 2010)>>
endobj

You can use almost any programming language for taking the file by URL and extraction "ModDate" content. New ModDate means information update. For extracting this information you need not any libraries - this is the text in the file, lines 9, 10 and 11.

Ask Jan Janszen to add you in distribution list. The data in the file is encoded. You have to use a lot of programming techniques to reach source and restore information.

于 2012-07-23T04:30:20.010 に答える