1

PDFドキュメントのページをレンダリングしようとしています。Adobe Reader で PDF を開くと、ページが正しく表示されます。ビューにレンダリングしようとすると、画面の端に追加の「アイテム」が表示されます。ガイドラインやページ作成日のように見えます。すべての PDFBox オプションを使用してみましたが、適切なオプションを見つけることができませんでした。ページをレンダリングするために TiledPDFView クラスを使用しています。それはCATiledLayerクラスを使用します。関連するメソッドを次に示します。

-(void)drawLayer:(CALayer *)layer inContext:(CGContextRef)ctx
{
    CGContextSetRGBFillColor(ctx, 1.0,1.0,1.0,1.0);
    CGContextFillRect(ctx, self.bounds);
    CGContextSaveGState(ctx);
    CGContextTranslateCTM(ctx, 0.0, self.bounds.size.height);
    CGContextScaleCTM(ctx, 1.0, -1.0);
    //I've tried many options in the PDFBox parameter.
    CGContextConcatCTM(ctx, CGPDFPageGetDrawingTransform(pdfPage, kCGPDFCropBox, self.bounds, 0, false));
    CGContextDrawPDFPage(ctx, pdfPage);
    CGContextRestoreGState(ctx);
}

これらのガイドラインを削除する方法が本当にわかりません。それは私の限界の問題かもしれません。

画像!

4

1 に答える 1

1

CGPDFPageGetDrawingTransformメソッドを使用せず、自分で変換を行うだけで、この問題を解決できました。後で参照できるように、ここで共有するコードを少し見つけました。どこからコードを入手したか覚えていませんが:(。

-(void)drawRect:(CGRect)rect
{
    CGContextRef context = UIGraphicsGetCurrentContext();
    CGContextSetFillColorWithColor(context, [UIColor whiteColor].CGColor);
    CGContextFillRect(context, rect);
    CGContextGetCTM(context);
    CGContextScaleCTM(context,1,-1);
    CGContextTranslateCTM(context, 0, -rect.size.height);
    CGRect mediaRect = CGPDFPageGetBoxRect(pdfPage, kCGPDFCropBox);
    CGContextScaleCTM(context, rect.size.width/mediaRect.size.width, rect.size.height / mediaRect.size.height);
    CGContextTranslateCTM(context, -mediaRect.origin.x, -mediaRect.origin.y);
    CGContextDrawPDFPage(context, pdfPage);
}
于 2013-02-11T16:54:15.510 に答える