Jeff Wang
Jeff Wang

Reputation: 183

PDF Reader,thin white line

My PDF Reader shows thin white line like this enter image description here

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

Answers (2)

obb64
obb64

Reputation: 79

This did help in my case

CGContextSetInterpolationQuality(context, kCGInterpolationHigh);
CGContextSetShouldAntialias(context, NO); // solves the problem with white lines

Upvotes: 1

taus-iDeveloper
taus-iDeveloper

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

Related Questions