Class RMDocument

All Implemented Interfaces:
Archivable, DeepChangeListener, RMPropertyChanger, RMTypes, PropertyChangeListener, Cloneable, 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 Details

  • Constructor Details

    • 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(Object aSource)
      Creates a new document from the given source.
  • Method Details

    • getDoc

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

      public 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 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.
    • getPageLayout

      public RMDocument.PageLayout getPageLayout()
      Returns the page layout for the document.
    • setPageLayout

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

      public void setPageLayout(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(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 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 String getPublishUrl()
      Returns the URL this document should be uploaded to.
    • setPublishUrl

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

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

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

      public void setBypassImageCache(boolean b)
    • isBypassImageCache

      public boolean isBypassImageCache()
    • 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.
    • writePDFBytes

      public void writePDFBytes(OutputStream outputStream) throws IOException
      writes the bytes for a PDF directly to the supplied output stream, closing it once completed.
      Throws:
      IOException
    • 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(String fieldDelimiter, 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 String getStringCSV()
      Returns the document as a string of a CSV file.
    • getStringDelimitedText

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

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

      public void write(File aFile)
      Writes the document to the given File object
    • writePDF

      public void writePDF(String filePath)
      Writes the document to the given path String as PDF.
    • writeExcel

      @Deprecated public void writeExcel(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(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(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(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(Object theObjects)
      Returns a generated report from this template evaluated against the given object.
    • generateReport

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

      public RMDocument generateReport(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(Object theObjects, Object theUserInfo, boolean aPaginateFlag)
      Returns generated report from this template evaluated against given object/userInfo (with option to paginate).
    • rpgChildren

      protected RMShape rpgChildren(ReportOwner anRptOwner, RMParentShape aParent)
      Override to handle ShapeLists special.
      Overrides:
      rpgChildren in class RMParentShape
    • 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
    • toXMLShape

      protected RXElement toXMLShape(RXArchiver anArchiver)
      XML archival.
      Overrides:
      toXMLShape in class RMParentShape
    • toXMLChildren

      protected void toXMLChildren(RXArchiver anArchiver, RXElement anElement)
      XML archival of children.
      Overrides:
      toXMLChildren in class RMParentShape
    • fromXMLShape

      protected void fromXMLShape(RXArchiver anArchiver, RXElement anElement)
      XML unarchival.
      Overrides:
      fromXMLShape 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