JDBC データ ソースからJasperReportBuilderを使用してレポートを作成しています。その後、 JasperHtmlExporterBuilderオブジェクト パラメータを指定してtoHtmlメソッドを呼び出して HTML にエクスポートします。各行、列ヘッダー行、さらにはタイトルのテキストの上にある余分なスペースを取り除こうとしています。考えられることはすべて試しましたが、オンラインで検索しても無駄でした。
ほとんどの人は逆の問題を抱えているようです。テキストに合わせて行を拡大する必要があります。行をコンテンツの高さに強制したいと思います。それが不可能な場合は、行の高さを制限していただければ幸いです。
HTML エクスポーターは、画像を挿入してその高さを設定することで、行の高さを制御しているようです。
どんな助けでも大歓迎です。ありがとう!
編集:これが私のコードです。
String imageServletUrl = "images?image=";
StringWriter writer = new StringWriter();
JasperHtmlExporterBuilder htmlExporter = Exporters.htmlExporter(writer);
htmlExporter.setImagesURI(imageServletUrl);
SqlRowSet rowSet = getData(databaseIpAddr, portNumber, databaseName, databaseUser, databasePassword);
JRDataSource ds = createDataSource(rowSet);
JasperReportBuilder builder = DynamicReports.report();
IntegerType intType = DynamicReports.type.integerType();
DateType dateType = DynamicReports.type.dateType();
int rowHeightPx = 20;
TextColumnBuilder<Integer> col1 = col
.column(COL_TITLE_RESULT_NUM, RESULTS_COL_TITLE_RESULT_NUM, intType)
.setWidth(35)
.setFixedHeight(rowHeightPx)
.setStretchWithOverflow(true);
... create other eight columns ...
StyleBuilder titleStyle = stl.style()
.bold()
.setFontSize(22)
.setHorizontalAlignment(HorizontalAlignment.CENTER);
StyleBuilder columnTitleStyle = stl.style()
.bold()
.setAlignment(HorizontalAlignment.CENTER, VerticalAlignment.MIDDLE)
.setBorder(stl.pen1Point());
StyleBuilder columnStyle = stl.style()
.setAlignment(HorizontalAlignment.CENTER, VerticalAlignment.MIDDLE)
.setLineSpacing(LineSpacing.SINGLE)
.setBorder(stl.pen1Point());
TextFieldBuilder<String> titleBuilder = DynamicReports.cmp
.text(selectedAgency)
.setStyle(titleStyle)
.setFixedHeight(20);
TextFieldBuilder<String> subtitleBuilder = DynamicReports.cmp
.text("Start Time: " + startDate + " " + getStartTime() + ", End Time: " + endDate + " " + getEndTime())
.setFixedHeight(20);
TextFieldBuilder<String> noDataMsgBuilder = DynamicReports.cmp
.text(NO_DATA_MSG)
.setStyle(columnStyle);
builder
.title(titleBuilder)
.addPageHeader(subtitleBuilder)
.setColumnTitleStyle(columnTitleStyle)
.columns(col1, col2, col3, col4, col5, col6, col7, col8, col9)
.setColumnStyle(columnStyle)
.highlightDetailOddRows()
.noData(titleBuilder, subtitleBuilder, noDataMsgBuilder)
.setWhenNoDataType(WhenNoDataType.NO_DATA_SECTION);
String reportHtml;
try {
// this seems to be required to get to the DynamicReports images
getContext().getRequest().getSession().setAttribute(ImageServlet.DEFAULT_JASPER_PRINT_SESSION_ATTRIBUTE, builder.toJasperPrint());
builder.toHtml(htmlExporter);
reportHtml = writer.toString();
}
catch (DRException e)
{
e.printStackTrace();
reportHtml = "There was an error generating the report";
}