2017-02-02 5 views
0

Почему при расщеплении таблицы на новую страницу/заполнение/изменение полей страницы? Посмотрите, что я имею в виду: TableПочему при расщеплении таблицы на новую страницу изменяется страница?

Код:

//Some logic to get data. 
PdfPTable table = new PdfPTable(cols); 
    table.setWidthPercentage(100); 
    table.setHorizontalAlignment(Element.ALIGN_JUSTIFIED_ALL); 

    Phrase headerText = new Phrase(header); 
    headerText.setFont(FontFactory.getFont(FontFactory.COURIER_BOLD,14.6f)); 

    PdfPCell headerRow = new PdfPCell(headerText); 
    headerRow.setColspan(7); 
    headerRow.setBackgroundColor(BaseColor.LIGHT_GRAY); 
    headerRow.setHorizontalAlignment(Element.ALIGN_CENTER); 
    headerRow.setPadding(5); 

    table.addCell(headerRow); 

    Set<Integer> keys = data.keySet(); 

    double sum = 0; 
    for (Integer key : keys) { 
    //There data is added in table... 
    } 

    //generate pdf 
    Document document = new Document(); 
    ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); 


    PdfWriter.getInstance(document,byteArrayOutputStream); 
    document.open(); 
    document.setMargins(5,5,5,5); 
    document.add(table); 
    document.add(p); 
    document.add(paragraph); 
    document.addCreationDate(); 
    document.addTitle("Tenant activity"); 

    document.close(); 

    logger.debug("Pdf generated"); 
    File f = new File("activity.pdf"); 
    logger.debug("File path: " + f.getAbsolutePath()); 

Как установить отступы для страницы/края для таблицы же, как на первой странице, на каждой странице?

ответ

1

Это неправильный порядок:

document.open(); 
document.setMargins(5,5,5,5); 

Это правильный порядок:

document.setMargins(5,5,5,5); 
document.open(); 

При открытии документа или при вызове document.newPage(), следующая страница инициализируется, и вы не может изменять свойства страницы, такие как размер или поля этой страницы.

Так что если вы измените размер страницы или полей, эти изменения будут действительны только на странице ряд, а не на текущей странице.

Почему это? Ну, это PDF, все на основе страницы, и как только страница была инициализирована, вы получите некоторые странные побочные эффекты, если вы измените эти свойства при добавлении контента.

+0

Спасибо, Бруно за ответ. – GVArt