2011-02-08 46 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所示。

我不認爲有這樣做的第三方庫。