2

この掲示板で質問するのは初めてです。私の英語が正しくない場合は申し訳ありませんが、これは私の母国語ではありません。通常、私はいつもこのフォーラムまたはグーグルで答えを見つけます。しかし、今回は見つかりませんでした。

これが私の質問です(Mac OS X Lion):

私はいくつかのPDFを持っています。テストのために、「プレビュー」を使用して一部のページを回転させたり、PDFKit ([PDFPage setRot:90]) を使用してプログラムで PDF の一部のページを回転させたりします。この新しい PDF を保存します。出力は、一部のページが回転した PDF です。すべてが正常であることを確認するために、プレビューまたはその他で再度開きます。これで問題ありません。表示は正しいです。ここまでは順調ですね。

ここで、この新しく作成された PDF を開き、PDF ページの回転値 (ページごと) を取得しようとしています。PDFKIT メソッド [PDFPage rotation] または CGPDF を使用した Quartz メソッドを試してみました... (CGPDFPageGetRotationAngle)、ページの回転に対して常に値 0 を取得します。NSLog(@"値:%d", 角度)

PDFKIT メソッドを使用して再現するには、Apple の「PDF Annotation Editor」コードを使用するだけです。横向きと縦向きのページがある PDF を開きます。期待通りの表示になります。しかし今、「rotation = [page rotation];」行で値の回転を読み取ろうとしています。transformContextForPage:(PDFPage*)page メソッドでは、常に 0 を取得します。ページに応じて、期待値が 0 または 90 になる場合。CGPDFPageGetRotationAngle で Quartz メソッドを使用しようとすると、同じ問題が発生します。

何か不足していますか?バグですか?または、PDF ページの回転に関する私の理解が間違っていますか?

ありがとう

4

1 に答える 1

1

PDF では、ページ サイズを 8.5*11in に設定し、ページの回転属性を 90 に設定するか、ページ サイズを 11*8.5in に設定するという 2 つの方法で回転ページを作成できます。視覚的には違いはありません。
プレビュー (およびその背後にある PDFKit も想定) の問題は、回転を 90 に設定すると、単純に Rotate 属性を 90 に設定するのではなく、ページの幅と高さを切り替え、ページ コンテンツに変換を適用することです。ページのコンテンツが回転して表示されるようにストリーミングします。[PDFPage rotation] と CGPDFPageGetRotationAngle は Rotate 属性の値を返すため、Preview と PDFKit で回転したページでは常に 0 を返します。

于 2012-01-26T09:04:26.820 に答える