Changeset 908

Show
Ignore:
Timestamp:
08/08/08 09:26:31 (4 months ago)
Author:
pvalsecc
Message:

Ticket #195: Added support for tiled layers

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/MapFish/server/java/print/print-lib/pom.xml

    r895 r908  
    8686      <version>1.2.14</version> 
    8787    </dependency> 
     88    <dependency> 
     89      <groupId>com.vividsolutions</groupId> 
     90      <artifactId>jts</artifactId> 
     91      <version>1.8</version> 
     92    </dependency> 
    8893  </dependencies> 
    8994  <repositories> 
  • trunk/MapFish/server/java/print/print-lib/src/main/java/org/mapfish/print/ShellMapPrinter.java

    r895 r908  
    3838    private String spec = null; 
    3939 
    40     @Option(desc = "Used only if log4jConfig is not specified. 2 if you want the debug information (stacktraces are shown), 1 for infos and 0 for only warnings and errors") 
     40    @Option(desc = "Used only if log4jConfig is not specified. 3 if you want everything, 2 if you want the debug information (stacktraces are shown), 1 for infos and 0 for only warnings and errors") 
    4141    private int verbose = 1; 
    4242 
     
    112112                    level = Level.INFO; 
    113113                    break; 
     114                case 2: 
     115                    level = Level.DEBUG; 
     116                    break; 
    114117                default: 
    115                     level = Level.DEBUG
     118                    level = Level.TRACE
    116119                    break; 
    117120            } 
  • trunk/MapFish/server/java/print/print-lib/src/main/java/org/mapfish/print/Transformer.java

    r897 r908  
    201201    } 
    202202 
     203    public AffineTransform getBitmapTransform() { 
     204        return getPdfTransform(); 
     205    } 
     206 
    203207    public int getScale() { 
    204208        return scale; 
  • trunk/MapFish/server/java/print/print-lib/src/main/java/org/mapfish/print/map/MapChunkDrawer.java

    r897 r908  
    9494 
    9595        //do the rendering 
    96         for (int i = 0; i < readers.size(); i++) { 
    97             MapReader reader = readers.get(i); 
    98             reader.render(transformer, dc, srs, i == 0); 
     96        dc.saveState(); 
     97        try { 
     98            transformer.setClipping(dc); 
     99            for (int i = 0; i < readers.size(); i++) { 
     100                MapReader reader = readers.get(i); 
     101                reader.render(transformer, dc, srs, i == 0); 
     102            } 
     103        } finally { 
     104            dc.restoreState(); 
    99105        } 
     106 
    100107 
    101108        if (mainTransformer != null) { 
  • trunk/MapFish/server/java/print/print-lib/src/main/java/org/mapfish/print/map/readers/HTTPMapReader.java

    r897 r908  
    1111import org.pvalsecc.misc.URIUtils; 
    1212 
     13import java.io.IOException; 
    1314import java.net.URI; 
     15import java.net.URISyntaxException; 
    1416import java.util.HashMap; 
    1517import java.util.Iterator; 
     
    2123    public static final Logger LOGGER = Logger.getLogger(HTTPMapReader.class); 
    2224 
    23     private final RenderingContext context; 
     25    protected final RenderingContext context; 
    2426    protected final PJsonObject params; 
    2527    protected final URI baseUrl; 
     
    6264            } 
    6365 
    64             MapRenderer.Format format = addQueryParams(queryParams, transformer, srs, first); 
     66            MapRenderer formater = MapRenderer.get(getFormat()); 
    6567 
    66             final URI url = URIUtils.addParams(baseUrl, queryParams, OVERRIDE_ALL); 
    67             LOGGER.debug(url); 
     68            addCommonQueryParams(queryParams, transformer, srs, first); 
     69            final URI commonUri = URIUtils.addParams(baseUrl, queryParams, OVERRIDE_ALL); 
    6870 
    69             MapRenderer formater = MapRenderer.get(format); 
    70  
    71             formater.render(transformer, url, dc, context, opacity); 
     71            renderTiles(formater, transformer, commonUri, dc); 
    7272        } catch (Exception e) { 
    7373            context.addError(e); 
     
    7575    } 
    7676 
    77     protected abstract MapRenderer.Format addQueryParams(Map<String, List<String>> result, Transformer transformer, String srs, boolean first); 
     77    protected abstract void renderTiles(MapRenderer formater, Transformer transformer, URI commonUri, PdfContentByte dc) throws IOException, URISyntaxException; 
     78 
     79    protected abstract MapRenderer.Format getFormat(); 
     80 
     81    /** 
     82     * Adds the query parameters common to every tile 
     83     */ 
     84    protected abstract void addCommonQueryParams(Map<String, List<String>> result, Transformer transformer, String srs, boolean first); 
    7885 
    7986    public boolean canMerge(MapReader other) { 
     
    8289        } 
    8390 
    84         if (other instanceof WMSMapReader) { 
    85             WMSMapReader wms = (WMSMapReader) other; 
     91        if (other instanceof HTTPMapReader) { 
     92            HTTPMapReader http = (HTTPMapReader) other; 
    8693            PJsonObject customParams = params.optJSONObject("customParams"); 
    87             PJsonObject customParamsOther = wms.params.optJSONObject("customParams"); 
    88             return baseUrl.equals(wms.baseUrl) && 
     94            PJsonObject customParamsOther = http.params.optJSONObject("customParams"); 
     95            return baseUrl.equals(http.baseUrl) && 
    8996                    (customParams != null ? customParams.equals(customParamsOther) : customParamsOther == null); 
    9097        } else { 
  • trunk/MapFish/server/java/print/print-lib/src/main/java/org/mapfish/print/map/readers/MapReader.java

    r882 r908  
    2323        } else if ("MapServer".equalsIgnoreCase(type)) { 
    2424            MapServerMapReader.create(target, context, params); 
     25        } else if ("TileCache".equalsIgnoreCase(type)) { 
     26            TileCacheMapReader.create(target, context, params); 
    2527        } else { 
    2628            throw new InvalidJsonValueException(params, "type", type); 
  • trunk/MapFish/server/java/print/print-lib/src/main/java/org/mapfish/print/map/readers/MapServerMapReader.java

    r897 r908  
    11package org.mapfish.print.map.readers; 
    22 
     3import com.lowagie.text.pdf.PdfContentByte; 
    34import org.mapfish.print.RenderingContext; 
    45import org.mapfish.print.Transformer; 
     
    910import org.pvalsecc.misc.URIUtils; 
    1011 
     12import java.io.IOException; 
     13import java.net.URI; 
    1114import java.util.ArrayList; 
    1215import java.util.List; 
     
    2427    } 
    2528 
    26     protected MapRenderer.Format addQueryParams(Map<String, List<String>> result, Transformer transformer, String srs, boolean first) { 
    27         final MapRenderer.Format type; 
     29    protected void renderTiles(MapRenderer formater, Transformer transformer, URI commonUri, PdfContentByte dc) throws IOException { 
     30        //tiling not supported for MapServer protocol... 
     31        List<URI> uris = new ArrayList<URI>(1); 
     32        uris.add(commonUri); 
     33        formater.render(transformer, uris, dc, context, opacity, 1, 0, 0, 
     34                transformer.getRotatedBitmapW(), transformer.getRotatedBitmapH()); 
     35    } 
     36 
     37    protected MapRenderer.Format getFormat() { 
     38        if (format.equals("image/svg+xml")) { 
     39            return MapRenderer.Format.SVG; 
     40        } else if (format.equals("application/x-pdf")) { 
     41            return MapRenderer.Format.PDF; 
     42        } else { 
     43            return MapRenderer.Format.BITMAP; 
     44        } 
     45    } 
     46 
     47    protected void addCommonQueryParams(Map<String, List<String>> result, Transformer transformer, String srs, boolean first) { 
    2848        final long w; 
    2949        final long h; 
     
    3252            w = transformer.getRotatedSvgW(); 
    3353            h = transformer.getRotatedSvgH(); 
    34             type = MapRenderer.Format.SVG; 
    3554        } else if (format.equals("application/x-pdf")) { 
    3655            URIUtils.addParamOverride(result, "MAP_IMAGETYPE", "pdf"); 
    3756            w = transformer.getRotatedBitmapW(); 
    3857            h = transformer.getRotatedBitmapH(); 
    39             type = MapRenderer.Format.PDF; 
    40  
    4158        } else { 
    4259            URIUtils.addParamOverride(result, "MAP_IMAGETYPE", "png"); 
    4360            w = transformer.getRotatedBitmapW(); 
    4461            h = transformer.getRotatedBitmapH(); 
    45             type = MapRenderer.Format.BITMAP; 
    4662        } 
    4763        URIUtils.addParamOverride(result, "MODE", "map"); 
     
    5369            URIUtils.addParamOverride(result, "TRANSPARENT", "true"); 
    5470        } 
    55         return type; 
    5671    } 
    5772 
  • trunk/MapFish/server/java/print/print-lib/src/main/java/org/mapfish/print/map/readers/WMSMapReader.java

    r897 r908  
    99import org.pvalsecc.misc.URIUtils; 
    1010 
     11import java.io.UnsupportedEncodingException; 
     12import java.net.URI; 
     13import java.net.URISyntaxException; 
    1114import java.util.ArrayList; 
     15import java.util.HashMap; 
    1216import java.util.List; 
    1317import java.util.Map; 
    1418 
    15 public class WMSMapReader extends HTTPMapReader { 
     19/** 
     20 * Support for the WMS protocol with possibilities to go through a WMS-C service 
     21 * (TileCache). 
     22 */ 
     23public class WMSMapReader extends TileableMapReader { 
    1624    private final List<String> layers = new ArrayList<String>(); 
    1725 
     
    2230    private WMSMapReader(String layer, String style, RenderingContext context, PJsonObject params) { 
    2331        super(context, params); 
     32        tileCacheLayerInfo = WMSServerInfo.getInfo(baseUrl).getTileCacheLayer(layer); 
    2433        layers.add(layer); 
    2534        styles.add(style); 
     
    2736    } 
    2837 
    29     protected MapRenderer.Format addQueryParams(Map<String, List<String>> result, Transformer transformer, String srs, boolean first) { 
     38    protected MapRenderer.Format getFormat() { 
     39        if (format.equals("image/svg+xml")) { 
     40            return MapRenderer.Format.SVG; 
     41        } else if (format.equals("application/x-pdf")) { 
     42            return MapRenderer.Format.PDF; 
     43        } else { 
     44            return MapRenderer.Format.BITMAP; 
     45        } 
     46    } 
     47 
     48    protected void addCommonQueryParams(Map<String, List<String>> result, Transformer transformer, String srs, boolean first) { 
    3049        URIUtils.addParamOverride(result, "FORMAT", format); 
    31         final MapRenderer.Format type; 
    32         if (format.equals("image/svg+xml")) { 
    33             URIUtils.addParamOverride(result, "WIDTH", Long.toString(transformer.getRotatedSvgW())); 
    34             URIUtils.addParamOverride(result, "HEIGHT", Long.toString(transformer.getRotatedSvgH())); 
    35             type = MapRenderer.Format.SVG; 
    36         } else { 
    37             URIUtils.addParamOverride(result, "WIDTH", Long.toString(transformer.getRotatedBitmapW())); 
    38             URIUtils.addParamOverride(result, "HEIGHT", Long.toString(transformer.getRotatedBitmapH())); 
    39             type = format.equals("application/x-pdf") ? MapRenderer.Format.PDF : MapRenderer.Format.BITMAP; 
    40         } 
    4150        URIUtils.addParamOverride(result, "LAYERS", StringUtils.join(layers, ",")); 
    4251        URIUtils.addParamOverride(result, "SRS", srs); 
     
    4554        //URIUtils.addParamOverride(result, "EXCEPTIONS", "application/vnd.ogc.se_inimage"); 
    4655        URIUtils.addParamOverride(result, "VERSION", "1.1.1"); 
    47         URIUtils.addParamOverride(result, "BBOX", String.format("%s,%s,%s,%s", transformer.getRotatedMinGeoX(), transformer.getRotatedMinGeoY(), transformer.getRotatedMaxGeoX(), transformer.getRotatedMaxGeoY())); 
    4856        if (!first) { 
    4957            URIUtils.addParamOverride(result, "TRANSPARENT", "true"); 
    5058        } 
    5159        URIUtils.addParamOverride(result, "STYLES", StringUtils.join(styles, ",")); 
    52         return type; 
    5360    } 
    5461 
     
    8289        } 
    8390 
     91        if (tileCacheLayerInfo != null) { 
     92            //no layer merge when tilecache is here... 
     93            return false; 
     94        } 
     95 
    8496        if (other instanceof WMSMapReader) { 
    8597            WMSMapReader wms = (WMSMapReader) other; 
     
    89101        } 
    90102    } 
     103 
     104    protected URI getTileUri(URI commonUri, Transformer transformer, float minGeoX, float minGeoY, float maxGeoX, float maxGeoY, long w, long h) throws URISyntaxException, UnsupportedEncodingException { 
     105 
     106        Map<String, List<String>> tileParams = new HashMap<String, List<String>>(); 
     107        if (format.equals("image/svg+xml")) { 
     108            URIUtils.addParamOverride(tileParams, "WIDTH", Long.toString(transformer.getRotatedSvgW())); 
     109            URIUtils.addParamOverride(tileParams, "HEIGHT", Long.toString(transformer.getRotatedSvgH())); 
     110        } else { 
     111            URIUtils.addParamOverride(tileParams, "WIDTH", Long.toString(w)); 
     112            URIUtils.addParamOverride(tileParams, "HEIGHT", Long.toString(h)); 
     113        } 
     114        URIUtils.addParamOverride(tileParams, "BBOX", String.format("%s,%s,%s,%s", minGeoX, minGeoY, maxGeoX, maxGeoY)); 
     115        return URIUtils.addParams(commonUri, tileParams, OVERRIDE_ALL); 
     116    } 
    91117} 
  • trunk/MapFish/server/java/print/print-lib/src/main/java/org/mapfish/print/map/renderers/BitmapMapRenderer.java

    r897 r908  
    44import com.lowagie.text.Image; 
    55import com.lowagie.text.pdf.PdfContentByte; 
     6import com.vividsolutions.jts.geom.Coordinate; 
     7import com.vividsolutions.jts.geom.GeometryFactory; 
     8import com.vividsolutions.jts.geom.Polygon; 
     9import org.apache.commons.logging.Log; 
     10import org.apache.commons.logging.LogFactory; 
    611import org.mapfish.print.RenderingContext; 
    712import org.mapfish.print.Transformer; 
    813 
     14import java.awt.geom.AffineTransform; 
     15import java.awt.geom.Point2D; 
    916import java.io.IOException; 
    1017import java.net.URI; 
     18import java.util.List; 
    1119 
    1220public class BitmapMapRenderer extends MapRenderer { 
    13     public void render(Transformer transformer, URI url, PdfContentByte dc, RenderingContext context, float opacity) throws IOException { 
     21    private static final Log LOGGER = LogFactory.getLog(BitmapMapRenderer.class); 
     22 
     23    public void render(Transformer transformer, List<URI> uris, PdfContentByte dc, RenderingContext context, float opacity, int nbTilesHorizontal, float offsetX, float offsetY, long bitmapTileW, long bitmapTileH) throws IOException { 
    1424        dc.saveState(); 
    1525        try { 
    16             final Image map = Image.getInstance(url.toURL()); 
     26            final AffineTransform bitmapTransformer = transformer.getBitmapTransform(); 
     27            dc.transform(bitmapTransformer); 
     28            final double rotation = transformer.getRotation(); 
    1729 
    18             float rotation = (float) transformer.getRotation(); 
    19             final float h = transformer.getPaperH(); 
    20             final float w = transformer.getPaperW(); 
    21             final float x = transformer.getPaperPosX(); 
    22             final float y = transformer.getPaperPosY(); 
    23             if (rotation != 0.0) { 
    24                 map.setRotation(rotation); 
    25                 float dx = (float) Math.abs(h * Math.sin(rotation) * Math.cos(rotation)); 
    26                 float dy = (float) Math.abs(w * Math.sin(rotation) * Math.cos(rotation)); 
    27                 float rw = (float) (Math.abs(w * Math.cos(rotation)) + Math.abs(h * Math.sin(rotation))); 
    28                 float rh = (float) (Math.abs(h * Math.cos(rotation)) + Math.abs(w * Math.sin(rotation))); 
    29                 map.scaleAbsolute(rw, rh); 
    30                 map.setAbsolutePosition(x - dx, y - dy); 
    31                 transformer.setClipping(dc); 
    32             } else { 
    33                 map.scaleAbsolute(w, h); 
    34                 map.setAbsolutePosition(x, y); 
     30            Image smask = null; 
     31            if (opacity < 1.0) { 
     32                final byte byteOpacity = (byte) (Math.round(opacity * 256.0F)); 
     33                byte maskBytes[] = new byte[]{byteOpacity}; 
     34                smask = Image.getInstance(1, 1, 1, 8, maskBytes); 
     35                smask.makeMask(); 
    3536            } 
    3637 
    37             if (opacity < 1.0) { 
    38                 final byte byteOpacity = (byte) (Math.round(opacity * 256.0F)); 
    39                 byte gradient[] = new byte[]{byteOpacity}; 
    40                 Image smask = Image.getInstance(1, 1, 1, 8, gradient); 
    41                 smask.makeMask(); 
    42                 map.setImageMask(smask); 
     38            for (int i = 0; i < uris.size(); i++) { 
     39                URI uri = uris.get(i); 
     40 
     41                final int line = i / nbTilesHorizontal; 
     42                final int col = i % nbTilesHorizontal; 
     43                final float posX = 0 - offsetX + col * bitmapTileW; 
     44                final float posY = 0 - offsetY + line * bitmapTileH; 
     45 
     46                if (rotation != 0.0 && !isTileVisible(posX, posY, bitmapTileW, bitmapTileH, bitmapTransformer, transformer)) { 
     47                    if (LOGGER.isDebugEnabled()) { 
     48                        LOGGER.debug("Not needed: " + uri); 
     49                    } 
     50                    continue; 
     51                } 
     52 
     53                LOGGER.debug(uri); 
     54                final Image map = Image.getInstance(uri.toURL()); 
     55                map.scaleAbsolute(bitmapTileW, bitmapTileH); 
     56                map.setAbsolutePosition(posX, posY); 
     57 
     58                if (smask != null) { 
     59                    map.setImageMask(smask); 
     60                } 
     61                dc.addImage(map); 
    4362            } 
    44             dc.addImage(map); 
    4563        } catch (DocumentException e) { 
    4664            context.addError(e); 
     
    4967        } 
    5068    } 
     69 
     70    private boolean isTileVisible(float x, float y, long w, long h, AffineTransform bitmapTransformer, Transformer transformer) { 
     71        GeometryFactory gf = new GeometryFactory(); 
     72        Polygon page = gf.createPolygon( 
     73                gf.createLinearRing(new Coordinate[]{ 
     74                        new Coordinate(transformer.getPaperPosX(), transformer.getPaperPosY()), 
     75                        new Coordinate(transformer.getPaperPosX() + transformer.getPaperW(), transformer.getPaperPosY()), 
     76                        new Coordinate(transformer.getPaperPosX() + transformer.getPaperW(), transformer.getPaperPosY() + transformer.getPaperH()), 
     77                        new Coordinate(transformer.getPaperPosX(), transformer.getPaperPosY() + transformer.getPaperH()), 
     78                        new Coordinate(transformer.getPaperPosX(), transformer.getPaperPosY()), 
     79                }), null); 
     80 
     81        Point2D.Float ll = new Point2D.Float(); 
     82        Point2D.Float lr = new Point2D.Float(); 
     83        Point2D.Float ur = new Point2D.Float(); 
     84        Point2D.Float ul = new Point2D.Float(); 
     85        bitmapTransformer.transform(new Point2D.Float(x, y), ll); 
     86        bitmapTransformer.transform(new Point2D.Float(x + w, y), lr); 
     87        bitmapTransformer.transform(new Point2D.Float(x + w, y + h), ur); 
     88        bitmapTransformer.transform(new Point2D.Float(x, y + h), ul); 
     89        Polygon tile = gf.createPolygon( 
     90                gf.createLinearRing(new Coordinate[]{ 
     91                        new Coordinate(ll.getX(), ll.getY()), 
     92                        new Coordinate(lr.getX(), lr.getY()), 
     93                        new Coordinate(ur.getX(), ur.getY()), 
     94                        new Coordinate(ul.getX(), ul.getY()), 
     95                        new Coordinate(ll.getX(), ll.getY()), 
     96                }), null 
     97        ); 
     98 
     99        return page.intersects(tile); 
     100    } 
    51101} 
  • trunk/MapFish/server/java/print/print-lib/src/main/java/org/mapfish/print/map/renderers/MapRenderer.java

    r736 r908  
    88import java.net.URI; 
    99import java.util.HashMap; 
     10import java.util.List; 
    1011import java.util.Map; 
    1112 
     
    2324    } 
    2425 
    25     public abstract void render(Transformer transformer, URI url, PdfContentByte dc, RenderingContext context, float opacity) throws IOException; 
     26    public abstract void render(Transformer transformer, List<URI> urls, PdfContentByte dc, RenderingContext context, float opacity, int nbTilesHorizontal, float offsetX, float offsetY, long bitmapTileW, long bitmapTileH) throws IOException; 
    2627 
    2728    public enum Format { 
  • trunk/MapFish/server/java/print/print-lib/src/main/java/org/mapfish/print/map/renderers/PDFMapRenderer.java

    r897 r908  
    66import com.lowagie.text.pdf.PdfReader; 
    77import org.apache.log4j.Logger; 
     8import org.mapfish.print.InvalidValueException; 
    89import org.mapfish.print.RenderingContext; 
    910import org.mapfish.print.Transformer; 
     
    1112import java.io.IOException; 
    1213import java.net.URI; 
     14import java.util.List; 
    1315 
    1416public class PDFMapRenderer extends MapRenderer { 
    1517    public static final Logger LOGGER = Logger.getLogger(PDFMapRenderer.class); 
    1618 
    17     public void render(Transformer transformer, URI url, PdfContentByte dc, RenderingContext context, float opacity) throws IOException { 
    18         PdfReader reader = new PdfReader(url.toURL()); 
     19    public void render(Transformer transformer, List<URI> uris, PdfContentByte dc, RenderingContext context, float opacity, int nbTilesHorizontal, float offsetX, float offsetY, long bitmapTileW, long bitmapTileH) throws IOException { 
     20        if (uris.size() != 1) { 
     21            //tiling not supported in PDF 
     22            throw new InvalidValueException("format", "application/x-pdf"); 
     23        } 
     24        final URI uri = uris.get(0); 
     25        LOGGER.debug(uri); 
     26        PdfReader reader = new PdfReader(uri.toURL()); 
    1927        PdfImportedPage pdfMap = context.getWriter().getImportedPage(reader, 1); 
    2028 
     
    2937        dc.saveState(); 
    3038        try { 
    31             transformer.setClipping(dc); 
    3239            dc.transform(transformer.getPdfTransform()); 
    3340            dc.addTemplate(pdfMap, 0, 0); 
  • trunk/MapFish/server/java/print/print-lib/src/main/java/org/mapfish/print/map/renderers/SVGMapRenderer.java

    r897 r908  
    1010import org.apache.xml.serialize.OutputFormat; 
    1111import org.apache.xml.serialize.XMLSerializer; 
     12import org.mapfish.print.InvalidValueException; 
    1213import org.mapfish.print.RenderingContext; 
    1314import org.mapfish.print.Transformer; 
     
    5455    } 
    5556 
    56     public void render(Transformer transformer, URI url, PdfContentByte dc, RenderingContext context, float opacity) throws IOException { 
     57    public void render(Transformer transformer, java.util.List<URI> uris, PdfContentByte dc, RenderingContext context, float opacity, int nbTilesHorizontal, float offsetX, float offsetY, long bitmapTileW, long bitmapTileH) throws IOException { 
     58        if (uris.size() != 1) { 
     59            //tiling not supported in SVG 
     60            throw new InvalidValueException("format", "application/x-pdf"); 
     61        } 
     62 
    5763        dc.saveState(); 
    5864        try { 
    59             transformer.setClipping(dc); 
    6065            dc.transform(transformer.getSvgTransform()); 
    6166 
     
    7580            g2.setRenderingHint(RenderingHintsKeyExt.KEY_AVOID_TILE_PAINTING, RenderingHintsKeyExt.VALUE_AVOID_TILE_PAINTING_ON); 
    7681 
    77             final TranscoderInput ti = getTranscoderInput(url.toURL(), transformer, context); 
     82            final URI uri = uris.get(0); 
     83            LOGGER.debug(uri); 
     84            final TranscoderInput ti = getTranscoderInput(uri.toURL(), transformer, context); 
    7885            if (ti != null) { 
    7986                PrintTranscoder pt = new PrintTranscoder(); 
     
    137144        serializer.serialize(doc); 
    138145 
    139         LOGGER.debug(out.toString()); 
     146        LOGGER.trace(out.toString()); 
    140147        out.close(); 
    141148    }