BNHtmlPdfKit 0.4.2

BNHtmlPdfKit 0.4.2

测试测试
语言语言 Obj-CObjective C
许可证 MIT
发布最新发布2014年12月

Brent Nycum 维护。



  • By
  • Brent Nycum

BNHtmlPdfKit 可以轻松地将从 HTML 字符串或 URL 中获取的 HTML 数据转换为 iOS 上的 PDF 文件。请随意分叉此项目并帮助改进它!

如果您在您的应用中使用了 BNHtmlPdfKit,我会很乐意听到您的反馈

将 BNHtmlPdfKit 添加到您的项目中

只需将 BNHtmlPdfKit.hBNHtmlPdfKit.m 复制到您的项目中。

背景

这一切源于我在 2011 年 6 月发表的一篇帖子,当时我试图将 Html 数据保存为 PDF 并将 PDF 数据作为附件复制到电子邮件中。我一直想改进代码,最终做到了。这篇帖子至今仍为我的博客带来大量流量,比第二热门页面的流量高出 10 倍,并且仍然是一个人们正在努力解决的问题。

使用方法

务必在调用方法的作用域之外保留对 BNHtmlPdfKit 对象的引用。否则,不会调用任何代理方法

@interface MyCoolViewController () {
    BNHtmlPdfKit *_htmlPdfKit;
}

- (void) createPdf:(id)sender {
    _htmlPdfKit = [[BNHtmlPdfKit alloc] init];
    _htmlPdfKit.delegate = self;
    [_htmlPdfKit saveUrlAsPdf:[NSURL URLWithString:@"http://itsbrent.net/index.html"]];
}

@end

// Delegate methods go here...

初始化器

- (id)init;
- (id)initWithPageSize:(BNPageSize)pageSize;
- (id)initWithCustomPageSize:(CGSize)pageSize;

默认初始化器具有基于地区设置默认页面大小(感谢 Pierre Bernard)和 1/4 英寸边距。

保存 URL

BNHtmlPdfKit *htmlPdfKit = [[BNHtmlPdfKit alloc] init];
htmlPdfKit.delegate = self;
[htmlPdfKit saveUrlAsPdf:[NSURL URLWithString:@"http://itsbrent.net"] toFile:@"...itsbrent.pdf"];

仅保存 PDF 数据。

[htmlPdfKit saveUrlAsPdf:[NSURL URLWithString:@"http://itsbrent.net"]];

保存 HTML 字符串

BNHtmlPdfKit *htmlPdfKit = [[BNHtmlPdfKit alloc] init];
htmlPdfKit.delegate = self;
[htmlPdfKit saveHtmlAsPdf:@"<html>..." toFile:@"...itsbrent.pdf"];

仅保存 PDF 数据。

[htmlPdfKit saveHtmlAsPdf:@"<html>..."];

代理方法

- (void)htmlPdfKit:(BNHtmlPdfKit *)htmlPdfKit didSavePdfData:(NSData *)data;
- (void)htmlPdfKit:(BNHtmlPdfKit *)htmlPdfKit didSavePdfFile:(NSString *)file;
- (void)htmlPdfKit:(BNHtmlPdfKit *)htmlPdfKit didFailWithError:(NSError *)error;

每当为 Html 字符串或 URL 生成 PDF 数据时,都会调用 didSavePdfData。每当使用 toFile 方法保存 PDF 文件时,都会调用 didSavePdfFile

页面大小

BNHtmlPdfKit 支持许多最受欢迎的 纸张大小

  • 信函 - BNPageSizeLetter
  • 政府信函 - BNPageSizeGovernmentLetter
  • 法性 - BNPageSizeLegal
  • 青少年法性 - BNPageSizeJuniorLegal
  • 账本 - BNPageSizeLedger
  • 海报 - BNPageSizeTabloid
  • A0 - BNPageSizeA0
  • A1 - BNPageSizeA1
  • A2 - BNPageSizeA2
  • A3 - BNPageSizeA3
  • A4 - BNPageSizeA4
  • A5 - BNPageSizeA5
  • A6 - BNPageSizeA6
  • A7 - BNPageSizeA7
  • A8 - BNPageSizeA8
  • A9 - BNPageSizeA9
  • A10 - BNPageSizeA10
  • B0 - BNPageSizeB0
  • B1 - BNPageSizeB1
  • B2 - BNPageSizeB2
  • B3 - BNPageSizeB3
  • B4 - BNPageSizeB4
  • B5 - BNPageSizeB5
  • B6 - BNPageSizeB6
  • B7 - BNPageSizeB7
  • B8 - BNPageSizeB8
  • B9 - BNPageSizeB9
  • B10 - BNPageSizeB10
  • C0 - BNPageSizeC0
  • C1 - BNPageSizeC1
  • C2 - BNPageSizeC2
  • C3 - BNPageSizeC3
  • C4 - BNPageSizeC4
  • C5 - BNPageSizeC5
  • C6 - BNPageSizeC6
  • C7 - BNPageSizeC7
  • C8 - BNPageSizeC8
  • C9 - BNPageSizeC9
  • C10 - BNPageSizeC10
  • 日文 B0 - BNPageSizeJapaneseB0
  • 日文 B1 - BNPageSizeJapaneseB1
  • 日文 B2 - BNPageSizeJapaneseB2
  • 日文 B3 - BNPageSizeJapaneseB3
  • 日文 B4 - BNPageSizeJapaneseB4
  • 日文 B5 - BNPageSizeJapaneseB5
  • 日文 B6 - BNPageSizeJapaneseB6
  • 日文 B7 - BNPageSizeJapaneseB7
  • 日文 B8 - BNPageSizeJapaneseB8
  • 日文 B9 - BNPageSizeJapaneseB9
  • 日文 B10 - BNPageSizeJapaneseB10
  • 日文 B11 - BNPageSizeJapaneseB11
  • 日文 B12 - BNPageSizeJapaneseB12

自定义页面大小

BNHtmlPdfKit 也支持通过使用 customPageSize 属性来自定义页面大小。请以英寸 * 72.0f 的格式指定您的页面大小。

htmlPdfKit.customPageSize = CGSizeMake(8.5f * 72.0f, 11.0f * 72.0f);

横向支持

可以通过使用 landscape 属性或下面的自定义初始化方法来设置纸张大小及横向模式的支持。

- (id)initWithPageSize:(BNPageSize)pageSize isLandscape:(BOOL)landscape;

页边距大小

默认页边距大小设置为 1/4"。

htmlPdfKit.topAndBottomMarginSize = 0.25f * 72.0f;
htmlPdfKit.leftAndRightMarginSize = 0.25f * 72.0f;

待办事项

  • 修复页面大小,使其不使用四舍五入的英寸值。
  • 自定义顶部、左侧、底部和右侧页边距

联系

感谢