2010-05-06 3 views
1

Я пытаюсь отобразить таблицу для отображения продуктов (строк) на одной странице фиксированной страницы формата А4. Мне удается добавить таблицу с разделами заголовка/детали/нижнего колонтитула, но я не могу установить минимальную высоту для раздела деталей (например, 150 мм). Если я установил высоту 150 мм в строке детализации, то каждая строка будет иметь эту высоту 150 мм. Принимая во внимание, что каждая строка должна иметь минимальную высоту (может быть на нескольких строках, если содержимое некоторых столбцов завернуто).BIRT PDF-отчет: фиксированный стол?

 +---------+--------+--------------+ 
Tbl Hdr | col1 | col2 | col3  | 
     +---------+--------+--------------+ 
Tbl Dtl | [val1] | [val2] | [val3]  | 
     +---------+--------+--------------+ 
     |         | <-should have a variable heigth 
     +---------+--------+--------------+ 
Tbl Ftr |   |  |  Total | 
     +---------+--------+--------------+ 

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

Надеюсь, это имеет смысл (если бы я не мог предоставить более подробную информацию). Любая помощь будет принята с благодарностью.

ответ

1

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

Одна вещь, которую вы могли бы рассмотреть, - добавить вторую строку подробностей. Затем вы можете указать эту строку с фиксированной высотой и использовать оставшиеся пробелы. В качестве альтернативы поместите вторую таблицу в нижний колонтитул главной страницы, которая отобразит нужные данные и привяжет ее к нижней части страницы. Это имеет то преимущество, что он придерживается нижней части страницы, независимо от типа страницы (буква, A4 и т. Д.).

+0

Спасибо за ваш ответ , Я пошел с первым предложенным вами решением. Я также должен был сделать фиксированную цепочку строк видимой только после того, как rownum больше 3 (произвольное значение ...), чтобы избежать нежелательных разрывов страниц. Не очень хорошее решение, но я не могу больше тратить на это ... Еще раз спасибо за помощь. – kiwifrog

1

Альтернативой, когда с колонтитул не режет его:

У меня есть клиент, который хотел фиксированный размер таблицы, с фиксированной высотой строки. В результате он отобразил 10 строк.

Для того, чтобы обойти авто форматировщика:

Создать в Initialize сценарии переменных var rowCount = 0; reportContext.setGlobalVariable("rowCount",rowCount); .

В вашем сценарии получения добавьте rowCount++; перед return(true);. Затем измените if(!lineDataSet.fetch()) заявление на следующее:

if(!lineDataSet.fetch()){ 
    if(rowCount % 10 >0){ 
     row["column1"] = ""; 
     rowCount++; 
     return(true); 
    } 
    return(false); 
} 

Это может быть полезно во многих ситуациях, когда вам нужно создать поддельные данные раздуть из таблиц (например, пропущенные даты)