Author: acumiskey
Date: Thu Apr 17 09:30:02 2008
New Revision: 649175
URL: http://svn.apache.org/viewvc?rev=649175&view=rev
Log:
Merged revisions 648985,649012,649091,649119,649146,649149,649160 via svnmerge
from
https://svn.apache.org/repos/asf/xmlgraphics/fop/trunk
........
r648985 | jeremias | 2008-04-17 08:01:19 +0100 (Thu, 17 Apr 2008) | 1 line
HeadURL was missing in the properties.
........
r649012 | jeremias | 2008-04-17 09:59:48 +0100 (Thu, 17 Apr 2008) | 2 lines
Bugfix: Avoid stopping early when no EmbedFontInfos are found during font
detection.
Submitted by: Raphael Parree <rparree.at.gmail.com>
........
r649091 | jeremias | 2008-04-17 14:33:07 +0100 (Thu, 17 Apr 2008) | 7 lines
Bugzilla #44678:
Added ability to pass in the PrinterJob instance through the renderer options.
Submitted by: Antti Karanta <Antti.Karanta.at.napa.fi>
Modifications/Additions to patch:
- Don't remove the contructor with the PrinterJob parameter, just deprecate
it.
- Adjust old-style print example to use renderer options
........
r649119 | vhennebert | 2008-04-17 15:10:04 +0100 (Thu, 17 Apr 2008) | 2 lines
Fixed minor typo
........
r649146 | jeremias | 2008-04-17 16:12:23 +0100 (Thu, 17 Apr 2008) | 2 lines
Bugzilla #41687:
Restored ability to specify from/to and odd/even pages as well as the number
of copies for printing from the command-line. Note that this is no longer done
via system properties but through the renderer options. Syntax is slightly
different. See "fop -print help".
........
r649149 | jeremias | 2008-04-17 16:14:26 +0100 (Thu, 17 Apr 2008) | 2 lines
Bugzilla #43383:
Made sure the pages don't appear out of order in AWT preview.
........
r649160 | jeremias | 2008-04-17 17:01:41 +0100 (Thu, 17 Apr 2008) | 3 lines
Now tunneling all events through a special event listener in tests. This
serves two purposes:
- Better readability of the test output.
- Identification of messages that are not sent through the event subsystem,
yet.
........
Added:
xmlgraphics/fop/branches/Temp_AFPGOCAResources/src/java/org/apache/fop/render/print/PagesMode.java
- copied unchanged from r649160,
xmlgraphics/fop/trunk/src/java/org/apache/fop/render/print/PagesMode.java
xmlgraphics/fop/branches/Temp_AFPGOCAResources/test/java/org/apache/fop/util/ConsoleEventListenerForTests.java
- copied unchanged from r649160,
xmlgraphics/fop/trunk/test/java/org/apache/fop/util/ConsoleEventListenerForTests.java
Modified:
xmlgraphics/fop/branches/Temp_AFPGOCAResources/ (props changed)
xmlgraphics/fop/branches/Temp_AFPGOCAResources/examples/embedding/java/embedding/ExampleFO2OldStylePrint.java
xmlgraphics/fop/branches/Temp_AFPGOCAResources/src/documentation/content/xdocs/trunk/embedding.xml
xmlgraphics/fop/branches/Temp_AFPGOCAResources/src/java/org/apache/fop/Version.java
(contents, props changed)
xmlgraphics/fop/branches/Temp_AFPGOCAResources/src/java/org/apache/fop/cli/CommandLineOptions.java
xmlgraphics/fop/branches/Temp_AFPGOCAResources/src/java/org/apache/fop/cli/Main.java
xmlgraphics/fop/branches/Temp_AFPGOCAResources/src/java/org/apache/fop/render/PrintRendererConfigurator.java
xmlgraphics/fop/branches/Temp_AFPGOCAResources/src/java/org/apache/fop/render/awt/AWTRenderer.java
xmlgraphics/fop/branches/Temp_AFPGOCAResources/src/java/org/apache/fop/render/java2d/Java2DRenderer.java
xmlgraphics/fop/branches/Temp_AFPGOCAResources/src/java/org/apache/fop/render/print/PrintRenderer.java
xmlgraphics/fop/branches/Temp_AFPGOCAResources/status.xml
xmlgraphics/fop/branches/Temp_AFPGOCAResources/test/java/org/apache/fop/fotreetest/FOTreeTestSuite.java
xmlgraphics/fop/branches/Temp_AFPGOCAResources/test/java/org/apache/fop/fotreetest/FOTreeTester.java
xmlgraphics/fop/branches/Temp_AFPGOCAResources/test/java/org/apache/fop/fotreetest/FOTreeUnitTester.java
xmlgraphics/fop/branches/Temp_AFPGOCAResources/test/java/org/apache/fop/intermediate/AreaTreeParserTestCase.java
xmlgraphics/fop/branches/Temp_AFPGOCAResources/test/java/org/apache/fop/intermediate/IntermediateFormatTestSuite.java
xmlgraphics/fop/branches/Temp_AFPGOCAResources/test/java/org/apache/fop/layoutengine/LayoutEngineTestSuite.java
xmlgraphics/fop/branches/Temp_AFPGOCAResources/test/java/org/apache/fop/layoutengine/LayoutEngineTester.java
Propchange: xmlgraphics/fop/branches/Temp_AFPGOCAResources/
------------------------------------------------------------------------------
--- svnmerge-integrated (original)
+++ svnmerge-integrated Thu Apr 17 09:30:02 2008
@@ -1 +1 @@
-/xmlgraphics/fop/trunk:1-648608
+/xmlgraphics/fop/trunk:1-649169
Modified:
xmlgraphics/fop/branches/Temp_AFPGOCAResources/examples/embedding/java/embedding/ExampleFO2OldStylePrint.java
URL:
http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_AFPGOCAResources/examples/embedding/java/embedding/ExampleFO2OldStylePrint.java?rev=649175&r1=649174&r2=649175&view=diff
==============================================================================
---
xmlgraphics/fop/branches/Temp_AFPGOCAResources/examples/embedding/java/embedding/ExampleFO2OldStylePrint.java
(original)
+++
xmlgraphics/fop/branches/Temp_AFPGOCAResources/examples/embedding/java/embedding/ExampleFO2OldStylePrint.java
Thu Apr 17 09:30:02 2008
@@ -24,21 +24,18 @@
import java.io.File;
import java.io.IOException;
-//JAXP
+import javax.xml.transform.Result;
+import javax.xml.transform.Source;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
-import javax.xml.transform.Source;
-import javax.xml.transform.Result;
-import javax.xml.transform.stream.StreamSource;
import javax.xml.transform.sax.SAXResult;
+import javax.xml.transform.stream.StreamSource;
-
-// FOP
+import org.apache.fop.apps.FOPException;
import org.apache.fop.apps.FOUserAgent;
import org.apache.fop.apps.Fop;
-import org.apache.fop.apps.FOPException;
import org.apache.fop.apps.FopFactory;
-import org.apache.fop.render.print.PrintRenderer;
+import org.apache.fop.apps.MimeConstants;
/**
* This class demonstrates printing an FO file to a PrinterJob instance.
@@ -63,15 +60,10 @@
try {
//Set up a custom user agent so we can supply our own renderer
instance
FOUserAgent userAgent = fopFactory.newFOUserAgent();
+ userAgent.getRendererOptions().put("printerjob", printerJob);
- //Set up our own PrintRenderer instance so we can supply a special
PrinterJob instance.
- PrintRenderer renderer = new PrintRenderer(printerJob);
- renderer.setUserAgent(userAgent);
-
- userAgent.setRendererOverride(renderer);
-
- // Construct fop with desired output format (here, it is set
through the user agent)
- Fop fop = fopFactory.newFop(userAgent);
+ // Construct FOP with desired output format
+ Fop fop = fopFactory.newFop(MimeConstants.MIME_FOP_PRINT,
userAgent);
// Setup JAXP using identity transformer
TransformerFactory factory = TransformerFactory.newInstance();
Modified:
xmlgraphics/fop/branches/Temp_AFPGOCAResources/src/documentation/content/xdocs/trunk/embedding.xml
URL:
http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_AFPGOCAResources/src/documentation/content/xdocs/trunk/embedding.xml?rev=649175&r1=649174&r2=649175&view=diff
==============================================================================
---
xmlgraphics/fop/branches/Temp_AFPGOCAResources/src/documentation/content/xdocs/trunk/embedding.xml
(original)
+++
xmlgraphics/fop/branches/Temp_AFPGOCAResources/src/documentation/content/xdocs/trunk/embedding.xml
Thu Apr 17 09:30:02 2008
@@ -183,7 +183,7 @@
how to configure alternative backends.
</p>
<p>
- As a result of the above we differentiate between to kinds of
"logging":
+ As a result of the above we differentiate between two kinds of
"logging":
</p>
<ul>
<li>(FOP-)Developer-oriented logging</li>
Modified:
xmlgraphics/fop/branches/Temp_AFPGOCAResources/src/java/org/apache/fop/Version.java
URL:
http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_AFPGOCAResources/src/java/org/apache/fop/Version.java?rev=649175&r1=649174&r2=649175&view=diff
==============================================================================
---
xmlgraphics/fop/branches/Temp_AFPGOCAResources/src/java/org/apache/fop/Version.java
(original)
+++
xmlgraphics/fop/branches/Temp_AFPGOCAResources/src/java/org/apache/fop/Version.java
Thu Apr 17 09:30:02 2008
@@ -41,7 +41,7 @@
if (version == null) {
//Fallback if FOP is used in a development environment
String headURL
- = "$HeadURL:
http://svn.apache.org/repos/asf/xmlgraphics/fop/trunk/src/java/org/apache/fop/Version.java
$";
+ = "$HeadURL$";
version = headURL;
final String pathPrefix = "/xmlgraphics/fop/";
int pos = version.indexOf(pathPrefix);
Propchange:
xmlgraphics/fop/branches/Temp_AFPGOCAResources/src/java/org/apache/fop/Version.java
------------------------------------------------------------------------------
--- svn:keywords (original)
+++ svn:keywords Thu Apr 17 09:30:02 2008
@@ -1 +1 @@
-Id
+Id HeadURL
Modified:
xmlgraphics/fop/branches/Temp_AFPGOCAResources/src/java/org/apache/fop/cli/CommandLineOptions.java
URL:
http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_AFPGOCAResources/src/java/org/apache/fop/cli/CommandLineOptions.java?rev=649175&r1=649174&r2=649175&view=diff
==============================================================================
---
xmlgraphics/fop/branches/Temp_AFPGOCAResources/src/java/org/apache/fop/cli/CommandLineOptions.java
(original)
+++
xmlgraphics/fop/branches/Temp_AFPGOCAResources/src/java/org/apache/fop/cli/CommandLineOptions.java
Thu Apr 17 09:30:02 2008
@@ -46,6 +46,8 @@
import org.apache.fop.render.Renderer;
import org.apache.fop.render.awt.AWTRenderer;
import org.apache.fop.render.pdf.PDFRenderer;
+import org.apache.fop.render.print.PagesMode;
+import org.apache.fop.render.print.PrintRenderer;
import org.apache.fop.render.xml.XMLRenderer;
import org.apache.fop.util.CommandLineLogger;
@@ -133,8 +135,9 @@
* @throws FOPException for general errors
* @throws FileNotFoundException if an input file wasn't found
* @throws IOException if the the configuration file could not be loaded
+ * @return true if the processing can continue, false to abort
*/
- public void parse(String[] args)
+ public boolean parse(String[] args)
throws FOPException, IOException {
boolean optionsParsed = true;
@@ -155,6 +158,8 @@
}
addXSLTParameter("fop-output-format", getOutputFormat());
addXSLTParameter("fop-version", Version.getVersion());
+ } else {
+ return false;
}
} catch (FOPException e) {
printUsage();
@@ -193,6 +198,7 @@
//Make sure the prepared XMLRenderer is used
foUserAgent.setRendererOverride(xmlRenderer);
}
+ return true;
}
/**
@@ -268,7 +274,6 @@
} else if (args[i].equals("-png")) {
i = i + parsePNGOutputOption(args, i);
} else if (args[i].equals("-print")) {
- i = i + parsePrintOutputOption(args, i);
// show print help
if (i + 1 < args.length) {
if (args[i + 1].equals("help")) {
@@ -276,6 +281,9 @@
return false;
}
}
+ i = i + parsePrintOutputOption(args, i);
+ } else if (args[i].equals("-copies")) {
+ i = i + parseCopiesOption(args, i);
} else if (args[i].equals("-pcl")) {
i = i + parsePCLOutputOption(args, i);
} else if (args[i].equals("-ps")) {
@@ -302,7 +310,7 @@
String expression = args[++i];
addXSLTParameter(name, expression);
} else {
- throw new FOPException("invalid param usage: use -param
<name> <value>");
+ throw new FOPException("invalid param usage: use -param
<name> <value>");
}
} else if (args[i].equals("-o")) {
i = i + parsePDFOwnerPassword(args, i);
@@ -461,7 +469,37 @@
private int parsePrintOutputOption(String[] args, int i) throws
FOPException {
setOutputMode(MimeConstants.MIME_FOP_PRINT);
- return 0;
+ if ((i + 1 <= args.length)
+ && (args[i + 1].charAt(0) != '-')) {
+ String arg = args[i + 1];
+ String[] parts = arg.split(",");
+ for (int j = 0; j < parts.length; j++) {
+ String s = parts[j];
+ if (s.matches("\\d+")) {
+ renderingOptions.put(PrintRenderer.START_PAGE, new
Integer(s));
+ } else if (s.matches("\\d+-\\d+")) {
+ String[] startend = s.split("-");
+ renderingOptions.put(PrintRenderer.START_PAGE, new
Integer(startend[0]));
+ renderingOptions.put(PrintRenderer.END_PAGE, new
Integer(startend[1]));
+ } else {
+ PagesMode mode = PagesMode.byName(s);
+ renderingOptions.put(PrintRenderer.PAGES_MODE, mode);
+ }
+ }
+ return 1;
+ } else {
+ return 0;
+ }
+ }
+
+ private int parseCopiesOption(String[] args, int i) throws FOPException {
+ if ((i + 1 == args.length)
+ || (args[i + 1].charAt(0) == '-')) {
+ throw new FOPException("you must specify the number of copies");
+ } else {
+ renderingOptions.put(PrintRenderer.COPIES, new Integer(args[i +
1]));
+ return 1;
+ }
}
private int parsePCLOutputOption(String[] args, int i) throws FOPException
{
@@ -991,18 +1029,21 @@
+ " Fop -xml foo.xml -xsl foo.xsl -foout foo.fo\n"
+ " Fop foo.fo -mif foo.mif\n"
+ " Fop foo.fo -rtf foo.rtf\n"
- + " Fop foo.fo -print or Fop -print foo.fo \n"
- + " Fop foo.fo -awt \n");
+ + " Fop foo.fo -print\n"
+ + " Fop foo.fo -awt\n");
}
/**
* shows the options for print output
*/
private void printUsagePrintOutput() {
- System.err.println("USAGE: -print [-Dstart=i] [-Dend=i] [-Dcopies=i]
[-Deven=true|false] "
- + " org.apache.fop.apps.Fop (..) -print \n"
- + "Example:\n"
- + "java -Dstart=1 -Dend=2 org.apache.Fop.apps.Fop
infile.fo -print ");
+ System.err.println("USAGE: -print [from[-to][,even|odd]] [-copies
numCopies]\n\n"
+ + "Example:\n"
+ + "all pages: Fop infile.fo -print\n"
+ + "all pages with two copies: Fop infile.fo -print -copies
2\n"
+ + "all pages starting with page 7: Fop infile.fo -print 7\n"
+ + "pages 2 to 3: Fop infile.fo -print 2-3\n"
+ + "only even page between 10 and 20: Fop infile.fo -print
10-20,even\n");
}
/**
Modified:
xmlgraphics/fop/branches/Temp_AFPGOCAResources/src/java/org/apache/fop/cli/Main.java
URL:
http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_AFPGOCAResources/src/java/org/apache/fop/cli/Main.java?rev=649175&r1=649174&r2=649175&view=diff
==============================================================================
---
xmlgraphics/fop/branches/Temp_AFPGOCAResources/src/java/org/apache/fop/cli/Main.java
(original)
+++
xmlgraphics/fop/branches/Temp_AFPGOCAResources/src/java/org/apache/fop/cli/Main.java
Thu Apr 17 09:30:02 2008
@@ -28,6 +28,7 @@
import java.util.List;
import org.apache.commons.io.IOUtils;
+
import org.apache.fop.apps.FOUserAgent;
import org.apache.fop.apps.MimeConstants;
@@ -151,7 +152,9 @@
try {
options = new CommandLineOptions();
- options.parse(args);
+ if (!options.parse(args)) {
+ System.exit(1);
+ }
foUserAgent = options.getFOUserAgent();
String outputFormat = options.getOutputFormat();
Modified:
xmlgraphics/fop/branches/Temp_AFPGOCAResources/src/java/org/apache/fop/render/PrintRendererConfigurator.java
URL:
http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_AFPGOCAResources/src/java/org/apache/fop/render/PrintRendererConfigurator.java?rev=649175&r1=649174&r2=649175&view=diff
==============================================================================
---
xmlgraphics/fop/branches/Temp_AFPGOCAResources/src/java/org/apache/fop/render/PrintRendererConfigurator.java
(original)
+++
xmlgraphics/fop/branches/Temp_AFPGOCAResources/src/java/org/apache/fop/render/PrintRendererConfigurator.java
Thu Apr 17 09:30:02 2008
@@ -236,7 +236,7 @@
EmbedFontInfo[] embedFontInfos = finder.find(fontUrl, resolver,
fontCache);
if (embedFontInfos == null) {
- return;
+ continue;
}
for (int i = 0, c = embedFontInfos.length; i < c; i++) {
Modified:
xmlgraphics/fop/branches/Temp_AFPGOCAResources/src/java/org/apache/fop/render/awt/AWTRenderer.java
URL:
http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_AFPGOCAResources/src/java/org/apache/fop/render/awt/AWTRenderer.java?rev=649175&r1=649174&r2=649175&view=diff
==============================================================================
---
xmlgraphics/fop/branches/Temp_AFPGOCAResources/src/java/org/apache/fop/render/awt/AWTRenderer.java
(original)
+++
xmlgraphics/fop/branches/Temp_AFPGOCAResources/src/java/org/apache/fop/render/awt/AWTRenderer.java
Thu Apr 17 09:30:02 2008
@@ -43,8 +43,8 @@
import org.apache.fop.area.Area;
import org.apache.fop.area.PageViewport;
import org.apache.fop.render.awt.viewer.PreviewDialog;
-import org.apache.fop.render.awt.viewer.StatusListener;
import org.apache.fop.render.awt.viewer.Renderable;
+import org.apache.fop.render.awt.viewer.StatusListener;
import org.apache.fop.render.java2d.Java2DRenderer;
/**
@@ -202,7 +202,7 @@
/** [EMAIL PROTECTED] */
public boolean supportsOutOfOrder() {
- return true; // TODO true?
+ return false;
}
/** [EMAIL PROTECTED] */
Modified:
xmlgraphics/fop/branches/Temp_AFPGOCAResources/src/java/org/apache/fop/render/java2d/Java2DRenderer.java
URL:
http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_AFPGOCAResources/src/java/org/apache/fop/render/java2d/Java2DRenderer.java?rev=649175&r1=649174&r2=649175&view=diff
==============================================================================
---
xmlgraphics/fop/branches/Temp_AFPGOCAResources/src/java/org/apache/fop/render/java2d/Java2DRenderer.java
(original)
+++
xmlgraphics/fop/branches/Temp_AFPGOCAResources/src/java/org/apache/fop/render/java2d/Java2DRenderer.java
Thu Apr 17 09:30:02 2008
@@ -121,9 +121,6 @@
/** The 0-based current page number */
private int currentPageNumber = 0;
- /** The 0-based total number of rendered pages */
- private int numberOfPages;
-
/** true if antialiasing is set */
protected boolean antialiasing = true;
@@ -208,7 +205,7 @@
public void stopRenderer() throws IOException {
log.debug("Java2DRenderer stopped");
renderingDone = true;
- numberOfPages = currentPageNumber;
+ int numberOfPages = currentPageNumber;
// TODO set all vars to null for gc
if (numberOfPages == 0) {
new FOPException("No page could be rendered");
@@ -238,7 +235,7 @@
* @return The 0-based total number of rendered pages
*/
public int getNumberOfPages() {
- return numberOfPages;
+ return pageViewportList.size();
}
/**
Modified:
xmlgraphics/fop/branches/Temp_AFPGOCAResources/src/java/org/apache/fop/render/print/PrintRenderer.java
URL:
http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_AFPGOCAResources/src/java/org/apache/fop/render/print/PrintRenderer.java?rev=649175&r1=649174&r2=649175&view=diff
==============================================================================
---
xmlgraphics/fop/branches/Temp_AFPGOCAResources/src/java/org/apache/fop/render/print/PrintRenderer.java
(original)
+++
xmlgraphics/fop/branches/Temp_AFPGOCAResources/src/java/org/apache/fop/render/print/PrintRenderer.java
Thu Apr 17 09:30:02 2008
@@ -27,9 +27,11 @@
import java.awt.print.PrinterException;
import java.awt.print.PrinterJob;
import java.io.IOException;
+import java.util.Map;
import java.util.Vector;
import org.apache.fop.apps.FOPException;
+import org.apache.fop.apps.FOUserAgent;
import org.apache.fop.render.java2d.Java2DRenderer;
/**
@@ -40,59 +42,155 @@
*/
public class PrintRenderer extends Java2DRenderer implements Pageable {
- private static final int EVEN_AND_ALL = 0;
-
- private static final int EVEN = 1;
+ /**
+ * Printing parameter: the preconfigured PrinterJob to use,
+ * datatype: java.awt.print.PrinterJob
+ */
+ public static final String PRINTER_JOB = "printerjob";
+
+ /**
+ * Printing parameter: the pages to be printed (all, even or odd),
+ * datatype: the strings "all", "even" or "odd" or one of PagesMode.*
+ */
+ public static final String PAGES_MODE = "even-odd";
- private static final int ODD = 2;
+ /**
+ * Printing parameter: the page number (1-based) of the first page to be
printed,
+ * datatype: a positive Integer
+ */
+ public static final String START_PAGE = "start-page";
+ /**
+ * Printing parameter: the page number (1-based) of the last page to be
printed,
+ * datatype: a positive Integer
+ */
+ public static final String END_PAGE = "end-page";
+
+ /**
+ * Printing parameter: the number of copies of the document to be printed,
+ * datatype: a positive Integer
+ */
+ public static final String COPIES = "copies";
+
+
private int startNumber = 0;
-
private int endNumber = -1;
- private int mode = EVEN_AND_ALL;
+ private PagesMode mode = PagesMode.ALL;
private int copies = 1;
private PrinterJob printerJob;
/**
- * Creates a new PrintRenderer with the options set from system properties.
+ * Creates a new PrintRenderer with the options set from system properties
if a custom
+ * PrinterJob is not given in FOUserAgent's renderer options.
*/
public PrintRenderer() {
- initializePrinterJob();
+ setupFromSystemProperties();
}
-
+
/**
* Creates a new PrintRenderer and allows you to pass in a specific
PrinterJob instance
* that this renderer should work with.
* @param printerJob the PrinterJob instance
+ * @deprecated Please use the rendering options on the user agent to pass
in the PrinterJob!
*/
public PrintRenderer(PrinterJob printerJob) {
+ this();
this.printerJob = printerJob;
printerJob.setPageable(this);
}
- private void initializePrinterJob() throws IllegalArgumentException {
+ private void initializePrinterJob() {
+ if (this.printerJob == null) {
+ printerJob = PrinterJob.getPrinterJob();
+ printerJob.setJobName("FOP Document");
+ printerJob.setCopies(copies);
+ if (System.getProperty("dialog") != null) {
+ if (!printerJob.printDialog()) {
+ throw new RuntimeException(
+ "Printing cancelled by operator");
+ }
+ }
+ printerJob.setPageable(this);
+ }
+ }
+
+ private void setupFromSystemProperties() {
+ //TODO Remove me! This is not a beautiful way to do this.
// read from command-line options
copies = getIntProperty("copies", 1);
- startNumber = getIntProperty("start", 1) - 1;
+ startNumber = getIntProperty("start", 1);
endNumber = getIntProperty("end", -1);
String str = System.getProperty("even");
if (str != null) {
- mode = Boolean.valueOf(str).booleanValue() ? EVEN : ODD;
+ mode = Boolean.valueOf(str).booleanValue() ? PagesMode.EVEN :
PagesMode.ODD;
+ }
+ }
+
+ /** [EMAIL PROTECTED] */
+ public void setUserAgent(FOUserAgent agent) {
+ super.setUserAgent(agent);
+
+ Map rendererOptions = agent.getRendererOptions();
+
+ Object printerJobO = rendererOptions.get(PrintRenderer.PRINTER_JOB);
+ if (printerJobO != null) {
+ if (!(printerJobO instanceof PrinterJob)) {
+ throw new IllegalArgumentException(
+ "Renderer option " + PrintRenderer.PRINTER_JOB
+ + " must be an instance of java.awt.print.PrinterJob, but
an instance of "
+ + printerJobO.getClass().getName() + " was given.");
+ }
+ printerJob = (PrinterJob)printerJobO;
+ printerJob.setPageable(this);
+ }
+ Object o = rendererOptions.get(PrintRenderer.PAGES_MODE);
+ if (o != null) {
+ if (o instanceof PagesMode) {
+ this.mode = (PagesMode)o;
+ } else if (o instanceof String) {
+ this.mode = PagesMode.byName((String)o);
+ } else {
+ throw new IllegalArgumentException(
+ "Renderer option " + PrintRenderer.PAGES_MODE
+ + " must be an 'all', 'even', 'odd' or a PagesMode
instance.");
+ }
}
+
+ o = rendererOptions.get(PrintRenderer.START_PAGE);
+ if (o != null) {
+ this.startNumber = getPositiveInteger(o);
+ }
+ o = rendererOptions.get(PrintRenderer.END_PAGE);
+ if (o != null) {
+ this.endNumber = getPositiveInteger(o);
+ }
+ if (this.endNumber >= 0 && this.endNumber < this.endNumber) {
+ this.endNumber = this.startNumber;
+ }
+ o = rendererOptions.get(PrintRenderer.COPIES);
+ if (o != null) {
+ this.copies = getPositiveInteger(o);
+ }
+ initializePrinterJob();
+ }
- printerJob = PrinterJob.getPrinterJob();
- printerJob.setJobName("FOP Document");
- printerJob.setCopies(copies);
- if (System.getProperty("dialog") != null) {
- if (!printerJob.printDialog()) {
+ private int getPositiveInteger(Object o) {
+ if (o instanceof Integer) {
+ Integer i = (Integer)o;
+ if (i.intValue() < 1) {
throw new IllegalArgumentException(
- "Printing cancelled by operator");
+ "Value must be a positive Integer");
}
+ return i.intValue();
+ } else if (o instanceof String) {
+ return Integer.parseInt((String)o);
+ } else {
+ throw new IllegalArgumentException(
+ "Value must be a positive integer");
}
- printerJob.setPageable(this);
}
/** @return the PrinterJob instance that this renderer prints to */
@@ -126,6 +224,7 @@
this.startNumber = start;
}
+ /** [EMAIL PROTECTED] */
public void stopRenderer() throws IOException {
super.stopRenderer();
@@ -136,7 +235,8 @@
Vector numbers = getInvalidPageNumbers();
for (int i = numbers.size() - 1; i > -1; i--) {
- // removePage(Integer.parseInt((String)numbers.elementAt(i)));
+ int page = ((Integer)numbers.elementAt(i)).intValue();
+ pageViewportList.remove(page - 1);
}
try {
@@ -149,7 +249,7 @@
clearViewportList();
}
- public static int getIntProperty(String name, int def) {
+ private static int getIntProperty(String name, int def) {
String propValue = System.getProperty(name);
if (propValue != null) {
try {
@@ -166,20 +266,20 @@
Vector vec = new Vector();
int max = getNumberOfPages();
boolean isValid;
- for (int i = 0; i < max; i++) {
+ for (int i = 1; i <= max; i++) {
isValid = true;
if (i < startNumber || i > endNumber) {
isValid = false;
- } else if (mode != EVEN_AND_ALL) {
- if (mode == EVEN && ((i + 1) % 2 != 0)) {
+ } else if (mode != PagesMode.ALL) {
+ if (mode == PagesMode.EVEN && (i % 2 != 0)) {
isValid = false;
- } else if (mode == ODD && ((i + 1) % 2 != 1)) {
+ } else if (mode == PagesMode.ODD && (i % 2 == 0)) {
isValid = false;
}
}
if (!isValid) {
- vec.add(Integer.toString(i));
+ vec.add(new Integer(i));
}
}
return vec;
@@ -219,6 +319,7 @@
}
}
+ /** [EMAIL PROTECTED] */
public Printable getPrintable(int pageIndex)
throws IndexOutOfBoundsException {
return this;
Modified: xmlgraphics/fop/branches/Temp_AFPGOCAResources/status.xml
URL:
http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_AFPGOCAResources/status.xml?rev=649175&r1=649174&r2=649175&view=diff
==============================================================================
--- xmlgraphics/fop/branches/Temp_AFPGOCAResources/status.xml (original)
+++ xmlgraphics/fop/branches/Temp_AFPGOCAResources/status.xml Thu Apr 17
09:30:02 2008
@@ -59,6 +59,14 @@
<action context="Renderers" dev="AC" importance="high" type="add">
Added de-duplication and externalization support for IOCA and GOCA
data resource objects.
</action>
+ <action context="Renderers" dev="JM" type="add" fixes-bug="41687">
+ Restored ability to specify from/to and odd/even pages as well as the
number of copies
+ for printing from the command-line.
+ </action>
+ <action context="Renderers" dev="JM" type="add" fixes-bug="44678"
due-to="Antti Karanta">
+ Added ability to pass a preconfigured PrinterJob instance to the
PrintRenderer via
+ the rendering options map.
+ </action>
<action context="Renderers" dev="JM" type="add" fixes-bug="44743"
due-to="Yegor Kozlov">
Added a public accessor for reference to the current page to
PDFGraphics2D.
</action>
Modified:
xmlgraphics/fop/branches/Temp_AFPGOCAResources/test/java/org/apache/fop/fotreetest/FOTreeTestSuite.java
URL:
http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_AFPGOCAResources/test/java/org/apache/fop/fotreetest/FOTreeTestSuite.java?rev=649175&r1=649174&r2=649175&view=diff
==============================================================================
---
xmlgraphics/fop/branches/Temp_AFPGOCAResources/test/java/org/apache/fop/fotreetest/FOTreeTestSuite.java
(original)
+++
xmlgraphics/fop/branches/Temp_AFPGOCAResources/test/java/org/apache/fop/fotreetest/FOTreeTestSuite.java
Thu Apr 17 09:30:02 2008
@@ -35,6 +35,7 @@
import org.apache.commons.io.filefilter.PrefixFileFilter;
import org.apache.commons.io.filefilter.SuffixFileFilter;
import org.apache.commons.io.filefilter.TrueFileFilter;
+
import org.apache.fop.DebugHelper;
import org.apache.fop.fo.flow.table.CollapsedConditionalBorderTestCase;
import org.apache.fop.fo.flow.table.IllegalRowSpanTestCase;
@@ -104,9 +105,14 @@
final FOTreeTester tester, final File f) {
suite.addTest(new FOTreeTestCase(f.getName()) {
public void runTest() throws Exception {
-
org.apache.commons.logging.LogFactory.getLog(this.getClass()).info("Starting "
+ f.getName());
- prepare(tester, f);
- testMain();
+ try {
+ prepare(tester, f);
+ testMain();
+ } catch (Exception e) {
+
org.apache.commons.logging.LogFactory.getLog(this.getClass()).info(
+ "Error on " + f.getName());
+ throw e;
+ }
}
});
}
Modified:
xmlgraphics/fop/branches/Temp_AFPGOCAResources/test/java/org/apache/fop/fotreetest/FOTreeTester.java
URL:
http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_AFPGOCAResources/test/java/org/apache/fop/fotreetest/FOTreeTester.java?rev=649175&r1=649174&r2=649175&view=diff
==============================================================================
---
xmlgraphics/fop/branches/Temp_AFPGOCAResources/test/java/org/apache/fop/fotreetest/FOTreeTester.java
(original)
+++
xmlgraphics/fop/branches/Temp_AFPGOCAResources/test/java/org/apache/fop/fotreetest/FOTreeTester.java
Thu Apr 17 09:30:02 2008
@@ -25,14 +25,15 @@
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;
+import org.xml.sax.SAXException;
+import org.xml.sax.XMLReader;
+import org.xml.sax.helpers.XMLFilterImpl;
+
import org.apache.fop.apps.FOUserAgent;
import org.apache.fop.apps.Fop;
import org.apache.fop.apps.FopFactory;
-
import org.apache.fop.fotreetest.ext.TestElementMapping;
-import org.xml.sax.SAXException;
-import org.xml.sax.XMLReader;
-import org.xml.sax.helpers.XMLFilterImpl;
+import org.apache.fop.util.ConsoleEventListenerForTests;
/**
* Test driver class for FO tree tests.
@@ -66,6 +67,8 @@
FOUserAgent ua = fopFactory.newFOUserAgent();
ua.setBaseURL(testFile.getParentFile().toURL().toString());
ua.setFOEventHandlerOverride(new DummyFOEventHandler(ua));
+ ua.getEventBroadcaster().addEventListener(
+ new ConsoleEventListenerForTests(testFile.getName()));
//Used to set values in the user agent through processing instructions
reader = new PIListener(reader, ua);
Modified:
xmlgraphics/fop/branches/Temp_AFPGOCAResources/test/java/org/apache/fop/fotreetest/FOTreeUnitTester.java
URL:
http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_AFPGOCAResources/test/java/org/apache/fop/fotreetest/FOTreeUnitTester.java?rev=649175&r1=649174&r2=649175&view=diff
==============================================================================
---
xmlgraphics/fop/branches/Temp_AFPGOCAResources/test/java/org/apache/fop/fotreetest/FOTreeUnitTester.java
(original)
+++
xmlgraphics/fop/branches/Temp_AFPGOCAResources/test/java/org/apache/fop/fotreetest/FOTreeUnitTester.java
Thu Apr 17 09:30:02 2008
@@ -26,11 +26,13 @@
import junit.framework.TestCase;
+import org.xml.sax.XMLReader;
+
import org.apache.fop.apps.FOUserAgent;
import org.apache.fop.apps.Fop;
import org.apache.fop.apps.FopFactory;
import org.apache.fop.fo.FOEventHandler;
-import org.xml.sax.XMLReader;
+import org.apache.fop.util.ConsoleEventListenerForTests;
/**
@@ -82,6 +84,8 @@
public void setUp(String filename, FOEventHandlerFactory factory) throws
Exception {
FOUserAgent ua = fopFactory.newFOUserAgent();
ua.setFOEventHandlerOverride(factory.createFOEventHandler(ua));
+ ua.getEventBroadcaster().addEventListener(
+ new ConsoleEventListenerForTests(filename));
Fop fop = fopFactory.newFop(ua);
Modified:
xmlgraphics/fop/branches/Temp_AFPGOCAResources/test/java/org/apache/fop/intermediate/AreaTreeParserTestCase.java
URL:
http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_AFPGOCAResources/test/java/org/apache/fop/intermediate/AreaTreeParserTestCase.java?rev=649175&r1=649174&r2=649175&view=diff
==============================================================================
---
xmlgraphics/fop/branches/Temp_AFPGOCAResources/test/java/org/apache/fop/intermediate/AreaTreeParserTestCase.java
(original)
+++
xmlgraphics/fop/branches/Temp_AFPGOCAResources/test/java/org/apache/fop/intermediate/AreaTreeParserTestCase.java
Thu Apr 17 09:30:02 2008
@@ -50,6 +50,7 @@
import org.apache.fop.fonts.FontInfo;
import org.apache.fop.render.Renderer;
import org.apache.fop.render.xml.XMLRenderer;
+import org.apache.fop.util.ConsoleEventListenerForTests;
//XML Unit 1.0: See http://xmlunit.sourceforge.net (BSD-style License)
import org.custommonkey.xmlunit.XMLTestCase;
@@ -170,6 +171,8 @@
FOUserAgent userAgent = fopFactory.newFOUserAgent();
try {
userAgent.setBaseURL(testDir.toURL().toExternalForm());
+ userAgent.getEventBroadcaster().addEventListener(
+ new ConsoleEventListenerForTests(testFile.getName()));
} catch (MalformedURLException e) {
//ignore, won't happen
}
Modified:
xmlgraphics/fop/branches/Temp_AFPGOCAResources/test/java/org/apache/fop/intermediate/IntermediateFormatTestSuite.java
URL:
http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_AFPGOCAResources/test/java/org/apache/fop/intermediate/IntermediateFormatTestSuite.java?rev=649175&r1=649174&r2=649175&view=diff
==============================================================================
---
xmlgraphics/fop/branches/Temp_AFPGOCAResources/test/java/org/apache/fop/intermediate/IntermediateFormatTestSuite.java
(original)
+++
xmlgraphics/fop/branches/Temp_AFPGOCAResources/test/java/org/apache/fop/intermediate/IntermediateFormatTestSuite.java
Thu Apr 17 09:30:02 2008
@@ -56,10 +56,14 @@
final File f) {
suite.addTest(new AreaTreeParserTestCase(f) {
public void runTest() throws Exception {
- org.apache.commons.logging.LogFactory.getLog(
- this.getClass()).info("Starting " + f.getName());
- testParserToAT();
- testParserToPDF();
+ try {
+ testParserToAT();
+ testParserToPDF();
+ } catch (Exception e) {
+ org.apache.commons.logging.LogFactory.getLog(
+ this.getClass()).error("Error on " + f.getName());
+ throw e;
+ }
}
});
}
Modified:
xmlgraphics/fop/branches/Temp_AFPGOCAResources/test/java/org/apache/fop/layoutengine/LayoutEngineTestSuite.java
URL:
http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_AFPGOCAResources/test/java/org/apache/fop/layoutengine/LayoutEngineTestSuite.java?rev=649175&r1=649174&r2=649175&view=diff
==============================================================================
---
xmlgraphics/fop/branches/Temp_AFPGOCAResources/test/java/org/apache/fop/layoutengine/LayoutEngineTestSuite.java
(original)
+++
xmlgraphics/fop/branches/Temp_AFPGOCAResources/test/java/org/apache/fop/layoutengine/LayoutEngineTestSuite.java
Thu Apr 17 09:30:02 2008
@@ -34,6 +34,14 @@
import javax.xml.transform.sax.SAXResult;
import javax.xml.transform.stream.StreamSource;
+import junit.framework.Test;
+import junit.framework.TestCase;
+import junit.framework.TestSuite;
+
+import org.xml.sax.Attributes;
+import org.xml.sax.SAXException;
+import org.xml.sax.helpers.DefaultHandler;
+
import org.apache.commons.io.FileUtils;
import org.apache.commons.io.filefilter.AndFileFilter;
import org.apache.commons.io.filefilter.IOFileFilter;
@@ -42,15 +50,8 @@
import org.apache.commons.io.filefilter.PrefixFileFilter;
import org.apache.commons.io.filefilter.SuffixFileFilter;
import org.apache.commons.io.filefilter.TrueFileFilter;
-import org.apache.fop.DebugHelper;
-import org.xml.sax.Attributes;
-import org.xml.sax.SAXException;
-import org.xml.sax.helpers.DefaultHandler;
-
-import junit.framework.Test;
-import junit.framework.TestCase;
-import junit.framework.TestSuite;
+import org.apache.fop.DebugHelper;
/**
* JUnit test suit for running layout engine test under JUnit control.
@@ -187,10 +188,14 @@
final LayoutEngineTester tester, final File f) {
suite.addTest(new LayoutEngineTestCase(f.getName()) {
public void runTest() throws Exception {
- org.apache.commons.logging.LogFactory.getLog(
- this.getClass()).info("Starting " + f.getName());
- prepare(tester, f);
- testMain();
+ try {
+ prepare(tester, f);
+ testMain();
+ } catch (Exception e) {
+ org.apache.commons.logging.LogFactory.getLog(
+ this.getClass()).error("Error on " + f.getName());
+ throw e;
+ }
}
});
}
Modified:
xmlgraphics/fop/branches/Temp_AFPGOCAResources/test/java/org/apache/fop/layoutengine/LayoutEngineTester.java
URL:
http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_AFPGOCAResources/test/java/org/apache/fop/layoutengine/LayoutEngineTester.java?rev=649175&r1=649174&r2=649175&view=diff
==============================================================================
---
xmlgraphics/fop/branches/Temp_AFPGOCAResources/test/java/org/apache/fop/layoutengine/LayoutEngineTester.java
(original)
+++
xmlgraphics/fop/branches/Temp_AFPGOCAResources/test/java/org/apache/fop/layoutengine/LayoutEngineTester.java
Thu Apr 17 09:30:02 2008
@@ -43,19 +43,23 @@
import javax.xml.transform.stream.StreamResult;
import javax.xml.transform.stream.StreamSource;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+
+import org.xml.sax.SAXException;
+
+import org.apache.xpath.XPathAPI;
+import org.apache.xpath.objects.XObject;
+
import org.apache.fop.apps.FOUserAgent;
import org.apache.fop.apps.Fop;
import org.apache.fop.apps.FopFactory;
import org.apache.fop.apps.FormattingResults;
import org.apache.fop.layoutmgr.ElementListObserver;
import org.apache.fop.render.xml.XMLRenderer;
-import org.apache.xpath.XPathAPI;
-import org.apache.xpath.objects.XObject;
-import org.w3c.dom.Document;
-import org.w3c.dom.Element;
-import org.w3c.dom.Node;
-import org.w3c.dom.NodeList;
-import org.xml.sax.SAXException;
+import org.apache.fop.util.ConsoleEventListenerForTests;
/**
* Class for testing the FOP's layout engine using testcases specified in XML
@@ -154,6 +158,9 @@
//Setup FOP for area tree rendering
FOUserAgent ua = effFactory.newFOUserAgent();
ua.setBaseURL(testFile.getParentFile().toURL().toString());
+ ua.getEventBroadcaster().addEventListener(
+ new ConsoleEventListenerForTests(testFile.getName()));
+
XMLRenderer atrenderer = new XMLRenderer();
atrenderer.setUserAgent(ua);
atrenderer.setContentHandler(athandler);
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]