我有一个网站的网址,并希望将其内容保存为MHT文件,如果不可能,则可以将其作为PDF文件。我找到了一个免费的图书馆(1年289美元)
http://www.chilkatsoft.com/mht-features.asp
我知道safari不支持MHT文件然后似乎不可能.. Safari支持webarcive格式,但我们的服务器不支持它。然后对我来说,只有2个选项可以将webcontent保存为mht或pdf。
我找到了一个obj-C代码来将webcontent保存为图像..
但我不想用这种方式(将其保存为图像 - >将其转换为pdf)
答案 0 :(得分:2)
要从MHT
创建website
,请执行以下操作:
NSString *googleString = @"http://www.google.com";
NSURL *googleURL = [NSURL URLWithString:googleString];
NSError *error;
NSString *googlePage = [NSString stringWithContentsOfURL:googleURL
encoding:NSASCIIStringEncoding
error:&error];
NSData *data = [googlePage dataUsingEncoding:NSASCIIStringEncoding];
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsPath = [paths objectAtIndex:0];
documentsPath = [documentsPath stringByAppendingPathComponent:@"test.mht"];
BOOL isSucess = [data writeToFile:documentsPath atomically:YES];
if (isSucess)
NSLog(@"written");
else
NSLog(@"not written");
在加载PDF
之后website
创建UIWebView
:
使用UIPrintPageRenderer
中的UIWebView
按照以下步骤操作:
Category
UIPrintPageRenderer
以获取PDF数据@interface UIPrintPageRenderer (PDF)
- (NSData*) printToPDF;
@end
@implementation UIPrintPageRenderer (PDF)
- (NSData*) printToPDF
{
NSMutableData *pdfData = [NSMutableData data];
UIGraphicsBeginPDFContextToData( pdfData, self.paperRect, nil );
[self prepareForDrawingPages: NSMakeRange(0, self.numberOfPages)];
CGRect bounds = UIGraphicsGetPDFContextBounds();
for ( int i = 0 ; i < self.numberOfPages ; i++ )
{
UIGraphicsBeginPDFPage();
[self drawPageAtIndex: i inRect: bounds];
}
UIGraphicsEndPDFContext();
return pdfData;
}
@end
#define kPaperSizeA4 CGSizeMake(595.2,841.8)
UIWebView's
webViewDidFinishLoad
delegate
使用UIPrintPageRenderer
的{{1}} property
。UIWebView