1

私は現在、リモート サーバーから PDF をダウンロードして描画するアプリに取り組んでいます。Google マップのピンのような注釈を PDF (静的描画部分) に描画したいと考えています。さらに、ユーザーがピンに触れたかどうかを検出し、この PDF (動的描画部分) に calloutBox を描画したいと考えています。明らかに、pdf をスクロール可能/ズーム可能にしたいと考えています。これを達成する良い方法を知っている人はいますか?

私が調査したこと: 1) UIWebView でレンダリングします。これは素晴らしい解決策のように思えますが、PDF に描画コードを実装する方法が明確ではありません。描画用に UIWebView の上に透明な UIView を作成すると言う人がいると聞きました。これには問題があるようですが、ズームとスクロールをどのように処理しますか?

2) Quartz 2D を使用して、サーバーから取得した PDF から独自の PDF を生成します。独自の PDF コンテンツを描画すると、静的マーカー ピンを描画できます。この PDF を取得したら、それを WebView に挿入できます。ただし、このアプローチの問題は、ユーザーがピンをタップしたときに吹き出しボックスの動的な描画を処理する必要があり、問題 1 に戻ることです。

4

1 に答える 1

2

Apple がこの問題に関して多くを提供していないことは間違いありません。PDFドキュメントをプレビューして表示できるものがありUIWebViewますが、注釈を追加するのには実際には適していません。注釈を付けるためではなく、PDF ドキュメントを読み取るためのブラック ボックスとして意図されています。

CGContextRefスクロール、ズーム、およびタッチ処理/描画を自分でやり直す必要があります。Apple のZoomingPDFViewerの例は良い出発点です。

私は 2010 年からこの問題に取り組んでおり、PSPDFKit と呼ばれる iOS、Android、Web 向けの PDF 注釈用の商用ソリューションを提供しています。Apple の CoreGraphics レンダラーよりも優れた正確なカスタム レンダラーを出荷していますが、より興味深い点は、すべての一般的な PDF 注釈タイプを処理できることです。メモ注釈を使用できますピンを表示して動かしたり、メモを追加したり、デフォルトのタップ処理を操作/オーバーライドしたりします (たとえば、人々がピンをタップしたときに独自のポップオーバーを表示します)。また、常に同じサイズであるため、PDF 内の正確な位置に固定することができ、同じサイズのままズームインできます。最良の部分は、これがすべて PDF 仕様の一部であるため、Apple の Preview アプリまたは Adob​​e Acrobat でも動作するため、人々はマークアップを保存/カスタマイズしてから、すべてを PDF に保存できることです。アーキテクチャは柔軟であるため、すべてをデータベースに保存したり、サーバーに同期したりして、タッチ処理に使用することもできます。

自分で構築することもできます。基本的なアーキテクチャは、UIScrollView管理される および ビューです。ズームを行い、同じサイズとタッチ処理を維持する必要があるビューがあり、複数選択や通常のインク描画なども必要な場合は、すぐに注意が必要です。また、モバイル デバイスでは PDF ドキュメントのレンダリングが非常に遅くなる可能性があるため、ある種の画像キャッシュ レイヤーを追加することもできます。ああ、テキストを選択可能にしたり、検索を実装したりしたい場合は、Adobe CMap and CIDFont Files Specification と呼ばれるうさぎの穴に備えてください。

于 2016-05-12T07:45:26.767 に答える