2015-04-30 2 views
0

Мы создали PDF-файл в альбомном режиме с верхним и нижним колонтитулом как часть pdf. Таблица заголовка и нижнего колонтитула хорошо отображается в pdf с использованием itextpdf5.1.1 jar. Однако, когда мы обновляем банку до 5.5.3, таблица заголовков не показывает только нижние колонтитулы. Ниже приведен фрагмент кода.Заголовок таблицы в pdf, отображаемый с использованием itextpdf5.1.1, но не в itextpdf5.5.3

document = new Document(PageSize.A4.rotate(), 20, 20, 75, 20); 

PdfCopy copy = new PdfCopy(document, new FileOutputStream(strPDFFile)); 
document.open(); 
PdfReader pdfReaderIntermediate = 
    new PdfReader(strIntermediatePDFFile); 
numberOfPages = pdfReaderIntermediate.getNumberOfPages(); 
Font ffont = new Font(Font.FontFamily.UNDEFINED, 7, Font.NORMAL); 
System.out.println("###### No. of Pages: " + numberOfPages); 
for (int j = 0; j < numberOfPages;) { 
    page = copy.getImportedPage(pdfReaderIntermediate, ++j); 
    stamp = copy.createPageStamp(page); 
    Phrase footer = 
     new Phrase(String.format("%d of %d", j, numberOfPages), ffont); 
    ColumnText.showTextAligned(stamp.getUnderContent(), 
           Element.ALIGN_CENTER, footer, 
           (document.right() - document.left())/
           2 + document.leftMargin(), 
           document.bottom() - 10, 0); 
    if (j != 1) { 
     headerTable = new PdfPTable(2); 
     headerTable.setTotalWidth(700); 
     headerTable.getDefaultCell().setFixedHeight(10); 
     headerTable.getDefaultCell().setBorder(Rectangle.NO_BORDER); 
     headerTable.getDefaultCell().setHorizontalAlignment(Element.ALIGN_LEFT); 
     headerTable.addCell(new Phrase(String.format(header1), ffont)); 
     headerTable.getDefaultCell().setHorizontalAlignment(Element.ALIGN_RIGHT); 
     headerTable.addCell(new Phrase(String.format(header2), ffont)); 
     headerTable.getDefaultCell().setHorizontalAlignment(Element.ALIGN_LEFT); 
     headerTable.addCell(new Phrase(String.format(header3), ffont)); 
     headerTable.getDefaultCell().setHorizontalAlignment(Element.ALIGN_LEFT); 
     headerTable.addCell(new Phrase(String.format(header5, j), 
             ffont)); 
     headerTable.completeRow(); 
     headerTable.writeSelectedRows(0, 5, 60.5f, 550, 
             stamp.getUnderContent()); 


    } 


    stamp.alterContents(); 
    copy.addPage(page); 

} 
document.close(); 

Когда мы меняем банку с 5.1.1 до 5.5.3, заголовок теряется. Возможно, потребуется изменение в том, как мы называем заголовок для новой банки.

Любые входы будут оценены по достоинству. Спасибо.

ответ

0

У вас есть клетки с по умолчанию заполнения (например, 2) и высоту 10, а вы пытаетесь вставить текст на высоте 7. Но 2 (верхний край) + 7 (высота текста) + 2 (нижнее поле) = 11, то есть больше, чем припадки в вашу высоту ячейки 10. Таким образом, текст не подходит и не отображается.

Вы можете исправить это либо

  • меньшим шрифтом, например, 6 или
  • с использованием высокоэлементной ячейки, например. 11 или
  • с использованием меньшего дополнения, например. 1:

    headerTable.getDefaultCell().setPadding(1); 
    

С любым из этих изменений, ваш заголовок показывает.

Я не знаю, каким образом iText 5.1.1 обрабатывал это по-другому, но поведение текущих версий iText имеет смысл.

+0

Вышеуказанные исправления были полезными. Большое спасибо! Я до сих пор не знаю, как iText 5.1.1 проигнорировал их, но при исправлении значений для заполнения ячеек и значения шрифта я смог отобразить заголовок в pdf с помощью iText 5.5.3 –