2011-06-27 5 views
1

私はipadアプリケーションでPDFを生成しています。ページ区切りを追加する必要があるので、2番目のページを描画する前に要素を移動する必要もあります。たとえば、私の長いテーブルビューは、2番目、3番目のページなどをレンダリングする前に垂直方向に調整する必要があります...iOSでPDFを生成するときの配置要素

PDFの作成はかなりシンプルで、最初のページは完全に生成されていますが、次のページ何も起こらないための私のテーブルビューを移動するには、私のフレームを試してみて、設定:

-(void) createPDF { 

     NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
     NSString *documentsDirectory = [paths objectAtIndex:0]; 
     NSString *writableDBPath = [documentsDirectory stringByAppendingPathComponent:@"tmp.pdf"]; 

     CGContextRef pdfContext = [self createPDFContext:CGRectMake(0, 0, self.view.bounds.size.width, self.view.bounds.size.height) path:(CFStringRef)writableDBPath]; 

     NSLog(@"PDF Context created"); 
     CGContextBeginPage (pdfContext,nil); // 6 

     //turn PDF upsidedown 
     CGAffineTransform transform = CGAffineTransformIdentity; 
     transform = CGAffineTransformMakeTranslation(0, self.view.bounds.size.height); 
     transform = CGAffineTransformScale(transform, 1.0, -1.0); 
     CGContextConcatCTM(pdfContext, transform); 

     //Draw view into PDF 
     self.view.frame=CGRectMake(0, 0,self.view.bounds.size.width, self.view.bounds.size.height); 
     [self.view.layer renderInContext:pdfContext]; 

     CGContextEndPage (pdfContext);// 8 

     CGContextBeginPage (pdfContext,nil); 

     //turn PDF upsidedown 
     CGContextConcatCTM(pdfContext, transform); 

     // moving the table to an arbitrary position for testing, nothing happens in the PDF - view itself is updated 
     self.itemsTableView.frame = CGRectMake(100, 100, self.view.bounds.size.width, self.view.bounds.size.height); 
     [self.itemsTableView.layer renderInContext:pdfContext]; 

     CGContextEndPage (pdfContext);// 8 

     CGContextRelease (pdfContext); 
    } 
+0

実際にpdfの新しいページを作成していますか?これは、この図書館を理解するような苦痛です。がんばろう。 –

+0

「テストのためにテーブルを任意の位置に移動すると、PDFに何も起こりません」という意味はどうですか? PDFのビューコンテンツをレンダリングするので、スーパービュー内のビューの位置はレンダリングに影響しません。 – iPDFdev

+0

@Jesse - はい、ページを作成するのは魅力的です。 @iPDFdev - 理にかなっています。それではPDFビューのコンテキストにどのように配置すればいいですか? – Slee

答えて

0

それは、あなたのアプリがPDFを作成するために、クラウドサービスを使用するためのオプションである場合は、Docmosisを見ています。 PDFはドキュメントテンプレートに基づいているため、コードで計算することなくページ区切りなどを制御できます。あなたのアプリケーションは、要求に応じてデータを送信して、ドキュメントにデータを埋め込み、PDFが配信されるようにする必要があります。

関連する問題