2015-02-04 6 views
0

Пожалуйста, помогите, я пытаюсь создать многостраничный pdf-файл в объекте-c на основе объектов массива, проблема в том, что на первой странице pdf задается текст объектов прекрасен, но когда он попадает на вторую страницу, текст начинается снова в нижней части страницы, я попытался сбросить значение newOriginY, но это игнорируется, если я не укажу, для какого индекса объекта, Я просто хотят данные, чтобы продолжить на второй странице, начиная сверху, вот код:Создание многостраничного PDF-файла в объекте-c

// Table setup 
CGRect frame; 
int newOriginX = 0; 
int newOriginY = 0; 

for (int i = 0; i < [allInfo count]; i++){ 
    NSArray *infoToDraw = [allInfo objectAtIndex:i]; 

    for (int j = 0; j < numberOfColumns; j++){ 

     if (j == 1) { 
      newOriginX = origin.x + (j * columnWidth + 80); 
     } 
     else if (j == 3){ 
      newOriginX = origin.x + (j * columnWidth - 60); 
     } 
     else{ 
      newOriginX = origin.x + (j * columnWidth); 
     } 

     newOriginY = origin.y + ((i + 1) * rowHeight); 

     if (i == 12) { 
      newOriginY = 0; 
      origin.y = 0; 
     } 

     frame = CGRectMake(newOriginX + padding, newOriginY + padding, columnWidth, rowHeight); 

     // Draw the text 
     [self drawText:[infoToDraw objectAtIndex:j] inFrame:frame]; 
    } 

    // Create new page 
    if (i == 11) { 
     UIGraphicsBeginPDFPageWithInfo(CGRectMake(0, 44, 540, 600), nil); 
    } 

} 

ответ

0

насколько я могу сказать origin.y не меняется. Это означает, что независимо от того, какая строка вы на нем, вы всегда будете дальше на своей странице. Например

newOriginY = origin.y + ((i + 1) * rowHeight); 
//newOriginY = 0 + ((12+1) *rowHeight); 

Попробуйте что-то вроде этого

// Table setup 
CGRect frame; 
int newOriginX = 0; 
int newOriginY = 0; 

for (int i = 0; i < [allInfo count]; i++){ 

    NSArray *infoToDraw = [allInfo objectAtIndex:i]; 

    for (int j = 0; j < numberOfColumns; j++){ 

     if (j == 1) { 
      newOriginX = origin.x + (j * columnWidth + 80); 
     } 
     else if (j == 3){ 
      newOriginX = origin.x + (j * columnWidth - 60); 
     } 
     else{ 
      newOriginX = origin.x + (j * columnWidth); 
     } 


     frame = CGRectMake(newOriginX + padding, newOriginY + origin.y, columnWidth, rowHeight); 

     // Draw the text 
     [self drawText:[infoToDraw objectAtIndex:j] inFrame:frame]; 

    } 

    newOriginY += (rowHeight + padding); 

    // Create new page 
    if (newOriginY >= 600) 
    { 
     newOriginY = 0; 
     UIGraphicsBeginPDFPageWithInfo(CGRectMake(0, 44, 540, 600), nil); 
    } 

} 

Я надеюсь, что помогает.

+0

Благодарим за ответ, к сожалению, это не решает проблему, так как создание следующей страницы не является проблемой, проблема заключается в сбросе параметра Y, где он печатается в цикле for, чтобы возобновление печати начиналось в верхней части следующей страницы, потому что в настоящий момент печать возобновляется в нижней части второй страницы. – Leethal

+0

Рад это услышать. Если это решило ваш вопрос, отметьте этот ответ как принятый. Если он не был достаточно близок к фактическому решению, убедитесь, что вы добавили ответ, который могут узнать другие. –

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