2016-05-06 12 views
1

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

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

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

答えて

2

Appleが正しいこの問題の点ではあまり提供していません。プレビューしてPDF文書を表示することができるUIWebViewがありますが、アノテーションを追加するのには本当に適していません。また、ビューを持つ「ソリューション」は、まったくそれをやってしまうと非常に壊れやすくなります。これは、PDFドキュメントを読むためのブラックボックスとしての意味であり、注釈のためのものではありません。

あなたはすべてCGContextRefに戻って、スクロール、ズーム、タッチ操作/描画を引き継ぐ必要があります。 AppleのZoomingPDFViewerの例が良いスタートです。

私はこの問題を2010年から取り組んでおり、私たちはPSPDFKitというiOS、Android、Web用のPDFアノテーション用の商用ソリューションを提供しています。 AppleのCoreGraphicsレンダラーよりも優れた、より正確なカスタムレンダラーを出荷しますが、興味深い点は、すべての一般的なPDF注釈タイプに対応できることです。 note annotationsを使ってピンを表現したり、移動したり、ノートを追加したり、デフォルトのタップ処理をオーバーライド/オーバーライドしたりできます(たとえば、ユーザーがタップしたときに自分のポップオーバーを表示するなど)。それらは常に同じサイズであるため、PDFの正確な位置に固定することができ、同じサイズのままズームインすることができます。最も重要なのは、これがPDF仕様の一部であるため、アップル社のプレビューアプリやAdobe Acrobatでも動作するため、マークアップを保存/カスタマイズしてPDFに保存することができます。このアーキテクチャーは柔軟性があり、すべてをデータベースに保存したり、サーバーにバックアップして、単にタッチ処理に使用することもできます。

自分で構築することもできます。基本的なアーキテクチャはUIScrollViewであり、管理されているビューです。あなたがズームして同じサイズを維持する必要があるビュー+タッチ操作をすると、多分手に負えないことがあります。多分選択や定期的なインク描画のようなものを望むか​​もしれません。 PDFドキュメントのレンダリングはモバイルデバイス上では非常に遅くなる可能性があるため、イメージキャッシュレイヤーを追加することも必要です。ああ、テキストを選択可能にするか検索を実装する場合は、Adobe CMap and CIDFont Files Specificationと呼ばれるウサギの穴の準備をしてください。

+0

私はあなたの答えを受け入れました。私のニーズに合わせて、実際にはPDFをレンダリングする必要はありません。これは単に用語の製品が使用していた、彼らは本当にpngやjpgのような画像を意味した。私が行う必要があるのは、UIScrollViewに埋め込まれたUIImageViewを使用することだけです。 subViewの部分では、スクロール中にビューを固定したままにするために、それらをサブビューとしてscrollViewに追加することができます。ピンチ時にサブビューの位置を更新するには、ピンチが動的に発生するため、サブビューの中心プロパティを更新する必要があります(これは難しい部分です) – AyBayBay

関連する問題