是否有一种方法可以使用BIRT API来降低报表的页边距?
我尝试将PDF呈现选项设置为:
PDFRenderOption renderOption = new PDFRenderOption();
renderOption.setOutputFormat(PDFRenderOption.OUTPUT_FORMAT_PDF);
renderOption.setOption(IPDFRenderOption.PDF_HYPHENATION, true);
renderOption.setOption(IPDFRenderOption.PDF_TEXT_WRAPPING, true);
renderOption.setOption(IPDFRenderOption.PAGE_OVERFLOW,
IPDFRenderOption.ENLARGE_PAGE_SIZE);基本上,我遇到的问题是,如果列中有一个较长的文本(从一个表中),它将在下一行得到它,但是如果我将IPDFRenderOption.PDF_HYPHENATION设置为false,我将在文本的中间分割文本(参见下面)。
将IPDFRenderOption.PDF_HYPHENATION设置为true的PDF格式

将IPDFRenderOption.PDF_HYPHENATION设置为false的PDF格式

因此,我试图将PDF的范围设置得更小,以克服这个问题,但我没有找到任何关于如何使用BIRT API实现此操作的文档.有修改母版页的,但是我有太多的报告无法手动修改它们。
我该如何处理这个问题?这是否可能使用BIRT API?
发布于 2012-02-27 17:07:44
我所需要做的就是遍历所有句柄,测试其中哪个是,并用以下键调用setProperty:
MasterPageHandle.BOTTOM_MARGIN_PROPMasterPageHandle.LEFT_MARGIN_PROPMasterPageHandle.RIGHT_MARGIN_PROPMasterPageHandle.TOP_MARGIN_PROP还有我需要的。
代码样本
@SuppressWarnings("unchecked")
private void shrinkPageSizeForExport(IReportRunnable reportRunnable) {
DesignElementHandle designHandle = reportRunnable.getDesignHandle();
IElementDefn elementDefn = designHandle.getDefn();
for (int i = 0; i < elementDefn.getSlotCount(); i++) {
SlotHandle slotHandle = designHandle.getSlot(i);
for (DesignElementHandle elementHandle: (List<DesignElementHandle>)slotHandle.getContents()) {
if (!(elementHandle instanceof MasterPageHandle)) continue;
MasterPageHandle mph = (MasterPageHandle)elementHandle;
DimensionValue dv = new DimensionValue(0.1, "cm");
setAllMarginsTo(mph, dv);
}
}
}
private void setAllMarginsTo(MasterPageHandle mph, DimensionValue dv) {
try {
mph.setProperty(MasterPageHandle.BOTTOM_MARGIN_PROP, dv);
mph.setProperty(MasterPageHandle.LEFT_MARGIN_PROP, dv);
mph.setProperty(MasterPageHandle.RIGHT_MARGIN_PROP, dv);
mph.setProperty(MasterPageHandle.TOP_MARGIN_PROP, dv);
} catch (SemanticException se) {
throw new RuntimeException("Cannot set margins for report export!", se);
}
}发布于 2013-03-29 17:41:27
备选建议:
在BIRT库中构建一个MasterPage,并在所有报表上使用它。然后,所有使用它的报告可以一次更新。如果您没有从库MasterPages开始,您可以用库母版页替换报表MasterPage,比尝试重新编码它们更快。
像DataSources和MasterPages这样的东西几乎总是比库项目更好。
https://stackoverflow.com/questions/9428330
复制相似问题