这个问题来自前一个问题: 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中不起作用。
答案 0 :(得分:0)
问题解决了。将baseURL设置为tempImageURL解决了这个问题。一切都是好的。