2012-05-04 8 views
1

Я использую следующий рисовать текст на PDF в прошивкой:CGContextShowTextAtPoint и символ евро

CGContextSelectFont (pdfContext, "Helvetica Bold", 14, kCGEncodingMacRoman); 
NSString *str1 = [NSString stringWithString:@"€ 10"]; 
CGContextShowTextAtPoint(pdfContext, 25, y-60 , [str1 cStringUsingEncoding:NSMacOSRomanStringEncoding], [str1 length]); 

Знак евро отображаются в виде квадрата.

У вас есть предложения?

пс. Я тоже пытаюсь использовать [str1 UTF8String], тот же результат

ответ

2

В большинстве случаев проще использовать методы NSString - (CGSize)drawAtPoint:(CGPoint)point withFont:(UIFont *)font или - (CGSize)drawInRect:(CGRect)rect withFont:(UIFont *)font, а не эквиваленты CoreGraphic. Apple заботится о том, как вы думаете, как правильное преобразование, кодирование и т. Д.

+0

Если я переключу последнюю строку моего опубликованного кода с этим: '[str1 drawInRect: CGRectMake (25, y-60, 500, rowHeight) withFont: [UIFont fontWithName: @" Helvetica "size: 14.0]]; 'ничего не отображается –

+0

, вы установили другой цвет заливки, прежде чем вы назовете drawInRect? Если его по-прежнему фоновый цвет вашего контекста, вы ничего не увидите. –

+0

Вы имеете в виду следующее: 'CGContextSetFillColorWithColor (pdfContext, [UIColor blueColor] .CGColor); [str1 drawInRect: CGRectMake (25, y-60, 500, rowHeight) withFont: [UIFont fontWithName: @ "Helvetica" size: 14.0]]; 'В этом случае я ничего не вижу и получаю : CGContextSetFont: недопустимый контекст 0x0 –

0

Я не знаю, если он что-то делает, но вы пробовали использовать kCGEncodingFontSpecific для четвертого параметра вашего CGContextSelectFont? Если это не так, вам, возможно, придется использовать Core Text. Я никогда не использовал Core Text, но похоже, что генерация текста немного более надежна, чем обычный Quartz 2D.

К @ предложению Джонатана-Cichon, я также сгенерированные PDF-файлы из UIView с, на которых я просто поставить (он предложил NSString-х drawAtPoint и т.д., я использовал обычные старые UILabel сек!), А затем оказывается, что к моему pdfContext, но это также имеет очевидные недостатки. Если вы уже находитесь в пути контекста PDF, я предлагаю вам использовать Core Text, если kCGEncodingFontSpecific этого не делает. См. Это SO discussion для других соображений по этой теме.

В конце концов, я нашел, что генерация PDF немного ограничена (но, с другой стороны, удивительно, что iOS может создавать PDF-файлы вообще). В моем случае я был разочарован отсутствием вложения шрифтов в PDF, поэтому в итоге я создал образы своего текста, оказанные менее распространенными шрифтами (потому что я получал квадратные блоки, к которым вы ссылаетесь в своей проблеме).

+0

kCGEncodingFontSpecific не помогло, я пробовал это до публикации –

+0

Тогда я предполагаю, что Core Text - это путь , – Rob

Смежные вопросы