如何从iOS网站创建MHT或PDF文件?

时间:2015-04-08 15:10:13

标签: ios pdf mhtml

我有一个网站的网址,并希望将其内容保存为MHT文件,如果不可能,则可以将其作为PDF文件。我找到了一个免费的图书馆(1年289美元)

http://www.chilkatsoft.com/mht-features.asp

我知道safari不支持MHT文件然后似乎不可能.. Safari支持webarcive格式,但我们的服务器不支持它。然后对我来说,只有2个选项可以将webcontent保存为mht或pdf。

我找到了一个obj-C代码来将webcontent保存为图像..

ios save web page as pdf

但我不想用这种方式(将其保存为图像 - >将其转换为pdf)

1 个答案:

答案 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

为A4尺寸添加这些定义

#define kPaperSizeA4 CGSizeMake(595.2,841.8)

现在UIWebView's webViewDidFinishLoad delegate使用UIPrintPageRenderer的{​​{1}} property

UIWebView