2014-01-08 3 views
1

У меня есть данные для создания отчета с верхним колонтитулом и контентом.У IOS есть построитель отчетов в PDF

В содержании есть много группы, когда данные в каждой группе по площади страницы Добавить новую страницу и написать заголовок группы и продолжение содержания данных

Где я могу LIB. или что-то сделать эту задачу?

Thanks For Advance.

Добавить для запроса кода

NSArray *headObject = [uniqueStates allObjects];////Store head of each group 
    NSArray *detail; //Store all of data to present in table 

    int allData = [detail count]; // Tel amount of all data to show 
    /* 
    int headGroupline = 1; //Tel amount of head group line 
    int footGroupline = 1; //Tel amount of foot group line 
    */ 
    int detailIndex = 0; ///Tel what line we are now 
    int detailHeadIndex = 0; ///Tel what group we are now 
    int subdetail = 0; // Tel what line on group now 

    int aviableLineInpage = 24; // Line avilable in page for data to show 

    int allPage = 0; //Sum of all page 

    for (; detailIndex < allData;) { 
     allPage++; 
     for (int i=0; i < aviableLineInpage;) { 

      if (allData - detailIndex == 0) { 
       ///ShowgrandTotal 
       ........ 

       detailIndex++; 
       i+=25; 
      }else{ 
       if (i == 0) { 
        //Show Head Group 
        ...... 
       }else{ 
        if (subdetail == [[detail filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"(buy_date == %@)", headObject[detailHeadIndex]]] count]+1) { 
         detailHeadIndex++; 
         //Show Head Group 
          .......... 
        }else{ 
         if (subdetail == [[detail filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"(buy_date == %@)", headObject[detailHeadIndex]]] count]) { 
          //Show sum of each group 
           .......... 
          i++; 
          detailIndex++; 
          subdetail++; 
          detailHeadIndex++; 
         }else{ 
          //Show data of detail 
          ........................ 
          detailIndex++; 
          subdetail++; 
         } 
        } 
       } 
       i++; 
      } 

     }//for all line in page 
    }//for allData 

Это формат:

Дата 27/01/2014
data1
data2
Дата data3
сумма 27/01/2014

Дата 28/01/2014
данные data2
< ============ если страница тормоза добавить новую страницу и

Дата 28/01/2014
data3
дата сумма 28/01/2014

общая сумма ........

Но он идет

дата 27/01/2014
data1
data2
data3
дата сумма 27/01/2014

data1
data2
< ============ если страница тормоза добавить новую страницу и

дата 28/01/2014
data3
общая сумма ........

Большое спасибо

+1

, так что вы хотите сделать pdf на основе ваших данных? – Retro

+0

да У меня есть данные @Retro – Peerax

+0

Я создал динамическую страницу pdf с разной таблицей и разными строками, используя coreGraphics, так что вы хотите так? – Retro

ответ

0
int allData = [detail count]; // Tel amount of all data to show 
    /* 
    int headGroupline = 1; //Tel amount of head group line 
    int footGroupline = 1; //Tel amount of foot group line 
    */ 
    int detailIndex = 0; ///Tel what line we are now 
    int detailHeadIndex = 0; ///Tel what group we are now 
    int subdetail = 0; // Tel what line on group now 

    int aviableLineInpage = 24; // Line avilable in page for data to show 

    int allPage = 0; //Sum of all page 

    for (; detailIndex < allData;) { 
     allPage++; 
     for (int i=0; i < aviableLineInpage;) { 

      if (allData - detailIndex == 0) { 

       detailIndex++; 
       i+=25; 
      }else{ 
       if (i == 0) { 

        if (subdetail == -1) { 
         subdetail = 0; 
        } 
       }else{ 
        if (subdetail == -1) { 

         subdetail = 0; 
        }else{ 
         if (subdetail == [[detail filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"(buy_date == %@)", headObject[detailHeadIndex]]] count]) { 

          i++; 

          subdetail = -1; 
          detailHeadIndex++; 
          if (detailHeadIndex == [headObject count]) { 
           detailIndex++; 
          } 
         }else{ 

          detailIndex++; 
          subdetail++; 
         } 
        } 
       } 
      i++; 
      } 

     }//for all line in page 
    }//for allData 
0

Используйте CGPDFDocumentRef и связанные функции для создания документа PDF и каждой его страницы. Когда вы создаете страницу (UIGraphicsBeginPDFPageWithInfo), вы можете получить связанный контекст рисования (UIGraphicsGetCurrentContext).После того, как вы едите, что вы можете сделать в нескольких способах:

  1. Вы могли бы создать представление с вашими колонтитулами, добавить содержимое и сделать его в поле зрения (используя свой слой)
  2. Вы можете рисовать изображения и текст сразу в контексте (используя CoreText (CTFrameDraw))

Вам нужно создать логику, чтобы установить, сколько содержание может поместиться на любой странице, и когда вам необходимо создать новую страницу.

Кроме того, в зависимости от того, как вы выбираете рисование контента в контексте, вам может понадобиться масштабировать и преобразовывать (+ CGContextTranslateCTM) в контекст, чтобы ваш контент не перевернулся.

См. this Apple guide.

+0

Спасибо, но в формате PDF я могу его создать. На данный момент я использую код, который логически создает каждую страницу. Что я публикую по Вопросу. Спасибо за помощь – Peerax

+0

Вам нужно описать, в частности, что не так ... – Wain

+0

Неправильно это происходит не в моем конечном результате – Peerax

Смежные вопросы