Hi All,

I am trying to create a pdf document that contains a grid of images with titles 
underneath.  I successfully create the pdf with the image, but the text does 
not appear.  

My code, more or less, follows the examples in the Quartz 2D guide for drawing 
text. But obviously I am doing something incorrectly. The code is posted below. 
 Using NSLog(), I can validate that the title strings actually contains 
something and have a valid length.  When I comment out the code for drawing the 
images, I don't see any title text underneath where the image was placed.

Are there any additional steps I need to take to get the text into my pdf?  Am 
I missing something obvious?

TIA,

douglas

---

    //+
    //  Create a PDF document to hold the contact sheet items
    //-
    
    pdfContext = CGPDFContextCreateWithURL( (CFURLRef)targetURL, 
&paperRectangle, NULL );

    CGContextSelectFont( pdfContext, "Helvetica", 10, kCGEncodingMacRoman );
    CGContextSetCharacterSpacing( pdfContext, 10 );
    CGContextSetStrokeColorWithColor( pdfContext, CGColorGetConstantColor( 
kCGColorBlack ));
    CGContextSetFillColorWithColor( pdfContext, CGColorGetConstantColor( 
kCGColorBlack ));
    CGContextSetTextDrawingMode( pdfContext, kCGTextFillStroke );
    CGContextSetTextMatrix( pdfContext, CGAffineTransformIdentity );
    
    pageInfo = CFDictionaryCreateMutable( NULL, 0, 
&kCFTypeDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks );
    boxData = CFDataCreate( NULL, (const UInt8 *)&paperRectangle, sizeof 
(CGRect) );
    CFDictionarySetValue( pageInfo, kCGPDFContextMediaBox, boxData );

    pageIndex = 1;

    while ( pageIndex <= self.numberOfPages )
          {
            CGPDFContextBeginPage( pdfContext, pageInfo );
            
            imageIndex = ( pageIndex - 1 ) * ( self.numberOfColumns * 
self.numberOfRows );

            rowIndex = 0;
            columnIndex = 0;

            horizontalPosition = leftMargin + paperRectangle.origin.x;
            verticalPosition = CGRectGetMaxY( paperRectangle ) - topMargin - 
imageHeight;

            //+
            //  Draw all the images on this page
            //-
            
            while ( imageIndex < [self.contactSheetItems count] && imageIndex < 
( pageIndex * ( self.numberOfColumns * self.numberOfRows )))
                  {
                    item = [self.contactSheetItems objectAtIndex: imageIndex];
                    itemImage = (CGImageRef)[item imageRepresentation];
                    
                    targetRectangle = CGRectMake( horizontalPosition, 
verticalPosition + titleOffset, imageWidth, imageHeight - titleOffset);
                    itemRectangle = AVMakeRectWithAspectRatioInsideRect( 
CGSizeMake( CGImageGetWidth( itemImage ), CGImageGetHeight( itemImage )),  
targetRectangle );
                    
                    CGContextDrawImage( pdfContext, itemRectangle, itemImage ); 
 

                    CGContextSetTextPosition( pdfContext, horizontalPosition, 
itemRectangle.origin.y - titleOffset );
                    CGContextShowText( pdfContext, [[item imageTitle] 
UTF8String], [[item imageTitle] length] );
                    
                    NSLog( @"-- title: %@, length: %ld", [item imageTitle], 
[[item imageTitle] length] );
                                        
                    columnIndex++;
                    if ( columnIndex >= self.numberOfColumns )
                       {
                         columnIndex = 0;
                         horizontalPosition = leftMargin + 
paperRectangle.origin.x;
                         
                         rowIndex++;
                         if ( rowIndex >= self.numberOfRows )
                            {
                              rowIndex = 0;
                              verticalPosition = CGRectGetMaxY( paperRectangle 
) - imageHeight;
                              }
                            else
                                 verticalPosition = verticalPosition - 
imageHeight - adjustedIntercellSpacing;
                         }
                       else            
                            horizontalPosition = horizontalPosition + 
imageWidth + adjustedIntercellSpacing;
                    
                    imageIndex++;
                    }
            
            CGPDFContextEndPage( pdfContext );
            
            pageIndex++;
            }
    
    //+
    //  All done
    //-
    
    CGContextRelease( pdfContext );


_______________________________________________

Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)

Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com

Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

Reply via email to