	public void handlePrintProduktBatch(HttpServletRequest request, HttpServletResponse response, IFunctionality funktionalitetsLaget) throws ServletException, IOException, DALException {
		int produktBatchId, receptId, oprId = 0, raavareId, status, raavareBatchId = 0;
		String udskrevet, receptNavn, raavareNavn, startDato, slutDato;
		double tara = 0, netto = 0, taraSum = 0, nettoSum = 0;
		produktBatchId = Integer.parseInt(request.getParameter("pbId"));
		ProduktBatchDTO pbDTO = funktionalitetsLaget.getProduktBatchDAO().getProduktBatch(produktBatchId);
		receptId = pbDTO.getReceptId();
		ReceptDTO receptDTO = funktionalitetsLaget.getReceptDAO().getRecept(receptId);
		receptNavn = receptDTO.getReceptNavn();
		List<ReceptKompDTO> receptKompList = funktionalitetsLaget.getReceptKompDAO().getReceptKompList(receptId);
		status = pbDTO.getStatus();
		startDato = pbDTO.getStartDato();
		slutDato = pbDTO.getSlutDato();
		Calendar d = Calendar.getInstance();
		DecimalFormat df = new DecimalFormat("00");
		udskrevet = d.get(Calendar.YEAR) + "-"
		+ df.format(d.get(Calendar.MONTH) + 1) + "-"
		+ df.format(d.get(Calendar.DATE)) + " "
		+ df.format(d.get(Calendar.HOUR_OF_DAY)) + ":"
		+ df.format(d.get(Calendar.MINUTE)) + ":"
		+ df.format(d.get(Calendar.SECOND));
		try {
	        Document document = new Document();
	        ByteArrayOutputStream baos = new ByteArrayOutputStream();
	        PdfWriter.getInstance(document, baos);
	        document.open();
	        Chunk SEPERATOR = new Chunk(
	                new LineSeparator(0.5f, 95, BaseColor.BLUE, Element.ALIGN_CENTER, 3.5f));
	        Chunk DOTTED = new Chunk(
	                new DottedLineSeparator());
	        document.add(new Paragraph("Udskrevet "+udskrevet));
	        document.add(new Paragraph("Produkt Batch nr. "+produktBatchId));
	        document.add(new Paragraph("Recept nr. "+receptId));
	        document.add(new Paragraph("Recept navn: "+receptNavn));
	        document.add(SEPERATOR);
	        for (ReceptKompDTO receptKomp: receptKompList) {
	        	RaavareDTO raavare = funktionalitetsLaget.getRaavareDAO().getRaavare(receptKomp.getRaavareId());
	        	raavareId = receptKomp.getRaavareId();
	        	raavareNavn = raavare.getRaavareNavn();
	        	List<ProduktBatchKompDTO> produktBatchKompList = funktionalitetsLaget.getProduktBatchKompDAO().getProduktBatchKompList(produktBatchId);
		        document.add(new Paragraph("Råvare nr. "+raavareId));
		        document.add(new Paragraph("Råvare navn: "+raavareNavn));
		        document.add(DOTTED);
		        PdfPTable table = new PdfPTable(6);
		        table.getDefaultCell().setBorder(0);
		        table.addCell("Nominel Netto");
		        table.addCell("Tolerance");
		        table.addCell("Tara");
		        table.addCell("Netto");
		        table.addCell("Batch");
		        table.addCell("Operatør");
		        for (ProduktBatchKompDTO produktBatchKomp: produktBatchKompList) {
		        	int rbId = produktBatchKomp.getRbId();
		        	RaavareBatchDTO tjekRaavareBatch = funktionalitetsLaget.getRaavareBatchDAO().getRaavareBatch(rbId);
		        	if (raavareId == tjekRaavareBatch.getRaavareId()) {
		        		tara = produktBatchKomp.getTara();
		        		taraSum += tara;
		        		netto = produktBatchKomp.getNetto();
		        		nettoSum += netto;
		        		raavareBatchId = tjekRaavareBatch.getRbId();
		        		oprId = produktBatchKomp.getOprId();
				        table.addCell(""+receptKomp.getNomNetto());
				        table.addCell(""+receptKomp.getTolerance());
		        		table.addCell(""+tara);
		        		table.addCell(""+netto);
		        		table.addCell(""+raavareBatchId);
		        		table.addCell(""+oprId);
		        	}
		        }
		        if (tara == 0) {
		        	table.addCell("");
		        	table.addCell("");
		        	table.addCell("");
		        	table.addCell("");
		        }
		        document.add(table);
		        document.add(SEPERATOR);
	        }
	        document.add(new Paragraph("Sum Tara: "+((taraSum != 0)?taraSum:"")));
	        document.add(new Paragraph("Sum Netto: "+((nettoSum != 0)?nettoSum:"")));
	        document.add(new Paragraph("\n\n"));
	        document.add(new Paragraph("Produktion Status: "+statusToString(status)));
	        document.add(new Paragraph("Produktion Startet: "+startDato));
	        document.add(new Paragraph("Produktion Slut: "+slutDato));
	        document.close();
	        response.setHeader("Expires", "0");
	        response.setHeader("Cache-Control",
	            "must-revalidate, post-check=0, pre-check=0");
	        response.setHeader("Pragma", "public");
	        response.setHeader("Content-Disposition", "attachment; filename=\"ProduktBatch"+produktBatchId+".pdf\"");
	        response.setContentType("application/pdf");
	        response.setContentLength(baos.size());
	        OutputStream os = response.getOutputStream();
	        baos.writeTo(os);
	        os.flush();
	        os.close();
		}
		catch(DocumentException e) {
			e.printStackTrace();
			System.out.println("fanget");
		}
	}

	public void handlePrintProduktBatch(HttpServletRequest request, HttpServletResponse response, IFunctionality funktionalitetsLaget) throws ServletException, IOException, DALException {
		int produktBatchId, receptId, oprId = 0, raavareId, status, raavareBatchId = 0;
		String udskrevet, receptNavn, raavareNavn, startDato, slutDato;
		double tara = 0, netto = 0, taraSum = 0, nettoSum = 0;
		produktBatchId = Integer.parseInt(request.getParameter("pbId"));
		ProduktBatchDTO pbDTO = funktionalitetsLaget.getProduktBatchDAO().getProduktBatch(produktBatchId);
		receptId = pbDTO.getReceptId();
		ReceptDTO receptDTO = funktionalitetsLaget.getReceptDAO().getRecept(receptId);
		receptNavn = receptDTO.getReceptNavn();
		List<ReceptKompDTO> receptKompList = funktionalitetsLaget.getReceptKompDAO().getReceptKompList(receptId);
		status = pbDTO.getStatus();
		startDato = pbDTO.getStartDato();
		slutDato = pbDTO.getSlutDato();
		Calendar d = Calendar.getInstance();
		DecimalFormat df = new DecimalFormat("00");
		udskrevet = d.get(Calendar.YEAR) + "-"
		+ df.format(d.get(Calendar.MONTH) + 1) + "-"
		+ df.format(d.get(Calendar.DATE)) + " "
		+ df.format(d.get(Calendar.HOUR_OF_DAY)) + ":"
		+ df.format(d.get(Calendar.MINUTE)) + ":"
		+ df.format(d.get(Calendar.SECOND));
		try {
	        Document document = new Document();
	        ByteArrayOutputStream baos = new ByteArrayOutputStream();
	        PdfWriter.getInstance(document, baos);
	        document.open();
	        Chunk SEPERATOR = new Chunk(
	                new LineSeparator(0.5f, 95, BaseColor.BLUE, Element.ALIGN_CENTER, 3.5f));
	        Chunk DOTTED = new Chunk(
	                new DottedLineSeparator());
	        document.add(new Paragraph("Udskrevet "+udskrevet));
	        document.add(new Paragraph("Produkt Batch nr. "+produktBatchId));
	        document.add(new Paragraph("Recept nr. "+receptId));
	        document.add(new Paragraph("Recept navn: "+receptNavn));
	        document.add(SEPERATOR);
	        for (ReceptKompDTO receptKomp: receptKompList) {
	        	RaavareDTO raavare = funktionalitetsLaget.getRaavareDAO().getRaavare(receptKomp.getRaavareId());
	        	raavareId = receptKomp.getRaavareId();
	        	raavareNavn = raavare.getRaavareNavn();
	        	List<ProduktBatchKompDTO> produktBatchKompList = funktionalitetsLaget.getProduktBatchKompDAO().getProduktBatchKompList(produktBatchId);
		        document.add(new Paragraph("Råvare nr. "+raavareId));
		        document.add(new Paragraph("Råvare navn: "+raavareNavn));
		        document.add(DOTTED);
		        PdfPTable table = new PdfPTable(6);
		        table.getDefaultCell().setBorder(0);
		        table.addCell("Nominel Netto");
		        table.addCell("Tolerance");
		        table.addCell("Tara");
		        table.addCell("Netto");
		        table.addCell("Batch");
		        table.addCell("Operatør");
		        for (ProduktBatchKompDTO produktBatchKomp: produktBatchKompList) {
		        	int rbId = produktBatchKomp.getRbId();
		        	RaavareBatchDTO tjekRaavareBatch = funktionalitetsLaget.getRaavareBatchDAO().getRaavareBatch(rbId);
		        	if (raavareId == tjekRaavareBatch.getRaavareId()) {
		        		tara = produktBatchKomp.getTara();
		        		taraSum += tara;
		        		netto = produktBatchKomp.getNetto();
		        		nettoSum += netto;
		        		raavareBatchId = tjekRaavareBatch.getRbId();
		        		oprId = produktBatchKomp.getOprId();
				        table.addCell(""+receptKomp.getNomNetto());
				        table.addCell(""+receptKomp.getTolerance() + " %");
		        		table.addCell(""+tara);
		        		table.addCell(""+netto);
		        		table.addCell(""+raavareBatchId);
		        		table.addCell(""+oprId);
		        	}
		        }
		        if (tara == 0 && netto == 0) {
		        	table.addCell(""+receptKomp.getNomNetto());
		        	table.addCell(""+receptKomp.getTolerance()+" %");
		        	table.addCell("");
		        	table.addCell("");
		        	table.addCell("");
		        	table.addCell("");
		        }
		        document.add(table);
		        document.add(SEPERATOR);
	        }
	        document.add(new Paragraph("Sum Tara: "+((taraSum != 0)?taraSum:"")));
	        document.add(new Paragraph("Sum Netto: "+((nettoSum != 0)?nettoSum:"")));
	        document.add(new Paragraph("\n\n"));
	        document.add(new Paragraph("Produktion Status: "+statusToString(status)));
	        document.add(new Paragraph("Produktion Startet: "+startDato));
	        document.add(new Paragraph("Produktion Slut: "+slutDato));
	        document.close();
	        response.setHeader("Expires", "0");
	        response.setHeader("Cache-Control",
	            "must-revalidate, post-check=0, pre-check=0");
	        response.setHeader("Pragma", "public");
	        response.setHeader("Content-Disposition", "attachment; filename=\"ProduktBatch"+produktBatchId+".pdf\"");
	        response.setContentType("application/pdf");
	        response.setContentLength(baos.size());
	        OutputStream os = response.getOutputStream();
	        baos.writeTo(os);
	        os.flush();
	        os.close();
		}
		catch(DocumentException e) {
			e.printStackTrace();
			System.out.println("fanget");
		}
	}
