我正面臨BIRT報告生成器的問題。我使用設計器創建了一個報告,並將其主頁面設置爲橫向,頁面類型設置爲A4,但無法使用我的服務器的報告引擎(它始終使用縱向方向渲染)使其工作。如果我忽略pdfOptions
添加,問題仍然出現。BIRT報告爲PDF與橫向佈局
但是,它使用設計師的預覽選項。
這是我ReportRenderer
類:
import javax.servlet.ServletContext;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.eclipse.birt.report.engine.api.EngineConfig;
import org.eclipse.birt.report.engine.api.EngineConstants;
import org.eclipse.birt.report.engine.api.EngineException;
import org.eclipse.birt.report.engine.api.HTMLRenderOption;
import org.eclipse.birt.report.engine.api.IPDFRenderOption;
import org.eclipse.birt.report.engine.api.IRenderOption;
import org.eclipse.birt.report.engine.api.IReportEngine;
import org.eclipse.birt.report.engine.api.IReportRunnable;
import org.eclipse.birt.report.engine.api.IRunAndRenderTask;
import org.eclipse.birt.report.engine.api.PDFRenderOption;
import org.eclipse.birt.report.engine.api.RenderOption;
import org.eclipse.birt.report.engine.api.ReportEngine;
import org.springframework.web.context.ServletContextAware;
public class ReportRenderer{
public ByteArrayOutputStream renderReport(ReportPath reportPath,
Map<String, Object> reportParams,
Locale locale) throws EngineException {
IReportEngine engine;
ByteArrayOutputStream os = new ByteArrayOutputStream();
EngineConfig config = new EngineConfig();
engine = new ReportEngine(config);
final IReportRunnable design = engine
.openReportDesign(this._ServletContext.getRealPath("/")
+ reportPath.get_Path());
// design.get
// engine.
// Create task to run and render the report,
final IRunAndRenderTask task = engine.createRunAndRenderTask(design);
//report arguments and language
task.setParameterValue("data_url", this._DataUrl);
task.setParameterValue("user_name", this._UserName);
task.setParameterValue("user_password", this._UserPassword);
for (Entry<String, Object> entry : reportParams.entrySet()) {
task.setParameterValue(entry.getKey(), entry.getValue());
}
task.setLocale(locale);
// Set parent classloader for engine
task.getAppContext().put(EngineConstants.APPCONTEXT_CLASSLOADER_KEY,
GenericReportRenderer.class.getClassLoader());
final IRenderOption options = new RenderOption();
options.setOutputFormat("pdf");
options.setOutputStream(os);
final PDFRenderOption pdfOptions = new PDFRenderOption(options);
pdfOptions.setOption(IPDFRenderOption.PAGE_OVERFLOW,
IPDFRenderOption.FIT_TO_PAGE_SIZE);
pdfOptions.setOption(IPDFRenderOption.PAGE_OVERFLOW,
IPDFRenderOption.OUTPUT_TO_MULTIPLE_PAGES);
task.setRenderOption(options);
// run and render report
task.run();
task.close();
return os;
}
}
這似乎是改變使用JavaScript頁面方向爲this link說一種選擇,但我不知道在哪裏以應用。我正在使用birt runtime 4.2.0。
有什麼想法?
上沒有_setMasterPageContent_ _setOutputMaster_您正在通過_reportParams_傳遞哪些參數? – OGrandeDiEnne
您的報告將用於呈現數據@OGrandeDiEnne。這個一般情況並不重要。 –
它適用於特定的問題:您發佈的代碼沒有任何選項可以告訴BIRT生成橫向pdf文件..或者我錯過了什麼? – OGrandeDiEnne