[Background] Src:Background.png [Decoration] Src:RMLogo.png, Position:BottomRight, Margin:20 An Introduction to Java Reporting (With ReportMill) What is Java Reporting? Generating formatted document from Java dataset Dataset: EJBs, Java collections, POJOs, JDBC ResultSet Formatted doc: PDF, HTML, RTF, Excel or image Steps in Concept Define dataset (from App) Load template (from URL) Generate report (template + dataset) Generate PDF (from report) Return PDF to client Steps in Concept II [Image] Src:ReportGen.png Steps in Code List dset = session.getDataset(); RMDoc doc = new RMDoc(URL); RMDoc report = doc.generateReport(dset); byte pdfBytes[] = report.getPDFBytes(); aWebResponse.setContent(pdfBytes); [Transition] Name:Explode Introducing ReportMill Java reporting tool Easy-to-use, simple to integrate Innovative template designer Works with Objects instead of SQL Full featured, small-footprint, fast, efficient ReportMill Parts RMStudio desktop app designs templates ReportMill.jar generates reports/PDF in app code RMStudio Designer Page layout app [Image] Src:RMStudio.png, Position:CENTER RMStudio Advantages Easy to use Familiar page layout paradigm Design template in context of page [Hide] Not banded [Hide] Not a Crystal Reports clone [Hide] Page Headers/Footers just in the background of page [Hide] Easily design forms, including any existing PDF [Hide] Multiple tables, graphs allowed on a page [Hide] Easily define multiple page templates Not a Crystal clone RMStudio Standard Features Text areas, images, vector graphics Vector Shapes: Line, rect, oval, path, polygon Page Rulers, Grid, Guides, Margins, Layers, Units Shape Groups, shape ordering, Undo/Redo Much more Advanced Text Features Rich text (mix font, size, color) Margins, Indents, advanced metrics Spell Check as you type, Hyphenation Text in shape, around shape Data Substitution Keys used to integrate data: @getName@ Values harvested using reflection, collections API Can be any valid Java expression Easily mix static text and keys Format keys with date, number formatting Data Keys @getName@ @getRevenue/1000@ @getAge<30? "Young" : "Seasoned"@ Aggregates: @total.getRevenue@, @max(getAge)@ Running, Remaining, OnPage: @Running.total.revenue@ Standard Report Features Tables Graphs CrossTabs ReportMill Tables Position/size to cover region of page Add Groupings, Sortings, TopN, etc. Headers, Details, Summaries Pagination, widow-orphan control TableGroups: Child Tables, Peer Tables ReportMill Tables [Image] Src:RMTables.png ReportMill Graphs Column, Bar, Line, Area 2D, 3D, Pseudo-3D ReportMill Graph [Image] Src:RMGraphs.png ReportMill CrossTab Cross-section groupings [Image] Src:RMCrossTabs.png Advanced Forms Generation Turn any PDF form into a report [Image] Src:PDFForm.png Multi-page Templates Add multiple pages Any number of tables, graphs, etc. on each page Unique design features Effects: Drop shadow, emboss, reflect, transparency Fill & Stroke: Solids, Textures, gradients Arbitrary transforms: Rotate, Scale, Skew More: Constructive Geometry, 3D Unique design features [Image] Src:Design.png ReportMill Engine Advantages Turn any Java dataset into PDF with 3 lines of code Dataset can be EJBs, Collections, POJOs, JDBC ResultSet Dataset generally already in memory Packaged in one Jar file, ReportMill.jar [Transition] Name:Explode [SlideType] Name:Title ReportMill in Action Demo!