MVReport 0.1.3

MVReport 0.1.3

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

Moroverse维护。



MVReport 0.1.3

介绍

2011年,苹果公司推出了iOS打印API,这是一组旨在简化iOS设备打印的类。这些类将允许用户组成打印文档并将其发送到打印机。然而,这并没有完全解决报告问题。如果用户想要打印文档,可以使用这些新类,但如果用户想要生成文档并通过邮件发送或以其他方式共享,则需要放弃这种方法并使用C框架来生成PDF报告。MVReport旨在通过引入与苹果打印类类似的类集来解决此问题,但它不仅限于打印。它使用相同的范例、格式化器和页面渲染器对象,并在有意义的方面使用相同的方法。但它还通过添加一些新对象来扩展功能,这些对象允许生成可重复的内容以及相对于其他部分的文本段的位置。

我将这个版本标记为0.1,因为它需要针对一些边缘情况进行更多测试,并且代码中有一些部分我目前对它们的外观不满意。我可以想象一些相当复杂的用例通过现有的类和方法解决,但我还没有尝试足够多的它们来称其为1.0版本。

如何开始

  • 下载MVReport并尝试其中的iPhone和iPad示例应用
  • 查看文档以详细了解MVReport中可用的所有API

安装

使用方法

要运行示例项目,请克隆仓库,然后首先从Example目录运行pod install

简单的页面元素

如果您只想生成包含部分文本或简单重复内容的文档,可以使用这种方法。创建一个具体的MVReport实例,根据您希望生成的报告类型进行初始化(目前只有MVPDFReport可用),并使用您的MVReportPageInfo对象初始化它。创建一个具体的MVReportPageElement实例,并用您的纯文本或HTML文本初始化它。将MVReportPageElement实例附加到MVReport实例的pageElement属性,并生成报告。

MVReport *report = [[MVPDFReport alloc] initWithPageInfo:myPageInfo];
MVReportPageElement *pageElement = [[MVReportSimpleTextFormatter alloc] initWithText:mySimpleText];
report.pageElement = pageElement;
NSData *data = [report generateReport];

结果是一个PDF文档,可以写入文件、通过电子邮件发送或发送到打印机...

报告部分

如果需要在报告中放置重复内容,您可以使用 MVReportSection 类。如果没有必要创建分区标题、页脚或与重复内容无关的某些自定义绘图,则不必子类化 MVReportSection。但是,您需要创建自定义的 MVReportSectionElement 子类,该类将用于绘制一个分区的一行。您可以将它视为表格行单元格。在您的子类中,您将重写返回内容矩形的(换句话说,行的行高度)的方法,以及实际绘图的方法。

@interface MyAcmeElement : MVReportSectionElement

@property (nonatomic, copy)NSString *text;

@end

@implementation MyAcmeElement

- (CGRect)rectForContentRect:(CGRect)contentRect
{
if (contentRect.size.height > 44)
{
contentRect.size.height = 44;
}

return contentRect;
}

- (void)drawInRect:(CGRect)rect forPageAtIndex:(NSInteger)pageIndex
{
CGRect myRect = CGRectInset(rect, 3, 3);
[self.text drawInRect:myRect withAttributes:textAttributes];
}

@end

拥有 MyAcmeElement 类,构建报告变得非常简单。

NSMutableArray *textElements = [NSMutableArray array];
for (NSString *text in myTextArray)
{
MyAcmeElement *element = [[MyAcmeElement alloc] init];
element.text = text;
[textElements addObject:element];
}

MVReportSection *section = [[MVReportSection alloc] init];
section.sectionElements = textElements;

MVReport *report = [[MVPDFReport alloc] initWithPageInfo:myPageInfo];
report.pageElement = section;

NSData *data = [report generateReport];

页面渲染器

待定

在页面渲染器中组合页面元素

待定

yêu cầu

MVReport 0.1 及更高版本需要 Xcode 5,目标为 iOS 7.0 及更高版本。MVReport 使用 ARC。

作者

Daniel Moro,Moroverse - [email protected]

许可证

MVReport 在 MIT 许可证下可用。有关更多信息,请参阅 LICENSE 文件。