Hi,
I've managed to draw on the page bitmap / create a bitmap from the rendered page. But I don't know how to submit my changes to the actual cashed PDFDIB.
So, inside the -(void)Render; of @implementation PDFVCache / PDFVPage.m I have draw on the page and saved it to disk for testing. But I don't know how to replace the actual PDFDIB /m_dib with my own changed one (ie with the CGImageRef/UiImage that I've just generated from the PDFDIB ) so that my custom text will show/display.
Any help with doing this will be much appreciated; here is my testing code:
-(void)Render;
{
if( m_status == 2 ) return;
if( !m_page )
m_page = [m_doc page:m_pageno];
if( m_dib == 0 )
{
PDFDIB *dib = [[PDFDIB alloc] init:m_dibw: m_dibh];
[m_page renderPrepare:dib];
m_dib = dib;
}
else
[m_page renderPrepare:m_dib];
if( m_status == 2 ) return;
PDFMatrix *mat = [[PDFMatrix alloc] init:m_scale: -m_scale: 0: m_dibh];
[m_page render:m_dib :mat :renderQuality];
if (m_pageno==0) //render custom text on first page for testing
{
Byte *data = (Byte *)[m_dib data];
int w = [m_dib width];
int h = [m_dib height];
CGDataProviderRef provider = CGDataProviderCreateWithData( NULL, data, w * h * 4, NULL );
CGColorSpaceRef cs = CGColorSpaceCreateDeviceRGB();
CGImageRef imageRef = CGImageCreate( w, h, 8, 32, w<<2, cs, kCGBitmapByteOrder32Little|kCGImageAlphaNoneSkipFirst, provider, NULL, FALSE, kCGRenderingIntentDefault );
UIFont *font = [UIFont boldSystemFontOfSize:18];
CGSize imgsize=CGSizeMake(w, h);
NSString *WText=[NSString stringWithFormat:@"%s" , "custom watermark test text"];
UIGraphicsBeginImageContext(imgsize);
UIImage* uiImage = [[UIImage alloc] initWithCGImage:imageRef];
[uiImage drawInRect:CGRectMake(0,0,w,h)];
CGRect rect = CGRectMake(10, 10, w, h);
[[UIColor redColor] set];
[WText drawInRect:CGRectIntegral(rect) withFont:font];
UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
// Create path.
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *filePath = [[paths objectAtIndex:0] stringByAppendingPathComponent:@"Image.png"];
// Save image for test.
[UIImagePNGRepresentation(newImage) writeToFile:filePath atomically:YES];
//HOW CAN I SAVE NOW MY IMAGE CHANGES TO m_dib/PDFDIB? HELP :-)
}
[self RenderFinish];
}
Thank you for your time.