2011-02-08 47 views
2

我想将一些html页面转换为PDF格式。是否有可能使用iPhone SDK?HTML到PDF转换iPhoneSDK

是否有任何API或第三方库可用?我已经搜索了解决方案,但无法找到任何实质性材料。

干杯

回答

5

我根据我发现的每一个好建议创建了一个类。我一直在挖掘很多,我希望我的课程能够为尝试从某些HTML源代码直接创建多页PDF的人提供一些良好的开端。

你会一些基本的示例代码在这里找到整个代码:https://github.com/iclems/iOS-htmltopdf

我刚刚同一个问题,因为你和我的要求是: - 完整的PDF(真正的文本,没有位图) - 智能多页(与每X像素切割全高度webview相比...)

因此,我使用的解决方案非常好,因为它使用iOS用于分割页面以供打印的相同工具。

让我解释一下,我安装一个UIPrintPageRenderer基于Web视图的打印格式(第一尖):

UIPrintPageRenderer *render = [[UIPrintPageRenderer alloc] init]; 

[render addPrintFormatter:webView.viewPrintFormatter startingAtPageAtIndex:0]; 

CGRect printableRect = CGRectMake(self.pageMargins.left, 
           self.pageMargins.top, 
           self.pageSize.width - self.pageMargins.left - self.pageMargins.right, 
           self.pageSize.height - self.pageMargins.top - self.pageMargins.bottom); 

CGRect paperRect = CGRectMake(0, 0, self.pageSize.width, self.pageSize.height); 

[render setValue:[NSValue valueWithCGRect:paperRect] forKey:@"paperRect"]; 
[render setValue:[NSValue valueWithCGRect:printableRect] forKey:@"printableRect"]; 

NSData *pdfData = [render printToPDF]; 

[pdfData writeToFile: self.PDFpath atomically: YES]; 

在此期间,我创建了UIPrintPageRenderer类别支持:

-(NSData*) printToPDF 
{ 

NSMutableData *pdfData = [NSMutableData data]; 

UIGraphicsBeginPDFContextToData(pdfData, CGRectZero, 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; 
} 
+0

在一分钟内解决了我的问题...... tx – Ankur

1

当然是可能的,但通过手动解析HTML和动态使用所解析的内容创建一个PDF文件,或通过使用web视图显示HTML和呈现其内容的PDF(作为图像),如this所示。

我不认为有这样做的第三方库。