Графика не отображается в веб-представлении - PullRequest
0 голосов
/ 30 апреля 2011

Этот вопрос следует из предыдущего вопроса: Проблемы с созданием Webview для печати

Я использую Webview для печати графиков, созданных с использованием платформы Core Plot. Следующий код используется для заполнения Webview:

    NSData        *imageData = [[barChart imageOfLayer] TIFFRepresentation];
NSString      *temporaryImagePath = NSTemporaryDirectory();
NSError       *error = nil;

NSBitmapImageRep*   imageRep    = [NSBitmapImageRep imageRepWithData:imageData];
NSData*             pngData;

pngData = [imageRep representationUsingType:NSJPEGFileType 
                                 properties:nil];

temporaryImagePath = [temporaryImagePath stringByAppendingPathComponent:@"jpegData.jpg" ];
[pngData writeToFile:temporaryImagePath 
               options:NSDataWritingAtomic 
                 error:&error ];

WebView *printView;

printView =[[WebView alloc] initWithFrame:NSMakeRect(0, 0, 300, 1000)
                                frameName:@"printFrame" 
                                groupName:@"printGroup"];

NSString *theCSSString = [self theFileCodeForString:@"OutputFormat"
                                      withExtension:@"CSS"
                                       withContents:@"<style type=\"text/css\">#results {font-family:\"Trebuchet MS\", Arial, Helvetica, sans-serif;width:100%;border-collapse:collapse;} #results td, #results th {font-size:1em;border:1px solid #98bf21;padding:3px 7px 2px 7px;} #results th {font-size:1.1em;text-align:left;padding-top:5px;padding-bottom:4px;background-color:#A7C942;color:#ffffff;} #results tr.alt td {color:#000000;background-color:#EAF2D3;} </style>"];

NSMutableString *theURLString = [[NSMutableString alloc] initWithString:@"<html>"];
[theURLString appendString:@"<head>"];
[theURLString appendString:theCSSString];
[theURLString appendString:@"</head>"];

[theURLString appendString:@"<body>"];
NSURL *tempImageURL = [NSURL fileURLWithPath:temporaryImagePath];
[theURLString appendFormat:@"<img src=\"%@\"/>", [tempImageURL absoluteString]];
[theURLString appendString:@"</body></html>"];

[[printView mainFrame] loadHTMLString:theURLString
                  baseURL:[NSURL URLWithString:@"xxxx"]];

[[[[printView mainFrame] frameView] documentView] print:sender];
[printView release];

Моя проблема в том, что изображение не отображается ни в печатной версии веб-просмотра, ни в том случае, если я создаю окно с веб-представлением, изображение не отображается. Если я возьму необработанный HTML-код, сгенерированный кодом, вставьте его в Coda, а затем просмотрите его, и изображение появится без проблем. Может ли кто-нибудь указать мне в правильном направлении, как это исправить. Вероятно, это довольно простая ошибка, так как я довольно плохо знаком с работой с изображениями и веб-представлениями.

Редактировать

Похоже, проблема связана с форматом ссылки на изображение, потому что, когда я заменяю сгенерированный файл: /// ... ссылка на ссылку html: // ... с изображением в сети все Кажется, работает нормально. Это не объясняет, почему это работает в Coda, но не в Webview.

1 Ответ

0 голосов
/ 01 мая 2011

Проблема решена. Установка baseURL для tempImageURL решила проблему. Все хорошо.

...