我的PDF Reader显示像这样的细白线

但是此文件在acrobat Reader上工作正常并且没有白线,这是我处理pdf文件的方式

CGRect contentRect = CGRectMake(0, 0, width, height);
CGContextRef context = CGBitmapContextCreate(NULL,
                                             width,
                                             height,
                                             8,                     /* bits per component*/
                                             width * 4,     /* bytes per row */
                                             colorSpace,
                                             kCGImageAlphaPremultipliedLast | kCGBitmapByteOrder32Big);

CGColorSpaceRelease(colorSpace);
CGContextSaveGState(context);
CGContextClipToRect(context, CGRectMake(0, 0, width, height));

// First fill the background with white.
CGContextSetRGBFillColor(context, 1.0,1.0,1.0,1.0);
CGContextFillRect(context,contentRect);
CGContextSetInterpolationQuality(context, kCGInterpolationHigh);
CGContextSetRenderingIntent(context, kCGRenderingIntentDefault);

CGContextDrawPDFPage(context,page);
CGImageRef image = CGBitmapContextCreateImage(context);
CGContextRestoreGState(context);
CGContextRelease(context);


我应该怎么做才能解决这个问题,
更新我的代码或对我的PDF文件做些什么?

最佳答案

-(void)openPDfFile:(CGPDFDocumentRef)pdf


{
    //获取我们将要绘制的PDF页面
    页面= CGPDFDocumentGetPage(pdf,pageNumer);
    CGPDFPageRetain(page);

// determine the size of the PDF page
CGRect pageRect = CGPDFPageGetBoxRect(page, kCGPDFCropBox);
pdfScale = self.frame.size.height/pageRect.size.height;
pageRect.size = CGSizeMake(pageRect.size.width*pdfScale, pageRect.size.height*pdfScale);


// Create a low res image representation of the PDF page to display before the TiledPDFView
// renders its content.
UIGraphicsBeginImageContext(pageRect.size);

CGContextRef context = UIGraphicsGetCurrentContext();

// First fill the background with white.
CGContextSetRGBFillColor(context, 1.0,1.0,1.0,1.0);
CGContextFillRect(context,pageRect);

CGContextSaveGState(context);
// Flip the context so that the PDF page is rendered
// right side up.
CGContextTranslateCTM(context, 0.0, pageRect.size.height);
CGContextScaleCTM(context, 1.0, -1.0);

// Scale the context so that the PDF page is rendered
// at the correct size for the zoom level.
CGContextScaleCTM(context, pdfScale,pdfScale);
CGContextDrawPDFPage(context, page);
CGContextRestoreGState(context);

UIImage *backgroundImage = UIGraphicsGetImageFromCurrentImageContext();

UIGraphicsEndImageContext();

backgroundImageView = [[UIImageView alloc] initWithImage:backgroundImage];
backgroundImageView.frame = pageRect;
backgroundImageView.contentMode = UIViewContentModeScaleAspectFit;
[self addSubview:backgroundImageView];
[self sendSubviewToBack:backgroundImageView];

[self createPage:pageRect];


}

-(无效)createPage:(CGRect)pageRect
{
    //根据PDF页面的大小创建TiledPDFView并缩放它以适合视图。
    pdfView = [[TiledPDFView alloc] initWithFrame:pageRect andScale:pdfScale];
    [pdfView setPage:page];

self.frame = pdfView.frame;

[self addSubview:pdfView];


}

尝试这些方法!

10-08 06:13