Ciao Svipla,
mi sembra di capire che un report faccia proprio al caso tu, infatti puoi definire un layout e poi popolare le pagine con i dati caricati da codice, questo è fattibilissimo anche da applicazione web, come mi sembra il tuo caso.
Allora come ben dicevi Crystal hai problemi di licenze, poi hai anche una certa pesantezza...di solito io consiglio Sql Reporting per casi non troppo incasinati, quindi io farei così:
1) Disegno il report, con una sorgente dati che punti ad uno degli oggetti che intendo visualizzare
2) Mi referenzio le dll che mi servono come runtime di SqlReporting:
Microsoft.ReportViewer.Common.dll
Microsoft.ReportViewer.DataVisualization.dll
Microsoft.ReportViewer.ProcessingObjectModel.dll
Microsoft.ReportViewer.WinForms.dll
(cercali sul tuo disco, li dovresti trovare sotto "C:\Windows\assembly\GAC_MSIL\..."
3) Carico il report da codice e gli dico di esportare in PDF
LocalReport report = new LocalReport();
report.ReportPath = "...PATH...";
report.DataSources.Add(new ReportDataSource("...NOME...", #DATI#));
byte[] bytes = Render(report, "PDF");
dove ovviamente "NOME" è il nome della datasource che hai messo in progettazione, e "DATI" è una Collection<T> dove T è il tuo oggetto. Oppure anche una DataTable se vai meglio, l'importante in entrambi i casi è che siano rispettati i tipi e soprattutto i nomi delle colonne/proprietà.
4) Infine, ritorno il pdf al client
Dato che hai già un po' di dimestichezza con Crystal, dovresti trovarti a tuo agio anche con Sql Reporting...
Ciao.
Matteo Raumer
[MCAD .net, MVP Visual C#]
http://blogs.dotnethell.it/freeteo