Reputation: 183
My PDF Reader shows thin white line like this
but this file works fine on acrobat reader and no white line, here is how i handle my pdf file
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);
What i should do to solve this issue , update my code or do something to my PDF file?
Upvotes: 0
Views: 305
Reputation: 79
This did help in my case
CGContextSetInterpolationQuality(context, kCGInterpolationHigh);
CGContextSetShouldAntialias(context, NO); // solves the problem with white lines
Upvotes: 1
Reputation: 701
-(void)openPDfFile:(CGPDFDocumentRef)pdf
{
// Get the PDF Page that we will be drawing
page = 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];
}
-(void)createPage:(CGRect)pageRect { // Create the TiledPDFView based on the size of the PDF page and scale it to fit the view. pdfView = [[TiledPDFView alloc] initWithFrame:pageRect andScale:pdfScale]; [pdfView setPage:page];
self.frame = pdfView.frame;
[self addSubview:pdfView];
}
try these methods !!
Upvotes: 1