我正在尝试使用BNHtmlPdfKit将一些HTML保存为PDF。为了查看它是否有效,我正在尝试获取一个网页并将其写入PDF。我无法使其正常工作。下面是我的代码。
首先,我包含委托人引用:
@interface PPToolsTableViewController () <BNHtmlPdfKitDelegate>
然后,我执行以下操作:
NSString *exportsPath = [[PPHelpers documentsPath] stringByAppendingPathComponent:[NSString stringWithFormat:@"exports/Exported.pdf"]];
BNHtmlPdfKit *htmlPdfKit = [[BNHtmlPdfKit alloc] init];
htmlPdfKit.delegate = self;
[htmlPdfKit saveUrlAsPdf:[NSURL URLWithString:@"http://google.com"] toFile:exportsPath];
没发生什么事。没有错误,没有委托方法触发:
- (void) createPdf:(id)sender {
NSLog(@"Create PDF");
}
- (void)htmlPdfKit:(BNHtmlPdfKit *)htmlPdfKit didSavePdfData:(NSData *)data {
NSLog(@"PDF Save Data");
}
- (void)htmlPdfKit:(BNHtmlPdfKit *)htmlPdfKit didSavePdfFile:(NSString *)file {
NSLog(@"PDF Save File");
}
- (void)htmlPdfKit:(BNHtmlPdfKit *)htmlPdfKit didFailWithError:(NSError *)error {
NSLog(@"PDF Error");
}
熟悉此库的任何人都可以为我提供一个可行的示例吗?或者也许发现我在这里做的事情出了什么问题?提前致谢。
最佳答案
我终于在文档中找到了这个小片段,这使我找到了解决方案:
请务必在外部保留对BNHtmlPdfKit对象的引用。
调用方法的范围。否则,将不会有任何委托方法
叫...
因此,将BNHtmlPdfKit对象设置为@property
可以实现所有不同:
@property (strong, nonatomic) BNHtmlPdfKit *htmlPdfKit;
...然后工作了:
NSString *exportsPath = [[PPHelpers documentsPath] stringByAppendingPathComponent:[NSString stringWithFormat:@"exports/Logbook.pdf"]];
self.htmlPdfKit = [[BNHtmlPdfKit alloc] init];
self.htmlPdfKit.delegate = self;
[self.htmlPdfKit saveUrlAsPdf:[NSURL URLWithString:@"http://google.com"] toFile:exportsPath];
现在一切都好了。 :)