問題タブ [cgpdf]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
1336 参照

iphone - CGPDF - FlateDecode フィルターを使用した画像の保存

仕事用に PDF パーサーを作成しています。Core Graphics を使用してコールバックですべてのデータを読み込み、Lib Haru で書き出しています。これは、クライアントが「実際の」注釈を書き出す必要があり、CG ができないためです。やれ。

さて、画像を取得するところまで来ました (そして、画像を描き始める直前に画像をファイルに保存していることを確認します) が、問題が発生しました。Resource ディクショナリからすべての Image XObjects を取得し、このコードでそれらを保存しようとしています

ここで、objectStream は CGPDFDictionaryGetStream を使用して XObject を抽出しています。フィルターが「DCTDecode」の場合は正常に動作しますが、フィルターが「FlateDecode」の場合は常に、保存された画像が破損して開きません。

この投稿で、CGPDFStreamCopyData は FlateDecode でテキストをデコードできることを読みました(コメントの投稿の最後まで) が、CGPDFDataFormats には 3 つのデータ形式しかなく、どれも機能しません。

FlatDecode でエンコードされたテキストにも問題があると思います。これをデコードする方法について何か提案はありますか? 確かに CGPDF には、私が開こうとしたほぼすべての pdf に表示されるため、これを処理するものがあります (ただし、見つけることはできませんでした)。

編集: zlibを使用して解凍できるいくつかの場所を読んだので、それを行う方法について見つけることができたこのコードを試しました:

コードを実行しても例外はスローされませんでしたが、結果の画像はまだ判読できませんでした。

0 投票する
1 に答える
647 参照

objective-c - CGPDFScannerScan がコールバック関数を起動しない

Quartz を使用して pdf ファイルを解析します。

1 つのファイルを除いて、すべて正常に動作します。コールバック関数はまったく呼び出されません。

オペレーター テーブルが作成されました。CGPDFOperatorTableSetCallbackを使用してオペレーターをテーブルに追加しました。コールバックが呼び出されないだけで、すべて問題ないようです。

この動作の原因は何ですか?

0 投票する
1 に答える
806 参照

ios - iOS PDF からプレーンテキストへのパーサー

私はこの件についてかなり迷っています。私はここSOに関するほぼすべての投稿を読んだことがあります。誰かが私を正しい方向に向けてくれれば、とても感謝しています。

PDF があり、そのテキストを抽出したいのですが、単語とスペースだけに関心があります。CGPDFScanner をセットアップしましたが、これはコールバック メソッドです。私が読んだことは、テキストの抽出に関する限り、TJ、Tj、qout(')、および doubleqout(") の 4 つの演算子だけを考慮する必要があるということです。

文字をまとめて単語を形成するか、スペースで区切るかを判断できるように、テキストスペースも追跡する必要があると思います。しかし、私はこれをどのように行う必要があるのか​​ わかりません。

PDF では、すべてのテキストが形式になっています。

しかし、これらの数値が何を意味するのか (PDF 仕様を使用して) 理解できませんでした。SO の誰かが、PDF の仕様を怖がってはいけないと言いましたが、率直に言って、読みやすく、理解しやすいとは思いません。

役に立った PDFKitten コードを調べました。

どんな助けでも大歓迎です。

0 投票する
0 に答える
204 参照

ios - CGPDFObject 取得 ID

CGPDFObject の ID を取得するにはどうすればよいですか?

PDFにこの辞書があります:

私は以下を使用して取得します:

これでCGPDFDictionaryApplyFunction、辞書内のキーと値のペアを取得する方法がわかりました。しかし、どうすれば自分のオブジェクト ID と世代番号を取得できますか? (この場合は 3 と 0)。

編集: なぜこれらの情報が必要なのですか? ファイルにテキスト注釈を追加しようとしています。私の理解では、iOS でこれを行う「高レベル」の方法はありません。新しいセクション (外部参照テーブル、オーバーライドされたオブジェクト、トレーラーなど) を手動で追加する必要があります。したがって、オーバーライドしたいオブジェクトの ID と世代番号、およびオーバーライドするオブジェクトで参照されているオブジェクト (オーバーライドされたページの /Resources、/Contents など) を取得することは避けられません。

0 投票する
1 に答える
749 参照

iphone - CGPDFScannerPopString が奇妙な結果を返す

私はついにある種のpdfスキャナーを動作させました。問題なくコールバック関数を読み込みますが、CGPDFScannerPopString からの結果を NSLog しようとすると、次のような結果が得られます。

ここに文字列が見つかりません...

それが何であるかについてのアイデアはありますか?これは私のコールバック関数です:

もうありがとう!

編集:PDFの例

0 投票する
1 に答える
240 参照

objective-c - PDFストリームのTJコールバックから生成されたCGPDFArrayからの重複したCGPDFStrings

OK、PDFコンテンツストリームを解析しているところ、TJコールバックが文字列の配列を生成することがわかったので、それを取得して繰り返し処理を開始し、次のような文字列値を取得します。

唯一の問題は、これが私の出力です:

2で割り切れる数に等しい場合は、forループを終了することにしましたiが、これは非常にずさんで非効率的であるように思われるので、誰かが解決策を持っているか、問題が何であるかについて何か考えがあるかどうか疑問に思っています...私は同じ結果で複数のPDFファイルを試しました。

私の簡単な簡単な修正は、これからforループを変更することでした:

これに:

0 投票する
2 に答える
4090 参照

ios - iOSで2つのPDFファイルをマージ

iOSで2つのPDFファイルをマージしようとしています。ページごとにマージしています。非常に大きなファイルの場合、時間がかかります。ページごとではなく、2つのファイルをマージする方法はありますか?

必要に応じて、コードを投稿できます。

私のコードはここSOのコードに似ています