/*
 * This is part of Geomajas, a GIS framework, http://www.geomajas.org/.
 *
 * Copyright 2008-2013 Geosparc nv, http://www.geosparc.com/, Belgium.
 *
 * The program is available in open source according to the GNU Affero
 * General Public License. All contributions in this program are covered
 * by the Geomajas Contributors License Agreement. For full licensing
 * details, see LICENSE.txt in the project root.
 */
package org.geomajas.plugin.printing.mvc;

import java.util.Map;

import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.geomajas.plugin.printing.document.Document;
import org.geomajas.plugin.printing.document.Document.Format;
import org.springframework.stereotype.Component;
import org.springframework.web.servlet.view.AbstractView;

/**
 * View to produce PDF documents.
 *
 * @author Jan De Moerloose
 */
@Component(PrintingController.DOCUMENT_VIEW_NAME)
public class DocumentView extends AbstractView {

	@Override
	protected void renderMergedOutputModel(Map<String, Object> model, HttpServletRequest request,
			HttpServletResponse response) throws Exception {
		Document doc = (Document) model.get(PrintingController.DOCUMENT_KEY);
		String download = (String) model.get(PrintingController.DOWNLOAD_KEY);
		String fileName = (String) model.get(PrintingController.FILENAME_KEY);
		Format format = (Format) model.get(PrintingController.FORMAT_KEY);
				
		// Write content type and also length (determined via byte array).
		response.setContentType(format.getMimetype());
		response.setContentLength(doc.getContentLength());
		
		// check download method
		if (download.equals(PrintingController.DOWNLOAD_METHOD_SAVE)) {
			response.setHeader("Content-Disposition", " attachment; filename=\"" + fileName + "\"");
		} else if (download.equals(PrintingController.DOWNLOAD_METHOD_BROWSER)) {
			response.setHeader("Content-Disposition", " inline; filename=\"" + fileName + "\"");
		} else {
			throw new IllegalArgumentException("invalid download method " + download);
		}

		// Write the docmuent
		ServletOutputStream out = response.getOutputStream();
		doc.render(out, format);
		out.flush();
	}

}

@@ -866,11 +866,15 @@
 uce 
-PDF
+printed
  doc
@@ -879,16 +879,32 @@
 ocuments
+ (PDF, PNG, ...)
 .%0A *%0A * 
@@ -928,16 +928,36 @@
 erloose%0A
+ * @author An Buyle%0A
  */%0A@Com
@@ -1626,58 +1626,8 @@
 ;%0A%09%09
-response.setContentLength(doc.getContentLength());
 %0A%09%09%0A
@@ -2149,16 +2149,16 @@
 ream();%0A
-
 %09%09doc.re
@@ -2176,16 +2176,69 @@
 ormat);%0A
+%09%09response.setContentLength(doc.getContentLength());%0A
 %09%09out.fl

Fix SPRINT-74 - When printing to PNG output format, and the output is > +/- 30KByte, only the start of the PNG is returned.