cvs commit: xml-fop/src/org/apache/fop/render/pdf PDFRenderer.java
pietsch 2003/03/05 10:58:16 Modified:.Tag: fop-0_20_2-maintain build.xml src/org/apache/fop/apps Tag: fop-0_20_2-maintain CommandLineOptions.java src/org/apache/fop/pdf Tag: fop-0_20_2-maintain PDFDocument.java PDFXObject.java src/org/apache/fop/render/pdf Tag: fop-0_20_2-maintain PDFRenderer.java Added: src/java-1.3/org/apache/fop/pdf Tag: fop-0_20_2-maintain PDFEncryption.java src/java-1.4/org/apache/fop/pdf Tag: fop-0_20_2-maintain PDFEncryption.java Log: Added PDF encryption. Submitted by: Patrick C. Lankswert [EMAIL PROTECTED] Revision ChangesPath No revision No revision 1.44.2.38 +10 -3 xml-fop/build.xml Index: build.xml === RCS file: /home/cvs/xml-fop/build.xml,v retrieving revision 1.44.2.37 retrieving revision 1.44.2.38 diff -u -r1.44.2.37 -r1.44.2.38 --- build.xml 18 Feb 2003 12:27:34 - 1.44.2.37 +++ build.xml 5 Mar 2003 18:58:14 - 1.44.2.38 @@ -189,7 +189,7 @@ tstamp/ property name=Name value=Fop/ property name=name value=fop/ -property name=version value=0.20.5rc2/ +property name=version value=0.20.5rc3/ filter token=version value=${version}/ property name=year value=1999-2003/ @@ -302,11 +302,17 @@ target name=init-filters-jdk13 depends=init-avail unless=jdk14.present echo message=JDK 1.3 or earlier present./ copy file=src/codegen/jdk13.filter toFile=build/src/codegen/filter/ +copy todir=build/src + fileset dir=src/java-1.3/ +/copy /target target name=init-filters-jdk14 depends=init-avail if=jdk14.present echo message=JDK 1.4 present./ copy file=src/codegen/jdk14.filter toFile=build/src/codegen/filter/ +copy todir=build/src + fileset dir=src/java-1.4/ +/copy /target @@ -371,8 +377,9 @@ target name=prepare-src depends=prepare, prepare-jimi, prepare-jai, prepare-trax !-- copy src files -- copy todir=${build.src} filtering=yes - fileset dir=${src.dir} - excludes=**/${jimi},**/${jai},**/${tiff},**/${xsltransform},**/${trax},**/apps/TraxInputHandler.java/ + fileset dir=${src.dir} +includes=**/*.java + excludes=java-*/**,**/${jimi},**/${jai},**/${tiff},**/${xsltransform},**/${trax},**/apps/TraxInputHandler.java/ filterset filter token=XSLFO-STD value=${xslfo.std}/ filter token=XSLFO-STDID value=${xslfo.std.id}/ No revision No revision 1.1.2.1 +156 -0xml-fop/src/java-1.3/org/apache/fop/pdf/Attic/PDFEncryption.java No revision No revision 1.1.2.1 +421 -0xml-fop/src/java-1.4/org/apache/fop/pdf/Attic/PDFEncryption.java No revision No revision 1.14.2.10 +95 -30xml-fop/src/org/apache/fop/apps/CommandLineOptions.java Index: CommandLineOptions.java === RCS file: /home/cvs/xml-fop/src/org/apache/fop/apps/CommandLineOptions.java,v retrieving revision 1.14.2.9 retrieving revision 1.14.2.10 diff -u -r1.14.2.9 -r1.14.2.10 --- CommandLineOptions.java 25 Feb 2003 10:18:31 - 1.14.2.9 +++ CommandLineOptions.java 5 Mar 2003 18:58:15 - 1.14.2.10 @@ -147,6 +147,26 @@ } +private boolean pdfEncryptionAvailable = false; +private boolean pdfEncryptionChecked = false; +private boolean encryptionAvailable() { +if (!pdfEncryptionChecked) { +try { +Class c = Class.forName(javax.crypto.Cipher); +pdfEncryptionAvailable += org.apache.fop.pdf.PDFEncryption.encryptionAvailable(); +} +catch(ClassNotFoundException e) { +pdfEncryptionAvailable = false; +} +pdfEncryptionChecked = true; +if (!pdfEncryptionAvailable) { +log.warn(PDF encryption not available.); +} +} +return pdfEncryptionAvailable; +} + /** * parses the commandline arguments * @return true if parse was successful and procesing can continue, false if processing should stop @@ -219,6 +239,44 @@ outfile = new File(args[i + 1]); i++; } +} else if (args[i].equals(-o)) { +if ((i + 1 == args.length) || (args[i + 1].charAt(0) == '-')) { +
cvs commit: xml-fop/src/org/apache/fop/render/pdf PDFRenderer.java
jeremias2003/02/16 04:42:11 Modified:src/org/apache/fop/render/pdf Tag: fop-0_20_2-maintain PDFRenderer.java Log: Fixed some sources of wrong operand type error in Acrobat Reader. They were caused by rounding bugs, mostly experienced with SVG files coming from OpenOffice. The PDF contained matrices like 0 0 0 0 0 0 cm when the values really shouldn't be zero. Revision ChangesPath No revision No revision 1.91.2.12 +7 -7 xml-fop/src/org/apache/fop/render/pdf/PDFRenderer.java Index: PDFRenderer.java === RCS file: /home/cvs/xml-fop/src/org/apache/fop/render/pdf/PDFRenderer.java,v retrieving revision 1.91.2.11 retrieving revision 1.91.2.12 diff -u -r1.91.2.11 -r1.91.2.12 --- PDFRenderer.java 7 Feb 2003 00:10:46 - 1.91.2.11 +++ PDFRenderer.java 16 Feb 2003 12:42:10 - 1.91.2.12 @@ -550,12 +550,12 @@ if (!at.isIdentity()) { double[] vals = new double[6]; at.getMatrix(vals); -currentStream.add(PDFNumber.doubleOut(vals[0]) + -+ PDFNumber.doubleOut(vals[1]) + -+ PDFNumber.doubleOut(vals[2]) + -+ PDFNumber.doubleOut(vals[3]) + -+ PDFNumber.doubleOut(vals[4]) + -+ PDFNumber.doubleOut(vals[5]) + cm\n); +currentStream.add(PDFNumber.doubleOut(vals[0], 8) + ++ PDFNumber.doubleOut(vals[1], 8) + ++ PDFNumber.doubleOut(vals[2], 8) + ++ PDFNumber.doubleOut(vals[3], 8) + ++ PDFNumber.doubleOut(vals[4], 8) + ++ PDFNumber.doubleOut(vals[5], 8) + cm\n); } PDFGraphics2D graphics = new PDFGraphics2D(true, fs, pdfDoc, - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
cvs commit: xml-fop/src/org/apache/fop/render/pdf PDFRenderer.java
jeremias2003/01/27 01:20:09 Modified:src/org/apache/fop/render/pdf PDFRenderer.java Log: Make graphics state save/restore and text object begin/end into methods so code similarities between PS and PDF wil become more apparent. Revision ChangesPath 1.135 +64 -40xml-fop/src/org/apache/fop/render/pdf/PDFRenderer.java Index: PDFRenderer.java === RCS file: /home/cvs/xml-fop/src/org/apache/fop/render/pdf/PDFRenderer.java,v retrieving revision 1.134 retrieving revision 1.135 diff -u -r1.134 -r1.135 --- PDFRenderer.java 8 Jan 2003 14:02:47 - 1.134 +++ PDFRenderer.java 27 Jan 2003 09:20:09 - 1.135 @@ -318,7 +318,27 @@ renderOutline(outline.getSubData(i), pdfOutline); } } - + +/** Saves the graphics state of the rendering engine. */ +protected void saveGraphicsState() { +currentStream.add(q\n); +} + +/** Restores the last graphics state of the rendering engine. */ +protected void restoreGraphicsState() { +currentStream.add(Q\n); +} + +/** Indicates the beginning of a text object. */ +protected void beginTextObject() { +currentStream.add(BT\n); +} + +/** Indicates the end of a text object. */ +protected void endTextObject() { +currentStream.add(ET\n); +} + /** * Start the next page sequence. * For the pdf renderer there is no concept of page sequences @@ -415,16 +435,16 @@ currentState.setTransform( new AffineTransform(CTMHelper.toPDFArray(ctm))); -currentStream.add(q\n); +saveGraphicsState(); // multiply with current CTM currentStream.add(CTMHelper.toPDFString(ctm) + cm\n); // Set clip? -currentStream.add(BT\n); +beginTextObject(); } protected void endVParea() { -currentStream.add(ET\n); -currentStream.add(Q\n); +endTextObject(); +restoreGraphicsState(); currentState.pop(); } @@ -441,8 +461,10 @@ Rectangle2D viewArea = region.getViewArea(); float width = (float)(viewArea.getWidth() / 1000f); float height = (float)(viewArea.getHeight() / 1000f); +/* Trait.Background back; back = (Trait.Background)region.getTrait(Trait.BACKGROUND); +*/ drawBackAndBorders(region, startx, starty, width, height); } @@ -481,8 +503,8 @@ if(back != null) { started = true; closeText(); -currentStream.add(ET\n); -//currentStream.add(q\n); +endTextObject(); +//saveGraphicsState(); if (back.color != null) { updateColor(back.color, true, null); @@ -516,8 +538,8 @@ if(!started) { started = true; closeText(); -currentStream.add(ET\n); -//currentStream.add(q\n); +endTextObject(); +//saveGraphicsState(); } float bwidth = bps.width / 1000f; @@ -533,8 +555,8 @@ if(!started) { started = true; closeText(); -currentStream.add(ET\n); -//currentStream.add(q\n); +endTextObject(); +//saveGraphicsState(); } float bwidth = bps.width / 1000f; @@ -551,8 +573,8 @@ if(!started) { started = true; closeText(); -currentStream.add(ET\n); -//currentStream.add(q\n); +endTextObject(); +//saveGraphicsState(); } float bwidth = bps.width / 1000f; @@ -569,8 +591,8 @@ if(!started) { started = true; closeText(); -currentStream.add(ET\n); -//currentStream.add(q\n); +endTextObject(); +//saveGraphicsState(); } float bwidth = bps.width / 1000f; @@ -579,8 +601,8 @@ drawLine(sx - bwidth / 2, starty, sx - bwidth / 2, endy); } if(started) { -//currentStream.add(Q\n); -currentStream.add(BT\n); +//restoreGraphicsState(); +beginTextObject(); // font last set out of scope in text section currentFontName = ; } @@ -616,10 +638,10 @@ currentBPPosition = 0; closeText(); -currentStream.add(ET\n); +
cvs commit: xml-fop/src/org/apache/fop/render/pdf PDFRenderer.java
chrisg 2003/01/08 17:25:41 Modified:src/org/apache/fop/render/pdf Tag: fop-0_20_2-maintain PDFRenderer.java Log: (possible) fix for linux alpha jre (bug #13586) Revision ChangesPath No revision No revision 1.91.2.10 +2 -2 xml-fop/src/org/apache/fop/render/pdf/PDFRenderer.java Index: PDFRenderer.java === RCS file: /home/cvs/xml-fop/src/org/apache/fop/render/pdf/PDFRenderer.java,v retrieving revision 1.91.2.9 retrieving revision 1.91.2.10 diff -u -r1.91.2.9 -r1.91.2.10 --- PDFRenderer.java 8 Nov 2002 10:25:28 - 1.91.2.9 +++ PDFRenderer.java 9 Jan 2003 01:25:41 - 1.91.2.10 @@ -88,7 +88,7 @@ PDFColor currentColor; -float currentLetterSpacing = Float.NaN; +float currentLetterSpacing = Float.MAX_VALUE; /** * true if a TJ command is left to be written - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
cvs commit: xml-fop/src/org/apache/fop/render/pdf PDFRenderer.java
keiron 2002/12/18 06:50:35 Modified:src/org/apache/fop/render/pdf PDFRenderer.java Log: clear data when stopping renderer Revision ChangesPath 1.133 +13 -3 xml-fop/src/org/apache/fop/render/pdf/PDFRenderer.java Index: PDFRenderer.java === RCS file: /home/cvs/xml-fop/src/org/apache/fop/render/pdf/PDFRenderer.java,v retrieving revision 1.132 retrieving revision 1.133 diff -u -r1.132 -r1.133 --- PDFRenderer.java 29 Nov 2002 23:18:57 - 1.132 +++ PDFRenderer.java 18 Dec 2002 14:50:35 - 1.133 @@ -145,8 +145,6 @@ // drawing state protected PDFState currentState = null; -protected PDFColor currentFillColor = new PDFColor(255, 255, 255); -protected PDFColor currentStrokeColor = new PDFColor(0, 0, 0); protected String currentFontName = ; protected int currentFontSize = 0; protected int pageHeight; @@ -266,6 +264,18 @@ this.pdfDoc = null; ostream = null; + +pages = null; + +pageReferences.clear(); +pvReferences.clear(); +pdfResources = null; +currentStream = null; +currentContext = null; +currentPage = null; +currentState = null; +currentFontName = ; +wordAreaPDF = new StringBuffer(); } public boolean supportsOutOfOrder() { - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
cvs commit: xml-fop/src/org/apache/fop/render/pdf PDFRenderer.java
keiron 2002/11/22 03:49:26 Modified:src/org/apache/fop/render/pdf PDFRenderer.java Log: some minor optimisation: only close text or update colour when necessary Revision ChangesPath 1.131 +49 -34xml-fop/src/org/apache/fop/render/pdf/PDFRenderer.java Index: PDFRenderer.java === RCS file: /home/cvs/xml-fop/src/org/apache/fop/render/pdf/PDFRenderer.java,v retrieving revision 1.130 retrieving revision 1.131 diff -u -r1.130 -r1.131 --- PDFRenderer.java 20 Nov 2002 07:51:35 - 1.130 +++ PDFRenderer.java 22 Nov 2002 11:49:26 - 1.131 @@ -64,6 +64,7 @@ // Java import java.io.IOException; import java.io.OutputStream; +import java.awt.Color; import java.awt.geom.Rectangle2D; import java.awt.geom.AffineTransform; import java.util.HashMap; @@ -144,7 +145,8 @@ // drawing state protected PDFState currentState = null; -protected PDFColor currentColor; +protected PDFColor currentFillColor = new PDFColor(255, 255, 255); +protected PDFColor currentStrokeColor = new PDFColor(0, 0, 0); protected String currentFontName = ; protected int currentFontSize = 0; protected int pageHeight; @@ -464,15 +466,14 @@ protected void drawBackAndBorders(Area block, float startx, float starty, float width, float height) { // draw background then border -closeText(); - boolean started = false; Trait.Background back; back = (Trait.Background)block.getTrait(Trait.BACKGROUND); if(back != null) { started = true; +closeText(); currentStream.add(ET\n); -currentStream.add(q\n); +//currentStream.add(q\n); if (back.color != null) { updateColor(back.color, true, null); @@ -505,14 +506,16 @@ if(!started) { started = true; +closeText(); currentStream.add(ET\n); -currentStream.add(q\n); +//currentStream.add(q\n); } +float bwidth = bps.width / 1000f; updateColor(bps.color, false, null); -currentStream.add(bps.width / 1000f + w\n); +currentStream.add(bwidth + w\n); -drawLine(startx, starty, endx, starty); +drawLine(startx, starty + bwidth / 2, endx, starty + bwidth / 2); } bps = (BorderProps)block.getTrait(Trait.BORDER_START); if(bps != null) { @@ -520,14 +523,16 @@ if(!started) { started = true; +closeText(); currentStream.add(ET\n); -currentStream.add(q\n); +//currentStream.add(q\n); } +float bwidth = bps.width / 1000f; updateColor(bps.color, false, null); -currentStream.add(bps.width / 1000f + w\n); +currentStream.add(bwidth + w\n); -drawLine(startx, starty, startx, endy); +drawLine(startx + bwidth / 2, starty, startx + bwidth / 2, endy); } bps = (BorderProps)block.getTrait(Trait.BORDER_AFTER); if(bps != null) { @@ -536,14 +541,16 @@ if(!started) { started = true; +closeText(); currentStream.add(ET\n); -currentStream.add(q\n); +//currentStream.add(q\n); } +float bwidth = bps.width / 1000f; updateColor(bps.color, false, null); -currentStream.add(bps.width / 1000f + w\n); +currentStream.add(bwidth + w\n); -drawLine(startx, sy, endx, sy); +drawLine(startx, sy - bwidth / 2, endx, sy - bwidth / 2); } bps = (BorderProps)block.getTrait(Trait.BORDER_END); if(bps != null) { @@ -552,16 +559,18 @@ if(!started) { started = true; +closeText(); currentStream.add(ET\n); -currentStream.add(q\n); +//currentStream.add(q\n); } +float bwidth = bps.width / 1000f; updateColor(bps.color, false, null); -currentStream.add(bps.width / 1000f + w\n); -drawLine(sx, starty, sx, endy); +currentStream.add(bwidth + w\n); +drawLine(sx - bwidth / 2, starty, sx - bwidth / 2, endy); } if(started) { -currentStream.add(Q\n); +//currentStream.add(Q\n); currentStream.add(BT\n); // font last set out of scope in text section
cvs commit: xml-fop/src/org/apache/fop/render/pdf PDFRenderer.java
keiron 2002/11/19 23:51:35 Modified:src/org/apache/fop/pdf PDFDocument.java PDFInfo.java src/org/apache/fop/render AbstractRenderer.java Renderer.java src/org/apache/fop/render/pdf PDFRenderer.java Log: enable setting creator Revision ChangesPath 1.58 +10 -1 xml-fop/src/org/apache/fop/pdf/PDFDocument.java Index: PDFDocument.java === RCS file: /home/cvs/xml-fop/src/org/apache/fop/pdf/PDFDocument.java,v retrieving revision 1.57 retrieving revision 1.58 diff -u -r1.57 -r1.58 --- PDFDocument.java 11 Nov 2002 08:50:50 - 1.57 +++ PDFDocument.java 20 Nov 2002 07:51:34 - 1.58 @@ -193,6 +193,15 @@ } /** + * set the creator of the document + * + * @param creator string indicating application creating the document + */ +public void setCreator(String creator) { +this.info.setCreator(creator); +} + +/** * Set the filter map to use for filters in this document. * * @param map the map of filter lists for each stream type 1.10 +14 -1 xml-fop/src/org/apache/fop/pdf/PDFInfo.java Index: PDFInfo.java === RCS file: /home/cvs/xml-fop/src/org/apache/fop/pdf/PDFInfo.java,v retrieving revision 1.9 retrieving revision 1.10 diff -u -r1.9 -r1.10 --- PDFInfo.java 25 Oct 2002 09:29:46 - 1.9 +++ PDFInfo.java 20 Nov 2002 07:51:35 - 1.10 @@ -47,6 +47,15 @@ this.producer = producer; } +/** + * set the creator string + * + * @param creator the document creator + */ +public void setCreator(String creator) { +this.creator = creator; +} + public void setTitle(String t) { this.title = t; } @@ -82,6 +91,10 @@ } if (keywords != null) { p += /Keywords ( + this.keywords + )\n; +} + +if (creator != null) { +p += /Creator ( + this.creator + )\n; } p += /Producer ( + this.producer + )\n; 1.29 +8 -1 xml-fop/src/org/apache/fop/render/AbstractRenderer.java Index: AbstractRenderer.java === RCS file: /home/cvs/xml-fop/src/org/apache/fop/render/AbstractRenderer.java,v retrieving revision 1.28 retrieving revision 1.29 diff -u -r1.28 -r1.29 --- AbstractRenderer.java 6 Nov 2002 15:36:29 - 1.28 +++ AbstractRenderer.java 20 Nov 2002 07:51:35 - 1.29 @@ -95,6 +95,13 @@ */ protected int containingIPPosition = 0; +/** @see org.apache.fop.render.Renderer */ +public void setProducer(String producer) { +} + +/** @see org.apache.fop.render.Renderer */ +public void setCreator(String creator) { +} /** @see org.apache.fop.render.Renderer */ public void setUserAgent(FOUserAgent agent) { 1.29 +15 -1 xml-fop/src/org/apache/fop/render/Renderer.java Index: Renderer.java === RCS file: /home/cvs/xml-fop/src/org/apache/fop/render/Renderer.java,v retrieving revision 1.28 retrieving revision 1.29 diff -u -r1.28 -r1.29 --- Renderer.java 9 Sep 2002 10:54:52 - 1.28 +++ Renderer.java 20 Nov 2002 07:51:35 - 1.29 @@ -47,6 +47,9 @@ /** * Initiates the rendering phase. + * This must only be called once for a rendering. If + * stopRenderer is called then this may be called again + * for a new document rendering. * * @param outputStream The OutputStream to use for output * @exception IOException If an I/O error occurs @@ -56,6 +59,8 @@ /** * Signals the end of the rendering phase. + * The renderer should reset to an initial state and dispose of + * any resources for the completed rendering. * * @exception IOException If an I/O error occurs */ @@ -91,6 +96,15 @@ * embedded in the generated file. */ void setProducer(String producer); + +/** + * 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); /** * Reports if out of order rendering is supported. p 1.130 +16 -4 xml-fop/src/org/apache/fop/render/pdf/PDFRenderer.java Index: PDFRenderer.java
cvs commit: xml-fop/src/org/apache/fop/render/pdf PDFRenderer.java
keiron 2002/11/06 07:36:29 Modified:src/org/apache/fop/fo/pagination Region.java RegionBody.java src/org/apache/fop/layoutmgr AbstractLayoutManager.java src/org/apache/fop/render AbstractRenderer.java src/org/apache/fop/render/pdf PDFRenderer.java Log: background and borders for regions Revision ChangesPath 1.13 +33 -14xml-fop/src/org/apache/fop/fo/pagination/Region.java Index: Region.java === RCS file: /home/cvs/xml-fop/src/org/apache/fop/fo/pagination/Region.java,v retrieving revision 1.12 retrieving revision 1.13 diff -u -r1.12 -r1.13 --- Region.java 25 Oct 2002 09:29:43 - 1.12 +++ Region.java 6 Nov 2002 15:36:28 - 1.13 @@ -22,6 +22,7 @@ import org.apache.fop.area.CTM; import org.apache.fop.area.RegionViewport; import org.apache.fop.area.RegionReference; +import org.apache.fop.layoutmgr.AbstractLayoutManager; import org.xml.sax.Attributes; @@ -82,9 +83,29 @@ Rectangle2D absRegionRect = pageCTM.transform(relRegionRect); // Get the region viewport rectangle in absolute coords by // transforming it using the page CTM -return new RegionViewport(absRegionRect); +RegionViewport rv = new RegionViewport(absRegionRect); +setRegionViewportTraits(rv); +return rv; } +/** + * Set the region viewport traits. + * The viewport has the border, background and + * clipping overflow traits. + * + * @param r the region viewport + */ +protected void setRegionViewportTraits(RegionViewport r) { +// Common Border, Padding, and Background Properties +BorderAndPadding bap = propMgr.getBorderAndPadding(); +BackgroundProps bProps = propMgr.getBackgroundProps(); +AbstractLayoutManager.addBorders(r, bap); +AbstractLayoutManager.addBackground(r, bProps); + +// this.properties.get(clip); +// this.properties.get(display-align); +this.overflow = this.properties.get(overflow).getEnum(); +} protected abstract Rectangle getViewportRectangle(FODimension pageRefRect); @@ -96,23 +117,21 @@ */ public RegionReference makeRegionReferenceArea(Rectangle2D absRegVPRect) { RegionReference r = new RegionReference(getRegionAreaClass()); -setRegionTraits(r, absRegVPRect); +setRegionPosition(r, absRegVPRect); return r; } -protected void setRegionTraits(RegionReference r, Rectangle2D absRegVPRect) { -// Common Border, Padding, and Background Properties -BorderAndPadding bap = propMgr.getBorderAndPadding(); -BackgroundProps bProps = propMgr.getBackgroundProps(); -/*backgroundColor = properties.get(background-color).getColorType();*/ - -// this.properties.get(clip); -// this.properties.get(display-align); -this.overflow = this.properties.get(overflow).getEnum(); +/** + * Set the region position inside the region viewport. + * This sets the trasnform that is used to place the contents of + * the region. + * + * @param r the region reference area + * @param absRegVPRect the rectangle to place the region contents + */ +protected void setRegionPosition(RegionReference r, Rectangle2D absRegVPRect) { FODimension reldims = new FODimension(0,0); r.setCTM(propMgr.getCTMandRelDims(absRegVPRect, reldims)); - -//r.setBackground(bProps); } /** 1.19 +2 -9 xml-fop/src/org/apache/fop/fo/pagination/RegionBody.java Index: RegionBody.java === RCS file: /home/cvs/xml-fop/src/org/apache/fop/fo/pagination/RegionBody.java,v retrieving revision 1.18 retrieving revision 1.19 diff -u -r1.18 -r1.19 --- RegionBody.java 7 Aug 2002 16:54:57 - 1.18 +++ RegionBody.java 6 Nov 2002 15:36:28 - 1.19 @@ -65,17 +65,10 @@ return ((prop != null)? prop.getLength().mvalue() : 0); } -protected void setRegionTraits(RegionReference r, Rectangle2D absRegVPRect) { -super.setRegionTraits(r, absRegVPRect); - -// r.setBackgroundColor(backgroundColor); -} - protected String getDefaultRegionName() { return xsl-region-body; } - public String getRegionClass() { return Region.BODY; } @@ -90,7 +83,7 @@ public RegionReference makeRegionReferenceArea(Rectangle2D absRegVPRect) { // Should set some column stuff here I think, or put it elsewhere BodyRegion body = new BodyRegion(); -setRegionTraits(body, absRegVPRect); +setRegionPosition(body,
cvs commit: xml-fop/src/org/apache/fop/render/pdf PDFRenderer.java
keiron 2002/11/05 03:09:55 Modified:src/org/apache/fop/render/pdf PDFRenderer.java Log: handle unresolved pdf bookmark fix for font not set after drawing borders Revision ChangesPath 1.127 +17 -13xml-fop/src/org/apache/fop/render/pdf/PDFRenderer.java Index: PDFRenderer.java === RCS file: /home/cvs/xml-fop/src/org/apache/fop/render/pdf/PDFRenderer.java,v retrieving revision 1.126 retrieving revision 1.127 diff -u -r1.126 -r1.127 --- PDFRenderer.java 3 Nov 2002 16:24:22 - 1.126 +++ PDFRenderer.java 5 Nov 2002 11:09:55 - 1.127 @@ -275,17 +275,19 @@ PDFOutline outlineRoot = pdfDoc.getOutlineRoot(); PDFOutline pdfOutline = null; PageViewport pv = outline.getPage(); -Rectangle2D bounds = pv.getViewArea(); -double h = bounds.getHeight(); -float yoffset = (float)h / 1000f; -String intDest = (String)pageReferences.get(pv.getKey()); -if (parentOutline == null) { -pdfOutline = pdfDoc.makeOutline(outlineRoot, -outline.getLabel(), intDest, yoffset); -} else { -PDFOutline pdfParentOutline = parentOutline; -pdfOutline = pdfDoc.makeOutline(pdfParentOutline, -outline.getLabel(), intDest, yoffset); +if(pv != null) { +Rectangle2D bounds = pv.getViewArea(); +double h = bounds.getHeight(); +float yoffset = (float)h / 1000f; +String intDest = (String)pageReferences.get(pv.getKey()); +if (parentOutline == null) { +pdfOutline = pdfDoc.makeOutline(outlineRoot, +outline.getLabel(), intDest, yoffset); +} else { +PDFOutline pdfParentOutline = parentOutline; +pdfOutline = pdfDoc.makeOutline(pdfParentOutline, +outline.getLabel(), intDest, yoffset); +} } for (int i = 0; i outline.getCount(); i++) { @@ -418,7 +420,7 @@ * This draws the background and border traits for an area given * the position. * - * @param block the area to get teh traits from + * @param block the area to get the traits from * @param startx the start x position * @param starty the start y position * @param width the width of the area @@ -526,6 +528,8 @@ if(started) { currentStream.add(Q\n); currentStream.add(BT\n); +// font last set out of scope in text section +currentFontName = ; } } - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
cvs commit: xml-fop/src/org/apache/fop/render/pdf PDFRenderer.java
keiron 2002/09/18 07:12:42 Modified:src/org/apache/fop/render AbstractRenderer.java src/org/apache/fop/render/pdf PDFRenderer.java Log: updated for area tree and prepare for block border and back Revision ChangesPath 1.25 +24 -6 xml-fop/src/org/apache/fop/render/AbstractRenderer.java Index: AbstractRenderer.java === RCS file: /home/cvs/xml-fop/src/org/apache/fop/render/AbstractRenderer.java,v retrieving revision 1.24 retrieving revision 1.25 diff -u -r1.24 -r1.25 --- AbstractRenderer.java 13 Sep 2002 08:21:55 - 1.24 +++ AbstractRenderer.java 18 Sep 2002 14:12:42 - 1.25 @@ -278,7 +278,7 @@ * @param bf The before float area */ protected void renderBeforeFloat(BeforeFloat bf) { -List blocks = bf.getBlocks(); +List blocks = bf.getChildAreas(); if (blocks != null) { renderBlocks(blocks); Block sep = bf.getSeparator(); @@ -294,7 +294,7 @@ * @param footnote The footnote */ protected void renderFootnote(Footnote footnote) { -List blocks = footnote.getBlocks(); +List blocks = footnote.getChildAreas(); if (blocks != null) { Block sep = footnote.getSeparator(); if (sep != null) { @@ -343,7 +343,7 @@ */ protected void renderFlow(Flow flow) { // the normal flow reference area contains stacked blocks -List blocks = flow.getBlocks(); +List blocks = flow.getChildAreas(); renderBlocks(blocks); } @@ -356,6 +356,7 @@ protected void renderBlock(Block block) { List children = block.getChildAreas(); if (children == null) { +handleBlockTraits(block); // simply move position currentBPPosition += block.getHeight(); } else if (block instanceof BlockViewport) { @@ -366,8 +367,10 @@ int saveBP = currentBPPosition; if (block.getPositioning() == Block.ABSOLUTE) { -currentIPPosition += block.getXOffset(); -currentBPPosition += block.getYOffset(); +currentIPPosition = containingIPPosition + block.getXOffset(); +currentBPPosition = containingBPPosition + block.getYOffset(); + +handleBlockTraits(block); renderBlocks(children); @@ -378,6 +381,8 @@ currentIPPosition += block.getXOffset(); currentBPPosition += block.getYOffset(); +handleBlockTraits(block); + renderBlocks(children); // stacked and relative blocks effect stacking @@ -388,6 +393,18 @@ } /** + * Handle block traits. + * This method is called when the correct ip and bp posiiton is + * set. This should be overridden to draw border and background + * traits for the block area. + * + * @param block the block area + */ +protected void handleBlockTraits(Block block) { +// draw border and background +} + +/** * Renders a block viewport. * * @param bvThe block viewport @@ -405,6 +422,7 @@ currentBPPosition = 0; startVParea(ctm); +handleBlockTraits(bv); renderBlocks(children); endVParea(); 1.124 +49 -14xml-fop/src/org/apache/fop/render/pdf/PDFRenderer.java Index: PDFRenderer.java === RCS file: /home/cvs/xml-fop/src/org/apache/fop/render/pdf/PDFRenderer.java,v retrieving revision 1.123 retrieving revision 1.124 diff -u -r1.123 -r1.124 --- PDFRenderer.java 13 Sep 2002 08:21:55 - 1.123 +++ PDFRenderer.java 18 Sep 2002 14:12:42 - 1.124 @@ -17,7 +17,6 @@ import org.apache.fop.apps.FOPException; import org.apache.fop.apps.Version; import org.apache.fop.fo.properties.RuleStyle; -//import org.apache.fop.datatypes.*; import org.apache.fop.pdf.PDFStream; import org.apache.fop.pdf.PDFDocument; import org.apache.fop.pdf.PDFInfo; @@ -50,6 +49,7 @@ import org.apache.fop.area.inline.InlineParent; import org.apache.fop.layout.FontState; import org.apache.fop.layout.FontMetric; +import org.apache.fop.traits.BorderProps; import org.w3c.dom.Document; @@ -117,47 +117,47 @@ /** * the current stream to add PDF commands to */ -PDFStream currentStream; +protected PDFStream currentStream; /** * the current annotation list to add annotations to */ -PDFAnnotList currentAnnotList; +protected PDFAnnotList currentAnnotList;
cvs commit: xml-fop/src/org/apache/fop/render/pdf PDFRenderer.java
keiron 2002/08/19 04:54:53 Modified:src/org/apache/fop/image AbstractFopImage.java EPSImage.java JpegImage.java XMLImage.java src/org/apache/fop/render/pdf PDFRenderer.java Log: load original data properly Revision ChangesPath 1.12 +11 -1 xml-fop/src/org/apache/fop/image/AbstractFopImage.java Index: AbstractFopImage.java === RCS file: /home/cvs/xml-fop/src/org/apache/fop/image/AbstractFopImage.java,v retrieving revision 1.11 retrieving revision 1.12 diff -u -r1.11 -r1.12 --- AbstractFopImage.java 2 Aug 2002 08:47:02 - 1.11 +++ AbstractFopImage.java 19 Aug 2002 11:54:52 - 1.12 @@ -126,6 +126,12 @@ loaded = loaded | BITMAP; } } +if(((type ORIGINAL_DATA) != 0) ((loaded ORIGINAL_DATA) == 0)) { +success = success loadOriginalData(ua); +if(success) { +loaded = loaded | ORIGINAL_DATA; +} +} return success; } @@ -134,6 +140,10 @@ } protected boolean loadBitmap(FOUserAgent ua) { +return false; +} + +protected boolean loadOriginalData(FOUserAgent ua) { return false; } 1.7 +2 -1 xml-fop/src/org/apache/fop/image/EPSImage.java Index: EPSImage.java === RCS file: /home/cvs/xml-fop/src/org/apache/fop/image/EPSImage.java,v retrieving revision 1.6 retrieving revision 1.7 diff -u -r1.6 -r1.7 --- EPSImage.java 27 Jun 2002 11:45:54 - 1.6 +++ EPSImage.java 19 Aug 2002 11:54:53 - 1.7 @@ -71,6 +71,7 @@ bbox[2] = (int) epsData.bbox[2]; bbox[3] = (int) epsData.bbox[3]; +loaded = loaded | ORIGINAL_DATA; } } 1.6 +2 -2 xml-fop/src/org/apache/fop/image/JpegImage.java Index: JpegImage.java === RCS file: /home/cvs/xml-fop/src/org/apache/fop/image/JpegImage.java,v retrieving revision 1.5 retrieving revision 1.6 diff -u -r1.5 -r1.6 --- JpegImage.java27 Jun 2002 11:45:54 - 1.5 +++ JpegImage.java19 Aug 2002 11:54:53 - 1.6 @@ -39,7 +39,7 @@ super(href, imgReader); } -protected boolean loadBitmap(FOUserAgent ua) { +protected boolean loadOriginalData(FOUserAgent ua) { ByteArrayOutputStream baos = new ByteArrayOutputStream(); ByteArrayOutputStream iccStream = new ByteArrayOutputStream(); InputStream inStream; 1.2 +2 -1 xml-fop/src/org/apache/fop/image/XMLImage.java Index: XMLImage.java === RCS file: /home/cvs/xml-fop/src/org/apache/fop/image/XMLImage.java,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- XMLImage.java 8 Mar 2002 11:00:19 - 1.1 +++ XMLImage.java 19 Aug 2002 11:54:53 - 1.2 @@ -29,6 +29,7 @@ super(href, imgInfo); if(imgInfo.data instanceof Document) { doc = (Document)imgInfo.data; +loaded = loaded | ORIGINAL_DATA; } ns = imgInfo.str; } 1.115 +2 -2 xml-fop/src/org/apache/fop/render/pdf/PDFRenderer.java Index: PDFRenderer.java === RCS file: /home/cvs/xml-fop/src/org/apache/fop/render/pdf/PDFRenderer.java,v retrieving revision 1.114 retrieving revision 1.115 diff -u -r1.114 -r1.115 --- PDFRenderer.java 19 Aug 2002 09:57:47 - 1.114 +++ PDFRenderer.java 19 Aug 2002 11:54:53 - 1.115 @@ -516,7 +516,7 @@ FopPDFImage pdfimage = new FopPDFImage(fopimage, url); int xobj = pdfDoc.addImage(null, pdfimage).getXNumber(); fact.releaseImage(url, userAgent); -} else if (image/jpg.equals(mime)) { +} else if (image/jpeg.equals(mime)) { if (!fopimage.load(FopImage.ORIGINAL_DATA, userAgent)) { return; } - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
Re: cvs commit: xml-fop/src/org/apache/fop/render/pdf PDFRenderer.java
[EMAIL PROTECTED] wrote: protected void renderRegion(RegionReference region) { ... +currentFontName = ; Wouldn't it be better to do this each time after writing a BT to the PDF output? (In startVParea(), renderViewport() and renderLeader()). J.Pietschmann - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, email: [EMAIL PROTECTED]
cvs commit: xml-fop/src/org/apache/fop/render/pdf PDFRenderer.java
jeremias2002/06/26 13:36:53 Modified:src/org/apache/fop/render/pdf Tag: fop-0_20_2-maintain PDFRenderer.java Log: Fix: Allow for fractional font sizes Submitted by: Björn Lütkemeier Revision ChangesPath No revision No revision 1.91.2.5 +2 -2 xml-fop/src/org/apache/fop/render/pdf/PDFRenderer.java Index: PDFRenderer.java === RCS file: /home/cvs/xml-fop/src/org/apache/fop/render/pdf/PDFRenderer.java,v retrieving revision 1.91.2.4 retrieving revision 1.91.2.5 diff -u -r1.91.2.4 -r1.91.2.5 --- PDFRenderer.java 7 Jun 2002 20:12:35 - 1.91.2.4 +++ PDFRenderer.java 26 Jun 2002 20:36:52 - 1.91.2.5 @@ -622,7 +622,7 @@ this.currentFontName = name; this.currentFontSize = size; -pdf = pdf.append(/ + name + + (size / 1000) + Tf\n); +pdf = pdf.append(/ + name + + ((float)size / 1000) + Tf\n); } //Do letter spacing (must be outside of [..] TJ) - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
cvs commit: xml-fop/src/org/apache/fop/render/pdf PDFRenderer.java
jeremias2002/06/07 13:12:35 Modified:src/org/apache/fop/render/pdf Tag: fop-0_20_2-maintain PDFRenderer.java Log: Removed Tc that were inserted in [...] TJ commands. (Bug 9054) Instead, fixed letter-spacing. Completed javadocs Pretty-print using JRefactory (I hope I got the settings right. Otherwise, please tell me.) Revision ChangesPath No revision No revision 1.91.2.4 +324 -276 xml-fop/src/org/apache/fop/render/pdf/PDFRenderer.java Index: PDFRenderer.java === RCS file: /home/cvs/xml-fop/src/org/apache/fop/render/pdf/PDFRenderer.java,v retrieving revision 1.91.2.3 retrieving revision 1.91.2.4 diff -u -r1.91.2.3 -r1.91.2.4 --- PDFRenderer.java 8 May 2002 15:18:48 - 1.91.2.3 +++ PDFRenderer.java 7 Jun 2002 20:12:35 - 1.91.2.4 @@ -1,10 +1,9 @@ /* - * $Id: PDFRenderer.java,v 1.91.2.3 2002/05/08 15:18:48 chrisg Exp $ + * $Id: PDFRenderer.java,v 1.91.2.4 2002/06/07 20:12:35 jeremias Exp $ * Copyright (C) 2001 The Apache Software Foundation. All rights reserved. * For details on use and redistribution please refer to the * LICENSE file included with these sources. */ - package org.apache.fop.render.pdf; // FOP @@ -49,16 +48,17 @@ import java.awt.Dimension; /** - * Renderer that renders areas to PDF + * p + * + * Renderer that renders areas to PDF./p p * - * Modified by Mark Lillywhite, [EMAIL PROTECTED] to use the - * new Renderer interface. The PDF renderer is by far the trickiest - * renderer and the best supported by FOP. It also required some - * reworking in the way that Pages, Catalogs and the Root object - * were written to the stream. The output document should now still - * be a 100% compatible PDF document, but hte order of the document - * writing is significantly different. See also the changes - * to PDFPage, PDFPages and PDFRoot. + * Modified by Mark Lillywhite, [EMAIL PROTECTED] to use the new Renderer + * interface. The PDF renderer is by far the trickiest renderer and the best + * supported by FOP. It also required some reworking in the way that Pages, + * Catalogs and the Root object were written to the stream. The output document + * should now still be a 100% compatible PDF document, but the order of the + * document writing is significantly different. See also the changes to + * PDFPage, PDFPages and PDFRoot./p */ public class PDFRenderer extends PrintRenderer { @@ -89,25 +89,27 @@ PDFColor currentColor; +float currentLetterSpacing = Float.NaN; + /** * true if a TJ command is left to be written */ boolean textOpen = false; /** - * the previous Y coordinate of the last word written. - * Used to decide if we can draw the next word on the same line. + * the previous Y coordinate of the last word written. Used to decide if we + * can draw the next word on the same line. */ int prevWordY = 0; /** - * the previous X coordinate of the last word written. - * used to calculate how much space between two words + * the previous X coordinate of the last word written. used to calculate + * how much space between two words */ int prevWordX = 0; /** - * The width of the previous word. Used to calculate space between + * The width of the previous word. Used to calculate space between */ int prevWordWidth = 0; @@ -132,6 +134,8 @@ /** * set up renderer options + * + * @param options Options for the renderer */ public void setOptions(Hashtable options) { this.options = options; @@ -140,19 +144,31 @@ /** * set the PDF document's producer * - * @param producer string indicating application producing PDF + * @param producer string indicating application producing PDF */ public void setProducer(String producer) { this.pdfDoc.setProducer(producer); } +/** + * Starts the renderer + * + * @param stream OutputStream to be written to + * @exception IOException In case of an IO problem + */ public void startRenderer(OutputStream stream) -throws IOException { +throws IOException { pdfDoc.outputHeader(stream); } +/** + * Called when the renderer has finished its work + * + * @param stream OutputStream to be written to + * @exception IOException In cas of an IO problem + */ public void stopRenderer(OutputStream stream) -throws IOException { +throws IOException { renderRootExtensions(extensions);
cvs commit: xml-fop/src/org/apache/fop/render/pdf PDFRenderer.java
klease 02/02/23 08:48:59 Modified:src/org/apache/fop/render AbstractRenderer.java src/org/apache/fop/render/pdf PDFRenderer.java Log: Take CTM into account for PDF rendering (small test) Revision ChangesPath 1.11 +12 -3 xml-fop/src/org/apache/fop/render/AbstractRenderer.java Index: AbstractRenderer.java === RCS file: /home/cvs/xml-fop/src/org/apache/fop/render/AbstractRenderer.java,v retrieving revision 1.10 retrieving revision 1.11 diff -u -r1.10 -r1.11 --- AbstractRenderer.java 8 Jan 2002 09:52:17 - 1.10 +++ AbstractRenderer.java 23 Feb 2002 16:48:59 - 1.11 @@ -1,5 +1,5 @@ /* - * $Id: AbstractRenderer.java,v 1.10 2002/01/08 09:52:17 keiron Exp $ + * $Id: AbstractRenderer.java,v 1.11 2002/02/23 16:48:59 klease Exp $ * Copyright (C) 2001 The Apache Software Foundation. All rights reserved. * For details on use and redistribution please refer to the * LICENSE file included with these sources. @@ -134,18 +134,27 @@ protected void renderRegionViewport(RegionViewport port) { if (port != null) { Rectangle2D view = port.getViewArea(); -currentBPPosition = (int) (view.getY() / 1000); -currentIPPosition = (int) (view.getX() / 1000); + // The CTM will transform coordinates relative to + // this region-reference area into page coords, so + // set origin for the region to 0,0. +currentBPPosition = 0; // (int) (view.getY() / 1000); +currentIPPosition = 0; // (int) (view.getX() / 1000); currentBlockIPPosition = currentIPPosition; RegionReference region = port.getRegion(); + startVParea(region.getCTM()); if (region.getRegionClass() == Region.BODY) { renderBodyRegion((BodyRegion) region); } else { renderRegion(region); } + endVParea(); } } + +protected void startVParea(CTM ctm) { } + +protected void endVParea() { } protected void renderRegion(RegionReference region) { List blocks = region.getBlocks(); 1.97 +36 -5 xml-fop/src/org/apache/fop/render/pdf/PDFRenderer.java Index: PDFRenderer.java === RCS file: /home/cvs/xml-fop/src/org/apache/fop/render/pdf/PDFRenderer.java,v retrieving revision 1.96 retrieving revision 1.97 diff -u -r1.96 -r1.97 --- PDFRenderer.java 11 Feb 2002 09:45:39 - 1.96 +++ PDFRenderer.java 23 Feb 2002 16:48:59 - 1.97 @@ -1,5 +1,5 @@ /* - * $Id: PDFRenderer.java,v 1.96 2002/02/11 09:45:39 keiron Exp $ + * $Id: PDFRenderer.java,v 1.97 2002/02/23 16:48:59 klease Exp $ * Copyright (C) 2001 The Apache Software Foundation. All rights reserved. * For details on use and redistribution please refer to the * LICENSE file included with these sources. @@ -204,18 +204,48 @@ pageReferences.put(page, currentPage.referencePDF()); } currentStream = this.pdfDoc.makeStream(); -currentStream.add(BT\n); + // Transform origin at top left to origin at bottom left + currentStream.add(1 0 0 -1 0 + + (int) Math.round(pageHeight / 1000) + cm\n); +//currentStream.add(BT\n); Page p = page.getPage(); renderPageAreas(p); -currentStream.add(ET\n); +//currentStream.add(ET\n); currentPage.setContents(currentStream); this.pdfDoc.addPage(currentPage); this.pdfDoc.output(ostream); } + +protected void startVParea(CTM ctm) { + // Set the given CTM in the graphics state + currentStream.add(q\n); + // multiply with current CTM + currentStream.add(ctm.toPDFctm() + cm\n); + // Set clip? +} + +protected void endVParea() { + currentStream.add(Q\n); +} + +protected void renderRegion(RegionReference region) { + // Draw a rectangle so we can see it! + // x=0,y=0,w=ipd,h=bpd + currentStream.add(BT\n); + super.renderRegion(region); + currentStream.add(ET\n); +} + + +protected void renderLineArea(LineArea line) { + super.renderLineArea(line); + closeText(); +} + public void renderCharacter(Character ch) { super.renderCharacter(ch); @@ -248,7 +278,8 @@ updateColor(true, pdf); int rx = currentBlockIPPosition; -int bl = pageHeight - currentBPPosition; +// int bl = pageHeight - currentBPPosition; +int bl = currentBPPosition; // Set letterSpacing //float ls =
cvs commit: xml-fop/src/org/apache/fop/render/pdf PDFRenderer.java
keiron 01/09/17 04:04:50 Modified:src/org/apache/fop/render AbstractRenderer.java PrintRenderer.java src/org/apache/fop/render/awt AWTRenderer.java src/org/apache/fop/render/pdf PDFRenderer.java Log: put a few common methods in the abstract renderer Revision ChangesPath 1.2 +80 -4 xml-fop/src/org/apache/fop/render/AbstractRenderer.java Index: AbstractRenderer.java === RCS file: /home/cvs/xml-fop/src/org/apache/fop/render/AbstractRenderer.java,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- AbstractRenderer.java 2001/08/21 06:18:55 1.1 +++ AbstractRenderer.java 2001/09/17 11:04:49 1.2 @@ -1,8 +1,8 @@ /* - * $Id: AbstractRenderer.java,v 1.1 2001/08/21 06:18:55 keiron Exp $ + * $Id: AbstractRenderer.java,v 1.2 2001/09/17 11:04:49 keiron Exp $ * Copyright (C) 2001 The Apache Software Foundation. All rights reserved. * For details on use and redistribution please refer to the - * LICENSE file included with these sources. + * LICENSE file included with these sources. */ package org.apache.fop.render; @@ -18,8 +18,6 @@ import org.apache.fop.datatypes.*; import org.apache.fop.render.pdf.FontSetup; -import org.apache.fop.svg.SVGArea; - import org.apache.log.Logger; // Java @@ -34,8 +32,86 @@ public abstract class AbstractRenderer implements Renderer { protected Logger log; +/** + * the current vertical position in millipoints from bottom + */ +protected int currentYPosition = 0; + +/** + * the current horizontal position in millipoints from left + */ +protected int currentXPosition = 0; + +/** + * the horizontal position of the current area container + */ +protected int currentAreaContainerXPosition = 0; + public void setLogger(Logger logger) { log = logger; } +public void renderSpanArea(SpanArea area) { +Enumeration e = area.getChildren().elements(); +while (e.hasMoreElements()) { +org.apache.fop.layout.Box b = +(org.apache.fop.layout.Box)e.nextElement(); +b.render(this);// column areas +} + +} + +protected abstract void doFrame(Area area); + +/** + * render block area + * + * @param area the block area to render + */ +public void renderBlockArea(BlockArea area) { +// KLease: Temporary test to fix block positioning +// Offset ypos by padding and border widths +this.currentYPosition -= (area.getPaddingTop() + + area.getBorderTopWidth()); +doFrame(area); +Enumeration e = area.getChildren().elements(); +while (e.hasMoreElements()) { +Box b = (Box)e.nextElement(); +b.render(this); +} +this.currentYPosition -= (area.getPaddingBottom() + + area.getBorderBottomWidth()); +} + +/** + * render line area + * + * @param area area to render + */ +public void renderLineArea(LineArea area) { +int rx = this.currentAreaContainerXPosition + area.getStartIndent(); +int ry = this.currentYPosition; +int w = area.getContentWidth(); +int h = area.getHeight(); + +this.currentYPosition -= area.getPlacementOffset(); +this.currentXPosition = rx; + +int bl = this.currentYPosition; + +Enumeration e = area.getChildren().elements(); +while (e.hasMoreElements()) { +Box b = (Box)e.nextElement(); +if (b instanceof InlineArea) { +InlineArea ia = (InlineArea)b; +this.currentYPosition = ry - ia.getYOffset(); +} else { +this.currentYPosition = ry - area.getPlacementOffset(); +} +b.render(this); +} + +this.currentYPosition = ry - h; +this.currentXPosition = rx; +} } 1.12 +16 -63xml-fop/src/org/apache/fop/render/PrintRenderer.java Index: PrintRenderer.java === RCS file: /home/cvs/xml-fop/src/org/apache/fop/render/PrintRenderer.java,v retrieving revision 1.11 retrieving revision 1.12 diff -u -r1.11 -r1.12 --- PrintRenderer.java2001/08/21 06:18:55 1.11 +++ PrintRenderer.java2001/09/17 11:04:49 1.12 @@ -1,5 +1,5 @@ /* - * $Id: PrintRenderer.java,v 1.11 2001/08/21 06:18:55 keiron Exp $ + * $Id: PrintRenderer.java,v 1.12 2001/09/17 11:04:49 keiron Exp $ * Copyright (C) 2001 The Apache Software Foundation. All rights
cvs commit: xml-fop/src/org/apache/fop/render/pdf PDFRenderer.java
keiron 01/08/22 23:14:33 Modified:src/org/apache/fop/render/pdf PDFRenderer.java Log: made the pdf renderer reusable (eg. how cocoon uses it) prevents it creating invalid documents frees up memory Revision ChangesPath 1.86 +10 -1 xml-fop/src/org/apache/fop/render/pdf/PDFRenderer.java Index: PDFRenderer.java === RCS file: /home/cvs/xml-fop/src/org/apache/fop/render/pdf/PDFRenderer.java,v retrieving revision 1.85 retrieving revision 1.86 diff -u -r1.85 -r1.86 --- PDFRenderer.java 2001/08/21 08:26:11 1.85 +++ PDFRenderer.java 2001/08/23 06:14:33 1.86 @@ -1,5 +1,5 @@ /* - * $Id: PDFRenderer.java,v 1.85 2001/08/21 08:26:11 keiron Exp $ + * $Id: PDFRenderer.java,v 1.86 2001/08/23 06:14:33 keiron Exp $ * Copyright (C) 2001 The Apache Software Foundation. All rights reserved. * For details on use and redistribution please refer to the * LICENSE file included with these sources. @@ -157,6 +157,15 @@ renderRootExtensions(extensions); FontSetup.addToResources(this.pdfDoc, fontInfo); pdfDoc.outputTrailer(stream); + +// this frees up memory and makes the renderer reusable +this.pdfDoc = new PDFDocument(); +this.pdfResources = null; +extensions = null; +currentStream = null; +currentAnnotList = null; +currentPage = null; +currentColor = null; } /** - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
cvs commit: xml-fop/src/org/apache/fop/render/pdf PDFRenderer.java
keiron 01/08/21 01:26:11 Modified:src/org/apache/fop/apps StreamRenderer.java src/org/apache/fop/extensions Outline.java src/org/apache/fop/fo FOTreeBuilder.java src/org/apache/fop/fo/pagination Root.java src/org/apache/fop/render/pdf PDFRenderer.java Log: put back bookmark extension - not complete Revision ChangesPath 1.5 +18 -0 xml-fop/src/org/apache/fop/apps/StreamRenderer.java Index: StreamRenderer.java === RCS file: /home/cvs/xml-fop/src/org/apache/fop/apps/StreamRenderer.java,v retrieving revision 1.4 retrieving revision 1.5 diff -u -r1.4 -r1.5 --- StreamRenderer.java 2001/08/20 11:19:22 1.4 +++ StreamRenderer.java 2001/08/21 08:26:11 1.5 @@ -82,6 +82,11 @@ */ private IDReferences idReferences = new IDReferences(); +/** + * The list of extensions. + */ +private Vector extensions = new Vector(); + private Logger log; public StreamRenderer(OutputStream outputStream, Renderer renderer) { @@ -97,6 +102,10 @@ return idReferences; } +public void addExtension(ExtensionObj ext) { +extensions.addElement(ext); +} + public void startRenderer() throws SAXException { pageCount = 0; @@ -168,6 +177,15 @@ throws SAXException { AreaTree a = new AreaTree(this); a.setFontInfo(fontInfo); + +for(Enumeration e = extensions.elements(); e.hasMoreElements(); ) { +ExtensionObj ext = (ExtensionObj)e.nextElement(); +try { +ext.format(a); +} catch (FOPException fope) { +throw new SAXException(fope); +} +} try { pageSequence.format(a); 1.4 +3 -4 xml-fop/src/org/apache/fop/extensions/Outline.java Index: Outline.java === RCS file: /home/cvs/xml-fop/src/org/apache/fop/extensions/Outline.java,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- Outline.java 2001/07/30 20:29:20 1.3 +++ Outline.java 2001/08/21 08:26:11 1.4 @@ -1,5 +1,5 @@ /* - * $Id: Outline.java,v 1.3 2001/07/30 20:29:20 tore Exp $ + * $Id: Outline.java,v 1.4 2001/08/21 08:26:11 keiron Exp $ * Copyright (C) 2001 The Apache Software Foundation. All rights reserved. * For details on use and redistribution please refer to the * LICENSE file included with these sources. @@ -11,7 +11,6 @@ import org.apache.fop.pdf.PDFGoTo; import org.apache.fop.pdf.PDFAction; import org.apache.fop.datatypes.IDReferences; -import org.apache.fop.messaging.MessageHandler; import java.util.*; @@ -53,11 +52,11 @@ _externalDestination = this.properties.get(external-destination).getString(); if (_externalDestination != null !_externalDestination.equals()) { -MessageHandler.errorln(WARNING: fox:outline external-destination not supported currently.); +log.warn(fox:outline external-destination not supported currently.); } if (_internalDestination == null || _internalDestination.equals()) { -MessageHandler.errorln(WARNING: fox:outline requires an internal-destination.); +log.warn(fox:outline requires an internal-destination.); } for (FONode node = getParent(); node != null; 1.26 +10 -4 xml-fop/src/org/apache/fop/fo/FOTreeBuilder.java Index: FOTreeBuilder.java === RCS file: /home/cvs/xml-fop/src/org/apache/fop/fo/FOTreeBuilder.java,v retrieving revision 1.25 retrieving revision 1.26 diff -u -r1.25 -r1.26 --- FOTreeBuilder.java2001/08/20 11:19:22 1.25 +++ FOTreeBuilder.java2001/08/21 08:26:11 1.26 @@ -1,5 +1,5 @@ /* - * $Id: FOTreeBuilder.java,v 1.25 2001/08/20 11:19:22 keiron Exp $ + * $Id: FOTreeBuilder.java,v 1.26 2001/08/21 08:26:11 keiron Exp $ * Copyright (C) 2001 The Apache Software Foundation. All rights reserved. * For details on use and redistribution please refer to the * LICENSE file included with these sources. @@ -14,6 +14,7 @@ import org.apache.fop.fo.pagination.Root; import org.apache.fop.system.BufferManager; import org.apache.fop.fo.pagination.PageSequence; +import org.apache.fop.extensions.ExtensionObj; import org.apache.log.Logger; @@ -159,8 +160,13 @@ // [EMAIL PROTECTED] - tell the stream renderer to render // this page-sequence // -if(currentFObj instanceof PageSequence) +if(currentFObj instanceof PageSequence) {
cvs commit: xml-fop/src/org/apache/fop/render/pdf PDFRenderer.java
gears 01/08/14 10:56:40 Modified:src/org/apache/fop/render/pdf PDFRenderer.java Log: This fixes A4 letter size printing from Jeremias Maerki. Revision ChangesPath 1.83 +5 -3 xml-fop/src/org/apache/fop/render/pdf/PDFRenderer.java Index: PDFRenderer.java === RCS file: /home/cvs/xml-fop/src/org/apache/fop/render/pdf/PDFRenderer.java,v retrieving revision 1.82 retrieving revision 1.83 diff -u -r1.82 -r1.83 --- PDFRenderer.java 2001/08/14 14:50:30 1.82 +++ PDFRenderer.java 2001/08/14 17:56:40 1.83 @@ -1,5 +1,5 @@ /* - * $Id: PDFRenderer.java,v 1.82 2001/08/14 14:50:30 keiron Exp $ + * $Id: PDFRenderer.java,v 1.83 2001/08/14 17:56:40 gears Exp $ * Copyright (C) 2001 The Apache Software Foundation. All rights reserved. * For details on use and redistribution please refer to the * LICENSE file included with these sources. @@ -736,11 +736,13 @@ } closeText(); +float w = page.getWidth(); +float h = page.getHeight(); currentStream.add(ET\n); currentPage = this.pdfDoc.makePage(this.pdfResources, currentStream, - page.getWidth() / 1000, - page.getHeight() / 1000, page); + Math.round(w / 1000), + Math.round(h / 1000), page); if (page.hasLinks() || currentAnnotList != null) { if(currentAnnotList == null) { - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
cvs commit: xml-fop/src/org/apache/fop/render/pdf PDFRenderer.java
klease 01/07/20 13:57:23 Modified:src/org/apache/fop/render PrintRenderer.java src/org/apache/fop/render/pdf PDFRenderer.java Log: Add new addFilledRect method to make it possible to draw filled rectangles without any stroke in PDF; in doFrame, use rectangles instead of lines for borders to eliminate pixel errors Revision ChangesPath 1.7 +52 -18xml-fop/src/org/apache/fop/render/PrintRenderer.java Index: PrintRenderer.java === RCS file: /home/cvs/xml-fop/src/org/apache/fop/render/PrintRenderer.java,v retrieving revision 1.6 retrieving revision 1.7 diff -u -r1.6 -r1.7 --- PrintRenderer.java2001/05/17 07:46:12 1.6 +++ PrintRenderer.java2001/07/20 20:57:22 1.7 @@ -1,4 +1,4 @@ -/* $Id: PrintRenderer.java,v 1.6 2001/05/17 07:46:12 keiron Exp $ +/* $Id: PrintRenderer.java,v 1.7 2001/07/20 20:57:22 klease Exp $ * Copyright (C) 2001 The Apache Software Foundation. All rights reserved. * For details on use and redistribution please refer to the * LICENSE file included with these sources. @@ -142,7 +142,7 @@ PDFPathPaint stroke); /** - * add a filled rectangle to the current stream + * add a filled and stroked rectangle to the current stream * * @param x the x position of left edge in millipoints * @param y the y position of top edge in millipoints @@ -155,6 +155,22 @@ PDFPathPaint stroke, PDFPathPaint fill); /** + * Add a filled rectangle to the current stream + * This default implementation calls addRect + * using the same color for fill and border. + * + * @param x the x position of left edge in millipoints + * @param y the y position of top edge in millipoints + * @param w the width in millipoints + * @param h the height in millipoints + * @param fill the fill color/gradient + */ +protected void addFilledRect(int x, int y, int w, int h, +PDFPathPaint fill) { + addRect(x,y,w,h,fill,fill); +} + +/** * render area container * * @param area the area container to render @@ -174,8 +190,8 @@ } else if (area.getPosition() == Position.STATIC) { this.currentYPosition -= area.getPaddingTop() + area.getBorderTopWidth(); -this.currentAreaContainerXPosition += - area.getPaddingLeft() + area.getBorderLeftWidth(); + /* this.currentAreaContainerXPosition += +area.getPaddingLeft() + area.getBorderLeftWidth();*/ } this.currentXPosition = this.currentAreaContainerXPosition; @@ -274,7 +290,7 @@ // I'm not sure I should have to check for bg being null // but I do if ((bg != null) (bg.alpha() == 0)) { -this.addRect(rx, ry, w, -h, new PDFColor(bg), new PDFColor(bg)); +this.addFilledRect(rx, ry, w, -h, new PDFColor(bg)); } //rx = rx - area.getBorderLeftWidth(); @@ -285,23 +301,41 @@ // Handle line style // Offset for haft the line width! BorderAndPadding bp = area.getBorderAndPadding(); - int left = rx - area.getBorderLeftWidth() / 2; - int right = rx + w + area.getBorderRightWidth() / 2; - int top = ry + area.getBorderTopWidth() / 2; - int bottom = ry - h - area.getBorderBottomWidth() / 2; -if (area.getBorderTopWidth() != 0) -addLine(left, top, right, top, area.getBorderTopWidth(), +// int left = rx - area.getBorderLeftWidth() / 2; +// int right = rx + w + area.getBorderRightWidth() / 2; +// int top = ry + area.getBorderTopWidth() / 2; +// int bottom = ry - h - area.getBorderBottomWidth() / 2; +// if (area.getBorderTopWidth() != 0) +// addLine(left, top, right, top, area.getBorderTopWidth(), +// new PDFColor(bp.getBorderColor(BorderAndPadding.TOP))); +// if (area.getBorderLeftWidth() != 0) +// addLine(left, ry + area.getBorderTopWidth(), left, bottom, area.getBorderLeftWidth(), +// new PDFColor(bp.getBorderColor(BorderAndPadding.LEFT))); +// if (area.getBorderRightWidth() != 0) +// addLine(right, ry + area.getBorderTopWidth(), right, bottom, area.getBorderRightWidth(), +// new PDFColor(bp.getBorderColor(BorderAndPadding.RIGHT))); +// if (area.getBorderBottomWidth() != 0) +// addLine(rx - area.getBorderLeftWidth(), bottom, rx + w + area.getBorderRightWidth(), bottom, area.getBorderBottomWidth(), +// new PDFColor(bp.getBorderColor(BorderAndPadding.BOTTOM))); + // Try using
cvs commit: xml-fop/src/org/apache/fop/render/pdf PDFRenderer.java
keiron 01/06/25 07:15:54 Modified:src/org/apache/fop/render/pdf PDFRenderer.java Log: workaround for a bug in Acrobat Reader where text may disappear or be placed in the wrong position Revision ChangesPath 1.70 +16 -6 xml-fop/src/org/apache/fop/render/pdf/PDFRenderer.java Index: PDFRenderer.java === RCS file: /home/cvs/xml-fop/src/org/apache/fop/render/pdf/PDFRenderer.java,v retrieving revision 1.69 retrieving revision 1.70 diff -u -r1.69 -r1.70 --- PDFRenderer.java 2001/06/10 17:04:36 1.69 +++ PDFRenderer.java 2001/06/25 14:15:45 1.70 @@ -1,4 +1,4 @@ -/* $Id: PDFRenderer.java,v 1.69 2001/06/10 17:04:36 arved Exp $ +/* $Id: PDFRenderer.java,v 1.70 2001/06/25 14:15:45 keiron Exp $ * Copyright (C) 2001 The Apache Software Foundation. All rights reserved. * For details on use and redistribution please refer to the * LICENSE file included with these sources. @@ -374,7 +374,6 @@ GraphicsNodeRenderContext rc = getRenderContext(); BridgeContext ctx = new BridgeContext(userAgent, rc); GraphicsNode root; -//System.out.println(creating PDFGraphics2D); PDFGraphics2D graphics = new PDFGraphics2D(true, fs, pdfDoc, currentFontName, currentFontSize, currentXPosition, @@ -387,7 +386,7 @@ root.paint(graphics, rc); currentStream.add(graphics.getString()); } catch (Exception e) { -e.printStackTrace(); +MessageHandler.errorln(Error: svg graphic could not be rendered: + e.getMessage()); } currentStream.add(Q\n); @@ -408,6 +407,7 @@ true); TextPainter textPainter = new StrokingTextPainter(); +//TextPainter textPainter = new PDFTextPainter(); GraphicsNodeRableFactory gnrFactory = new ConcreteGraphicsNodeRableFactory(); @@ -499,9 +499,19 @@ int space = prevWordX - rx + prevWordWidth; float emDiff = (float) space / (float) currentFontSize * 1000f; -pdf.append(Float.toString(emDiff)); -pdf.append( ); -pdf.append(startText); +// this prevents a problem in Acrobat Reader where large +// numbers cause text to disappear or default to a limit +if(emDiff -33000) { +closeText(); + +pdf.append(1 0 0 1 +(rx / 1000f) + + + (bl / 1000f) + Tm [ + startText); +textOpen = true; +} else { +pdf.append(Float.toString(emDiff)); +pdf.append( ); +pdf.append(startText); +} } prevWordWidth = area.getContentWidth(); prevWordX = rx; - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]