-
Enhancement
-
Resolution: Unresolved
-
P4
-
None
-
6
-
sparc
-
solaris_10
A DESCRIPTION OF THE REQUEST :
java.lang.IllegalArgumentException: X dimension > Y dimension
at javax.print.attribute.standard.MediaSize.<init>(MediaSize.java:106)
at org.compiere.print.MPrintPaper.getMediaSize(MPrintPaper.java:147)
at org.compiere.print.MPrintPaper.getCPaper(MPrintPaper.java:189)
at org.compiere.print.layout.LayoutEngine.setPrintFormat(LayoutEngine.java:174)
at org.compiere.print.layout.LayoutEngine.<init>(LayoutEngine.java:52)
at org.compiere.print.ReportEngine.layout(ReportEngine.java:173)
at org.compiere.print.ReportEngine.getView(ReportEngine.java:251)
at org.compiere.print.Viewer.<init>(Viewer.java:59)
at org.compiere.print.ReportCtl.startDocumentPrint(ReportCtl.java:162)
at org.compiere.print.ReportCtl.start(ReportCtl.java:61)
at org.compiere.apps.ProcessCtl.run(ProcessCtl.java:272)
from :
http://java.sun.com/javase/6/docs/api/javax/print/attribute/standard/MediaSize.html
MediaSize
public MediaSize(int x,
int y,
int units)Construct a new media size attribute from the given integer values.
Parameters:
x - X dimension.
y - Y dimension.
units - Unit conversion factor, e.g. Size2DSyntax.INCH or Size2DSyntax.MM.
Throws:
IllegalArgumentException - (Unchecked exception) Thrown if x < 0 or y < 0 or units < 1 or x > y.
JUSTIFICATION :
when I want to print to a Fanfold Perforated Paper, Size - 9.5" X 11" / 2 with an EPSON LQ-1600K IIIH ESC/P2 printer. That's 9.5" X 5.5" actually. Which x is 9.5 and y is 5.5.
So why must x > y?
EXPECTED VERSUS ACTUAL BEHAVIOR :
EXPECTED -
Print out portrait.
ACTUAL -
java.lang.IllegalArgumentException: X dimension > Y dimension
Suggest you remove x > y limitation.
---------- BEGIN SOURCE ----------
/**************************************************************************
* Get Media Size.
* The search is hard coded as the javax.print.MediaSize* info is private
* @return MediaSize from Code
*/
public MediaSize getMediaSize()
{
if (m_mediaSize != null)
return m_mediaSize;
//
String nameCode = getCode();
if (nameCode != null)
{
// Get Name
MediaSizeName nameMedia = null;
CMediaSizeName msn = new CMediaSizeName(4);
String[] names = msn.getStringTable();
for (int i = 0; i < names.length; i++)
{
String name = names[i];
if (name.equalsIgnoreCase(nameCode))
{
nameMedia = (MediaSizeName)msn.getEnumValueTable()[i];
log.finer("Name=" + nameMedia);
break;
}
}
if (nameMedia != null)
{
m_mediaSize = MediaSize.getMediaSizeForName(nameMedia);
log.fine("Name->Size=" + m_mediaSize);
}
}
// Create New Media Size
if (m_mediaSize == null)
{
float x = getSizeX().floatValue();
float y = getSizeY().floatValue();
if (x > 0 && y > 0)
{
m_mediaSize = new MediaSize(x, y, getUnitsInt(), MediaSizeName.A);
log.fine("Size=" + m_mediaSize);
}
}
// Fallback
if (m_mediaSize == null)
m_mediaSize = getMediaSizeDefault();
return m_mediaSize;
} // getMediaSize
from :
src/org/compiere/print/MPrintPaper.java
---------- END SOURCE ----------
CUSTOMER SUBMITTED WORKAROUND :
use 9.5 X 11 size and make a long footer which is blank. then roll back the paper to print next half page.
java.lang.IllegalArgumentException: X dimension > Y dimension
at javax.print.attribute.standard.MediaSize.<init>(MediaSize.java:106)
at org.compiere.print.MPrintPaper.getMediaSize(MPrintPaper.java:147)
at org.compiere.print.MPrintPaper.getCPaper(MPrintPaper.java:189)
at org.compiere.print.layout.LayoutEngine.setPrintFormat(LayoutEngine.java:174)
at org.compiere.print.layout.LayoutEngine.<init>(LayoutEngine.java:52)
at org.compiere.print.ReportEngine.layout(ReportEngine.java:173)
at org.compiere.print.ReportEngine.getView(ReportEngine.java:251)
at org.compiere.print.Viewer.<init>(Viewer.java:59)
at org.compiere.print.ReportCtl.startDocumentPrint(ReportCtl.java:162)
at org.compiere.print.ReportCtl.start(ReportCtl.java:61)
at org.compiere.apps.ProcessCtl.run(ProcessCtl.java:272)
from :
http://java.sun.com/javase/6/docs/api/javax/print/attribute/standard/MediaSize.html
MediaSize
public MediaSize(int x,
int y,
int units)Construct a new media size attribute from the given integer values.
Parameters:
x - X dimension.
y - Y dimension.
units - Unit conversion factor, e.g. Size2DSyntax.INCH or Size2DSyntax.MM.
Throws:
IllegalArgumentException - (Unchecked exception) Thrown if x < 0 or y < 0 or units < 1 or x > y.
JUSTIFICATION :
when I want to print to a Fanfold Perforated Paper, Size - 9.5" X 11" / 2 with an EPSON LQ-1600K IIIH ESC/P2 printer. That's 9.5" X 5.5" actually. Which x is 9.5 and y is 5.5.
So why must x > y?
EXPECTED VERSUS ACTUAL BEHAVIOR :
EXPECTED -
Print out portrait.
ACTUAL -
java.lang.IllegalArgumentException: X dimension > Y dimension
Suggest you remove x > y limitation.
---------- BEGIN SOURCE ----------
/**************************************************************************
* Get Media Size.
* The search is hard coded as the javax.print.MediaSize* info is private
* @return MediaSize from Code
*/
public MediaSize getMediaSize()
{
if (m_mediaSize != null)
return m_mediaSize;
//
String nameCode = getCode();
if (nameCode != null)
{
// Get Name
MediaSizeName nameMedia = null;
CMediaSizeName msn = new CMediaSizeName(4);
String[] names = msn.getStringTable();
for (int i = 0; i < names.length; i++)
{
String name = names[i];
if (name.equalsIgnoreCase(nameCode))
{
nameMedia = (MediaSizeName)msn.getEnumValueTable()[i];
log.finer("Name=" + nameMedia);
break;
}
}
if (nameMedia != null)
{
m_mediaSize = MediaSize.getMediaSizeForName(nameMedia);
log.fine("Name->Size=" + m_mediaSize);
}
}
// Create New Media Size
if (m_mediaSize == null)
{
float x = getSizeX().floatValue();
float y = getSizeY().floatValue();
if (x > 0 && y > 0)
{
m_mediaSize = new MediaSize(x, y, getUnitsInt(), MediaSizeName.A);
log.fine("Size=" + m_mediaSize);
}
}
// Fallback
if (m_mediaSize == null)
m_mediaSize = getMediaSizeDefault();
return m_mediaSize;
} // getMediaSize
from :
src/org/compiere/print/MPrintPaper.java
---------- END SOURCE ----------
CUSTOMER SUBMITTED WORKAROUND :
use 9.5 X 11 size and make a long footer which is blank. then roll back the paper to print next half page.