图形不出现在Webview中

时间:2011-04-30 11:36:02

标签: cocoa webview core-plot

这个问题来自前一个问题: Problems creating a Webview for printing

我正在使用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];

我的问题是图像没有出现在Webview的打印版本中,或者如果我实例化一个带有Webview的窗口,则图像不会出现。如果我采用代码生成的原始HTML,将其粘贴到Coda然后预览它,图像就会出现没有问题。任何人都可以指出我正确的方向来解决这个问题。这可能是一个相当基本的错误,因为我是处理图像和Webview的新手。

修改

看起来这个问题与图像链接的格式有关,因为当我用网页上的图像替换生成的文件:/// ...链接时,html:// ...链接似乎工作正常。这并不能解释为什么它在Coda中工作而在Webview中不起作用。

1 个答案:

答案 0 :(得分:0)

问题解决了。将baseURL设置为tempImageURL解决了这个问题。一切都是好的。