Для корректной работы необходимо привести все единицы отчёта к одному значению.
При загрузке шаблона методом Load, значение ReportUnit перезаписывается значением из шаблона.
Причём нельзя просто взять и поменять единицы отчёта, так как все значения останутся неизменными и соответственно увеличатся.
Вот примерный код как можно избежать данной проблемы:
Код: Выделить всё
// Open and render report in Millimeters
StiReport sourceReport = new StiReport();
sourceReport.Load(@"d:\Millimeters.mrt");
sourceReport.Compile();
sourceReport.Render();
// Now create report in Centimeters and copy rendered page from the first report
StiReport report = new StiReport();
report.NeedsCompiling = false;
report.IsRendered = true;
report.ReportUnit = StiReportUnitType.Centimeters;
Stimulsoft.Report.Units.StiUnit newUnit = Stimulsoft.Report.Units.StiUnit.GetUnitFromReportUnit(report.ReportUnit);
Stimulsoft.Report.Units.StiUnit oldUnit = Stimulsoft.Report.Units.StiUnit.GetUnitFromReportUnit(sourceReport.ReportUnit);
bool needConvert = report.ReportUnit != sourceReport.ReportUnit;
report.RenderedPages.Clear();
foreach (StiPage page in sourceReport.CompiledReport.RenderedPages)
{
page.Report = report;
page.NewGuid();
if (needConvert) page.Convert(oldUnit, newUnit);
report.RenderedPages.Add(page);
}
report.Show();