Class RMDocument

  • All Implemented Interfaces:
    Archivable, DeepChangeListener, RMPropertyChanger, RMTypes, java.beans.PropertyChangeListener, java.lang.Cloneable, java.util.EventListener

    public class RMDocument
    extends RMParentShape
    The RMDocument class represents a ReportMill document and is also an RMShape subclass, so it can be a real part of the document/shape hierarchy. RMDocuments are also what ReportMill refers to as templates, and is commonly used like this:

     RMDocument template = new RMDocument(aSource); // Load from path String, File, byte array, etc.
     RMDocument report = template.generateReport(aDataset); // Any Java dataset: EJBs, custom classes, collctns, etc.
     report.writePDF("MyReport.pdf");
     

    On rare occasions, you may also want to create a document dynamically. Here's an example:

     RMDocument doc = new RMDocument(612, 792); // Standard US Letter size (8.5" x 11"), in points
     RMTable table = new RMTable(); // Create new table ...
     doc.getPage(0).addChild(table); // ... and add to first page
     table.setBounds(36, 36, 540, 680); // Position and size table
     table.getRow("Objects Details").getColumn(0).setText("Title: @getTitle@");
     // Configure first text
     

    • Field Detail

      • DEFAULT_NULL_STR

        public static final java.lang.String DEFAULT_NULL_STR
        See Also:
        Constant Field Values
      • _locale

        public static java.util.Locale _locale
    • Constructor Detail

      • RMDocument

        public RMDocument()
        Creates a plain empty document. It's really only used by the archiver.
      • RMDocument

        public RMDocument​(double aWidth,
                          double aHeight)
        Creates a document with the given width and height (in printer points).
      • RMDocument

        public RMDocument​(java.lang.Object aSource)
        Creates a new document from the given source.
    • Method Detail

      • getDoc

        public static RMDocument getDoc​(java.lang.Object aSource)
        Creates a new document from aSource using RMArchiver.
      • getFilename

        public java.lang.String getFilename()
        Returns the filename associated with this document, if available.
      • getFont

        public RMFont getFont()
        Returns the document's default font.
        Overrides:
        getFont in class RMShape
      • setFont

        public void setFont​(RMFont aFont)
        Sets the document default font.
        Overrides:
        setFont in class RMShape
      • getVersion

        public float getVersion()
        Returns the version this document was loaded as.
      • getPageCount

        public int getPageCount()
        Returns the number of pages in this document.
      • getPage

        public RMPage getPage​(int anIndex)
        Returns the page at the given index.
      • getPageLast

        public RMPage getPageLast()
        Returns the last page (convenience).
      • getPages

        public java.util.List<RMPage> getPages()
        Returns the list of pages associated with this document.
      • addPage

        public RMPage addPage()
        Adds a new page to this document.
      • addPage

        public void addPage​(RMPage aPage)
        Adds a given page to this document.
      • addPage

        public void addPage​(RMPage aPage,
                            int anIndex)
        Adds a given page to this document at the given index.
      • removePage

        public RMPage removePage​(int anIndex)
        Removes a page from this document.
      • removePage

        public int removePage​(RMPage aPage)
        Removes the given page.
      • createPage

        public RMPage createPage()
        Creates a new page.
      • addChild

        public void addChild​(RMShape aChild,
                             int anIndex)
        Override to make sure document has size.
        Overrides:
        addChild in class RMParentShape
      • addPages

        public void addPages​(RMDocument aDoc)
        Add the pages in the given document to this document (at end) and clears the pages list in the given document.
      • getSelectedIndex

        public int getSelectedIndex()
        Returns the current page index of this document.
      • setSelectedIndex

        public void setSelectedIndex​(int anIndex)
        Selects the currently selected page by index.
      • getSelectedPage

        public RMPage getSelectedPage()
        Returns the currently selected page of this document.
      • setSelectedPage

        public void setSelectedPage​(RMPage aPage)
        Selects the given page.
      • setPageLayout

        public void setPageLayout​(RMDocument.PageLayout aValue)
        Sets the page layout for the document.
      • setPageLayout

        public void setPageLayout​(java.lang.String aValue)
        Set page layout from string.
      • getUnit

        public RMDocument.Unit getUnit()
        Returns the units used to express sizes in the current document (POINTS, INCHES, CENTIMETERS).
      • setUnit

        public void setUnit​(RMDocument.Unit aValue)
        Sets the units used to express sizes in the current document (POINTS, INCHES, CENTIMETERS).
      • setUnit

        public void setUnit​(java.lang.String aString)
        Sets the units used to express sizes in the current document with one of the strings: point, inch or cm.
      • getPointsFromUnits

        public double getPointsFromUnits​(double aValue)
        Converts given value from document units to printer points (1/72 of an inch).
      • getUnitsFromPoints

        public double getUnitsFromPoints​(double aValue)
        Converts given value to document units from printer points (1/72 of an inch).
      • getUnitsMultiplier

        public float getUnitsMultiplier()
        Returns the multiplier used to convert printer points to document units.
      • getShowGrid

        public boolean getShowGrid()
        Returns whether the document should show an alignment grid.
      • setShowGrid

        public void setShowGrid​(boolean aValue)
        Sets whether the document should show an alignment grid.
      • getSnapGrid

        public boolean getSnapGrid()
        Returns whether the document should snap to an alignment grid.
      • setSnapGrid

        public void setSnapGrid​(boolean aValue)
        Sets whether the document should snap to an alignment grid.
      • getGridSpacing

        public double getGridSpacing()
        Returns the grid spacing for the document's grid.
      • setGridSpacing

        public void setGridSpacing​(double aValue)
        Sets the grid spacing for the document's grid.
      • getShowMargin

        public boolean getShowMargin()
        Returns whether the document should show a margin rect.
      • setShowMargin

        public void setShowMargin​(boolean aValue)
        Sets whether the document should show a margin rect.
      • getSnapMargin

        public boolean getSnapMargin()
        Returns whether the document should snap to a margin rect.
      • setSnapMargin

        public void setSnapMargin​(boolean aValue)
        Sets whether the document should snap to a margin rect.
      • getMarginRect

        public RMRect getMarginRect()
        Returns the margin rect for this document.
      • setMarginRect

        public void setMarginRect​(RMRect aRect)
        Sets the margin rect for this document.
      • getMarginRectDefault

        public RMRect getMarginRectDefault()
        Returns the default margin rect.
      • setMargins

        public void setMargins​(double left,
                               double right,
                               double top,
                               double bottom)
        Sets the margin rect for this document.
      • getMarginLeft

        public double getMarginLeft()
        Returns the margin rects left value.
      • getMarginRight

        public double getMarginRight()
        Returns the margin rects right value.
      • getMarginTop

        public double getMarginTop()
        Returns the margin rects top value.
      • getMarginBottom

        public double getMarginBottom()
        Returns the margin rects bottom value.
      • getPageSize

        public RMSize getPageSize()
        Returns the size of a document page.
      • setPageSize

        public void setPageSize​(double aWidth,
                                double aHeight)
        Sets the size of the document (and all of its pages).
      • getPageSizeDefault

        public RMSize getPageSizeDefault()
        Returns the default page size.
      • getAutosizingDefault

        public java.lang.String getAutosizingDefault()
        Returns the autosizing default.
        Overrides:
        getAutosizingDefault in class RMShape
      • getDataSource

        public RMDataSource getDataSource()
        Returns the RMDataSource associated with this document.
      • setDataSource

        public void setDataSource​(RMDataSource aDataSource)
        Sets the RMDataSource associated with this document.
      • getDataSourceSchema

        public Schema getDataSourceSchema()
        Returns the schema for the RMDataSource associated with this document (convenience).
      • getDatasetEntity

        public Entity getDatasetEntity()
        Returns the entity this shape should show in keys browser.
        Overrides:
        getDatasetEntity in class RMShape
      • getPublishUrl

        public java.lang.String getPublishUrl()
        Returns the URL this document should be uploaded to.
      • setPublishUrl

        public void setPublishUrl​(java.lang.String aValue)
        Sets the URL this document should be uploaded to.
      • getNullString

        public java.lang.String getNullString()
        Returns the string used to replace any occurrances of null values in a generated report.
      • setNullString

        public void setNullString​(java.lang.String aValue)
        Sets the string used to replace any occurrances of null values in a generated report.
      • isPaginate

        public boolean isPaginate()
        Returns whether the document should paginate generated reports by default.
      • setPaginate

        public void setPaginate​(boolean aValue)
        Sets whether the document should paginate generated reports by default.
      • getCompress

        public boolean getCompress()
        Returns whether the document should compress images in generated file formats like PDF.
      • setCompress

        public void setCompress​(boolean aValue)
        Sets whether the document should compress images in generated file formats like PDF.
      • getBytes

        public byte[] getBytes()
        Returns the document as an XML byte array.
      • getBytesPDF

        public byte[] getBytesPDF()
        Returns the document as a byte array of a PDF file.
      • getBytesHTML

        public byte[] getBytesHTML()
        Returns the document as a byte array of an HTML file.
      • getBytesCSV

        public byte[] getBytesCSV()
        Returns the document as a byte array of a CSV file.
      • getBytesDelimitedAscii

        public byte[] getBytesDelimitedAscii​(java.lang.String fieldDelimiter,
                                             java.lang.String recordDelimiter,
                                             boolean quoteFields)
        Returns the document as a byte array of a delimited ASCII file (using given field, record separator strings).
      • getBytesExcel

        @Deprecated
        public byte[] getBytesExcel()
        Deprecated.
        Returns the document as byte array of an Excel file.
      • getBytesXlsx

        public byte[] getBytesXlsx()
        Returns the document as byte array of an Excel XLSX file.
      • getBytesRTF

        public byte[] getBytesRTF()
        Returns the document as byte array of an Excel file.
      • getBytesJPEG

        public byte[] getBytesJPEG()
        Returns the document as byte array of a JPEG file.
      • getBytesPNG

        public byte[] getBytesPNG()
        Returns the document as byte array of PNG file.
      • getAllPagesBytesPNG

        public byte[] getAllPagesBytesPNG()
        Returns a single png that includes all pages and is (pageCount * pageHeight) tall
      • getAllPagesBytesJPEG

        public byte[] getAllPagesBytesJPEG()
        Returns a single jpeg that includes all pages and is (pageCount * pageHeight) tall
      • getStringCSV

        public java.lang.String getStringCSV()
        Returns the document as a string of a CSV file.
      • getStringDelimitedText

        public java.lang.String getStringDelimitedText​(java.lang.String fieldDelimiter,
                                                       java.lang.String recordDelimiter,
                                                       boolean quoteFields)
        Returns the document as a string of a delimited text file.
      • write

        public void write​(java.lang.String aPath)
        Writes the document out to the given path String (it extracts type from path extension).
      • write

        public void write​(java.io.File aFile)
        Writes the document to the given File object
      • writePDF

        public void writePDF​(java.lang.String aPath)
        Writes the document to the given path String as PDF.
      • writeExcel

        @Deprecated
        public void writeExcel​(java.lang.String path)
        Deprecated.
        Writes the document to the given path String as Excel.
        Parameters:
        path - the save path, must not be null
      • writeXlsx

        public void writeXlsx​(java.lang.String path)
        Writes the document to the given path String as Excel Xlsx format.
        Parameters:
        path - the save path, must not be null
      • writeXlsx

        public void writeXlsx​(java.io.File file)
        Writes the document to the given path String as Excel Xlsx format.
        Parameters:
        file - the file to save to, must not be null
      • getMaxTime

        public float getMaxTime()
        Returns the total time needed to animate this document (total of all page animators).
      • getDocument

        public RMDocument getDocument()
        Returns the document itself (over-ridden from RMShape).
        Overrides:
        getDocument in class RMShape
      • getAnimator

        public RMAnimator getAnimator​(int anIndex)
        Returns the animator for a specific page.
      • getAnimatorLast

        public RMAnimator getAnimatorLast()
        Returns the animator for the last page.
      • getLoops

        public boolean getLoops()
        Returns whether the last animator loops.
      • getSubreport

        public RMDocument getSubreport​(java.lang.String aName)
        Returns a subreport document for given name (override to improve).
      • paintShape

        public void paintShape​(RMShapePainter aPntr)
        Overrides paint shape, because document should never really paint itself.
        Overrides:
        paintShape in class RMShape
      • generateReport

        public RMDocument generateReport()
        Returns a generated report from this template evaluated against the given object.
      • generateReport

        public RMDocument generateReport​(java.lang.Object theObjects)
        Returns a generated report from this template evaluated against the given object.
      • generateReport

        public RMDocument generateReport​(java.lang.Object objects,
                                         java.lang.Object userInfo)
        Returns a generated report from this template evaluated against the given object and userInfo.
      • generateReport

        public RMDocument generateReport​(java.lang.Object objects,
                                         boolean paginate)
        Returns a generated report from this template evaluated against the given object with an option to paginate.
      • generateReport

        public RMDocument generateReport​(java.lang.Object theObjects,
                                         java.lang.Object theUserInfo,
                                         boolean aPaginateFlag)
        Returns generated report from this template evaluated against given object/userInfo (with option to paginate).
      • resolvePageReferences

        public void resolvePageReferences()
        Performs page substitutions on any text fields that were identified as containing @Page@ keys.
      • layoutChildren

        protected void layoutChildren()
        Rebuilds the document according to the selected page and page layout.
        Overrides:
        layoutChildren in class RMParentShape
      • computePrefWidth

        protected double computePrefWidth​(double aHeight)
        Override to return double page width for PageLayout.Double, Facing, & Quadruple. return a double value for the width.
        Overrides:
        computePrefWidth in class RMParentShape
      • computePrefHeight

        protected double computePrefHeight​(double aWidth)
        Override to return height * PageCount (plus spacing) for Continuous, height * PageCount/2 for ContinuousDouble, and height * 2 for Quadruple.
        Overrides:
        computePrefHeight in class RMParentShape
        Returns:
        a double value for the height.
      • toXML

        public RXElement toXML()
        Returns RXElement for document.
      • clone

        public RMDocument clone()
        Copies basic document attributes (shallow copy only - no children or pages).
        Overrides:
        clone in class RMParentShape
      • superSelectable

        public boolean superSelectable()
        Editor method indicates that document is super selectable.
        Overrides:
        superSelectable in class RMShape
      • childrenSuperSelectImmediately

        public boolean childrenSuperSelectImmediately()
        Editor method indicates that pages super select immediately.
        Overrides:
        childrenSuperSelectImmediately in class RMShape
      • acceptsChildren

        public boolean acceptsChildren()
        Editor method indicates that document accepts children (should probably be false).
        Overrides:
        acceptsChildren in class RMShape
      • pdfBytes

        public byte[] pdfBytes()
        Obsolete method for old pdfBytes() method.
      • isDeletable

        public boolean isDeletable()
        Description copied from class: RMShape
        Override this for shapes (like a table row) that don't don't make sense to delete by themselves.
        Overrides:
        isDeletable in class RMShape