2011-02-08 27 views
2

iPhoneのSDKを使用して、HTML形式のページをPDF形式に変換したいですか?iPhoneSDKのHTMLからPDFへの変換

利用できるAPIまたはサードパーティライブラリはありますか?私は解決策を求めて周りを探索しましたが、実質的な資料を見つけることができませんでした。もちろん

乾杯

答えて

5

私が見つけたすべての良いアドバイスに基づいてクラスを作成しました。私はたくさん掘り下げてきました。私は、HTMLソースから複数ページのPDFを直接作成しようとしている人にとってクラスがうまく始めることを願っています。

あなたはいくつかの基本的なサンプルコードをここで全体のコードを見つけることができます:https://github.com/iclems/iOS-htmltopdf

私はあなたと私の要件とちょうど同じ問題を持っていたがあった。 - フルPDF(実際のテキスト、ノービットマップ) - スマート(Xピクセルごとにフルハイトのwebviewをカットするのに比べて)

このように、iOSがプリント用にページを分割するのと同じツールに頼っているので、私が使用するソリューションはかなりいいです。

Web表示用印刷フォーマッタ(最初の先端)に基づいて、私はセットアップUIPrintPageRenderer、私に説明してみましょう:一方で

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

1分以内に私の問題を解決しました... tx – Ankur

1

それは(可能であるが、手動でHTMLを解析し、解析されたコンテンツを使用して動的にPDFファイルを作成することによって、またはHTMLを表示し、PDFにそのコンテンツをレンダリングするためのWebViewを使用することによってのいずれかで画像として)thisトピックに示されているように。

私はこれを行うサードパーティのライブラリがないと思います。

関連する問題