pietsch 2003/09/19 09:46:43
Modified: src/java/org/apache/fop/render Renderer.java
AbstractRenderer.java
src/java/org/apache/fop/pdf PDFDocument.java
src/java/org/apache/fop/render/pdf PDFRenderer.java
Log:
Add possibility to set creation date.
Revision Changes Path
1.5 +13 -2 xml-fop/src/java/org/apache/fop/render/Renderer.java
Index: Renderer.java
===================================================================
RCS file: /home/cvs/xml-fop/src/java/org/apache/fop/render/Renderer.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- Renderer.java 22 Aug 2003 17:42:42 -0000 1.4
+++ Renderer.java 19 Sep 2003 16:46:43 -0000 1.5
@@ -53,6 +53,7 @@
// Java
import java.io.OutputStream;
import java.io.IOException;
+import java.util.Date;
import java.util.Map;
// FOP
@@ -142,13 +143,23 @@
void setProducer(String producer);
/**
- * Set the creator of the document to be rendered. If this method
- * isn't called the renderer uses a default.
+ * Set the creator of the document to be rendered.
+ * If this method isn't called the renderer uses a default.
* Note: Not all renderers support this feature.
*
* @param creator The name of the document creator
*/
void setCreator(String creator);
+
+ /**
+ * Set the creator date/timeof the document to be rendered.
+ * If this method isn't called the renderer uses the current date/time
+ * as default.
+ * Note: Not all renderers support this feature.
+ *
+ * @param date The name of the document creator
+ */
+ void setCreationDate(Date date);
/**
* Reports if out of order rendering is supported. <p>
1.15 +19 -2 xml-fop/src/java/org/apache/fop/render/AbstractRenderer.java
Index: AbstractRenderer.java
===================================================================
RCS file: /home/cvs/xml-fop/src/java/org/apache/fop/render/AbstractRenderer.java,v
retrieving revision 1.14
retrieving revision 1.15
diff -u -r1.14 -r1.15
--- AbstractRenderer.java 14 Sep 2003 19:32:44 -0000 1.14
+++ AbstractRenderer.java 19 Sep 2003 16:46:43 -0000 1.15
@@ -54,6 +54,7 @@
import java.awt.geom.Rectangle2D;
import java.io.IOException;
import java.io.OutputStream;
+import java.util.Date;
import java.util.Map;
import java.util.List;
import java.util.Iterator;
@@ -125,6 +126,11 @@
protected String creator = null;
/**
+ * creation time
+ */
+ protected Date creationDate = null;
+
+ /**
* renderer configuration
*/
protected Map options;
@@ -172,12 +178,23 @@
creator = inCreator;
}
- /** @see org.apache.fop.render.Renderer */
+ /**
+ * @see org.apache.fop.render.Renderer
+ */
public abstract void setupFontInfo(FOTreeControl foTreeControl);
- /** @see org.apache.fop.render.Renderer */
+ /**
+ * @see org.apache.fop.render.Renderer
+ */
public void setUserAgent(FOUserAgent agent) {
userAgent = agent;
+ }
+
+ /**
+ * @param date
+ */
+ public void setCreationDate(Date date) {
+ creationDate = date;
}
/** @see org.apache.fop.render.Renderer */
1.6 +76 -47 xml-fop/src/java/org/apache/fop/pdf/PDFDocument.java
Index: PDFDocument.java
===================================================================
RCS file: /home/cvs/xml-fop/src/java/org/apache/fop/pdf/PDFDocument.java,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- PDFDocument.java 24 Apr 2003 02:48:08 -0000 1.5
+++ PDFDocument.java 19 Sep 2003 16:46:43 -0000 1.6
@@ -55,6 +55,7 @@
import java.io.InputStream;
import java.io.OutputStream;
import java.io.UnsupportedEncodingException;
+import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.Iterator;
@@ -159,7 +160,8 @@
/**
* the colorspace (0=RGB, 1=CMYK)
*/
- protected PDFColorSpace colorspace = new
PDFColorSpace(PDFColorSpace.DEVICE_RGB);
+ protected PDFColorSpace colorspace =
+ new PDFColorSpace(PDFColorSpace.DEVICE_RGB);
/**
* the counter for Pattern name numbering (e.g. 'Pattern1')
@@ -232,7 +234,6 @@
*/
protected List gotos = new java.util.ArrayList();
-
private PDFFactory factory;
private boolean encodingOnTheFly = true;
@@ -325,10 +326,19 @@
}
/**
- * set the creator of the document
- *
- * @param creator string indicating application creating the document
- */
+ * Set the creation date of the document.
+ *
+ * @param date Date to be stored as creation date in the PDF.
+ */
+ public void setCreationDate(Date date) {
+ info.setCreationDate(date);
+ }
+
+ /**
+ * Set the creator of the document.
+ *
+ * @param creator string indicating application creating the document
+ */
public void setCreator(String creator) {
this.info.setCreator(creator);
}
@@ -399,13 +409,15 @@
throw new NullPointerException("obj must not be null");
}
if (obj.hasObjectNumber()) {
- throw new IllegalStateException("Error registering a PDFObject: "
- + "PDFObject already has an object number");
+ throw new IllegalStateException(
+ "Error registering a PDFObject: "
+ + "PDFObject already has an object number");
}
PDFDocument currentParent = obj.getDocument();
if (currentParent != null && currentParent != this) {
- throw new IllegalStateException("Error registering a PDFObject: "
- + "PDFObject already has a parent PDFDocument");
+ throw new IllegalStateException(
+ "Error registering a PDFObject: "
+ + "PDFObject already has a parent PDFDocument");
}
obj.setObjectNumber(++this.objectcount);
@@ -425,8 +437,9 @@
throw new NullPointerException("obj must not be null");
}
if (!obj.hasObjectNumber()) {
- throw new IllegalStateException("Error adding a PDFObject: "
- + "PDFObject doesn't have an object number");
+ throw new IllegalStateException(
+ "Error adding a PDFObject: "
+ + "PDFObject doesn't have an object number");
}
//Add object to list
@@ -469,7 +482,6 @@
}
}
-
/**
* Add trailer object.
* Adds an object to the list of trailer objects.
@@ -499,18 +511,19 @@
* @param params The encryption parameters for the pdf file
*/
public void setEncryption(PDFEncryptionParams params) {
- this.encryption = PDFEncryptionManager.newInstance(++this.objectcount,
params);
+ this.encryption =
+ PDFEncryptionManager.newInstance(++this.objectcount, params);
((PDFObject)this.encryption).setDocument(this);
if (encryption != null) {
/[EMAIL PROTECTED] this cast is ugly. PDFObject should be transformed
to an interface. */
addTrailerObject((PDFObject)this.encryption);
} else {
- getLogger().warn("PDF encryption is unavailable. PDF will be "
- + "generated without encryption.");
+ getLogger().warn(
+ "PDF encryption is unavailable. PDF will be "
+ + "generated without encryption.");
}
}
-
/**
* Indicates whether encryption is active for this PDF or not.
* @return boolean True if encryption is active
@@ -681,7 +694,7 @@
* @return the InputStream from the URI.
*/
protected InputStream resolveURI(String uri)
- throws java.io.FileNotFoundException {
+ throws java.io.FileNotFoundException {
try {
/[EMAIL PROTECTED] Temporary hack to compile, improve later */
return new java.net.URL(uri).openStream();
@@ -691,7 +704,6 @@
}
}
-
/**
* Get an image from the image map.
*
@@ -727,8 +739,7 @@
// setup image
img.setup(this);
// create a new XObject
- xObject = new PDFXObject(++this.xObjectCount,
- img);
+ xObject = new PDFXObject(++this.xObjectCount, img);
registerObject(xObject);
this.resources.addXObject(xObject);
if (res != null) {
@@ -750,11 +761,17 @@
* @param key the key for the object
* @return the PDF Form XObject that references the PDF data
*/
- public PDFFormXObject addFormXObject(PDFResourceContext res, PDFStream cont,
- PDFResources formres, String key) {
+ public PDFFormXObject addFormXObject(
+ PDFResourceContext res,
+ PDFStream cont,
+ PDFResources formres,
+ String key) {
PDFFormXObject xObject;
- xObject = new PDFFormXObject(++this.xObjectCount,
- cont, formres.referencePDF());
+ xObject =
+ new PDFFormXObject(
+ ++this.xObjectCount,
+ cont,
+ formres.referencePDF());
registerObject(xObject);
this.resources.addXObject(xObject);
if (res != null) {
@@ -841,8 +858,7 @@
* @param stream the OutputStream to write the header to
* @throws IOException if there is an exception writing to the output stream
*/
- public void outputHeader(OutputStream stream)
- throws IOException {
+ public void outputHeader(OutputStream stream) throws IOException {
this.position = 0;
byte[] pdf = ("%PDF-" + PDF_VERSION + "\n").getBytes();
@@ -850,10 +866,14 @@
this.position += pdf.length;
// output a binary comment as recommended by the PDF spec (3.4.1)
- byte[] bin = {
- (byte)'%', (byte)0xAA, (byte)0xAB, (byte)0xAC, (byte)0xAD,
- (byte)'\n'
- };
+ byte[] bin =
+ {
+ (byte)'%',
+ (byte)0xAA,
+ (byte)0xAB,
+ (byte)0xAC,
+ (byte)0xAD,
+ (byte)'\n' };
stream.write(bin);
this.position += bin.length;
}
@@ -864,13 +884,13 @@
* @param stream the OutputStream to write the trailer to
* @throws IOException if there is an exception writing to the output stream
*/
- public void outputTrailer(OutputStream stream)
- throws IOException {
+ public void outputTrailer(OutputStream stream) throws IOException {
output(stream);
for (int count = 0; count < trailerObjects.size(); count++) {
- PDFObject o = (PDFObject) trailerObjects.get(count);
- this.location.set(o.getObjectNumber() - 1,
- new Integer(this.position));
+ PDFObject o = (PDFObject)trailerObjects.get(count);
+ this.location.set(
+ o.getObjectNumber() - 1,
+ new Integer(this.position));
this.position += o.output(stream);
}
/* output the xref table and increment the character position
@@ -884,13 +904,24 @@
}
/* construct the trailer */
- String pdf = "trailer\n" + "<<\n"
- + "/Size " + (this.objectcount + 1) + "\n"
- + "/Root " + this.root.referencePDF() + "\n"
- + "/Info " + this.info.referencePDF() + "\n"
- + encryptEntry
- + ">>\n" + "startxref\n" + this.xref
- + "\n" + "%%EOF\n";
+ String pdf =
+ "trailer\n"
+ + "<<\n"
+ + "/Size "
+ + (this.objectcount + 1)
+ + "\n"
+ + "/Root "
+ + this.root.referencePDF()
+ + "\n"
+ + "/Info "
+ + this.info.referencePDF()
+ + "\n"
+ + encryptEntry
+ + ">>\n"
+ + "startxref\n"
+ + this.xref
+ + "\n"
+ + "%%EOF\n";
/* write the trailer */
stream.write(encode(pdf));
@@ -909,9 +940,8 @@
/* construct initial part of xref */
StringBuffer pdf = new StringBuffer(128);
- pdf.append("xref\n0 "
- + (this.objectcount + 1)
- + "\n0000000000 65535 f \n");
+ pdf.append(
+ "xref\n0 " + (this.objectcount + 1) + "\n0000000000 65535 f \n");
for (int count = 0; count < this.location.size(); count++) {
String x = this.location.get(count).toString();
@@ -931,4 +961,3 @@
}
}
-
1.17 +1 -0 xml-fop/src/java/org/apache/fop/render/pdf/PDFRenderer.java
Index: PDFRenderer.java
===================================================================
RCS file: /home/cvs/xml-fop/src/java/org/apache/fop/render/pdf/PDFRenderer.java,v
retrieving revision 1.16
retrieving revision 1.17
diff -u -r1.16 -r1.17
--- PDFRenderer.java 1 Sep 2003 14:19:34 -0000 1.16
+++ PDFRenderer.java 19 Sep 2003 16:46:43 -0000 1.17
@@ -271,6 +271,7 @@
this.pdfDoc = new PDFDocument(producer);
setupLogger(this.pdfDoc);
this.pdfDoc.setCreator(creator);
+ this.pdfDoc.setCreationDate(creationDate);
this.pdfDoc.setFilterMap(filterMap);
this.pdfDoc.outputHeader(stream);
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]