Guest User

Untitled

a guest
Sep 18th, 2018
61
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.54 KB | None | 0 0
  1. private static final String JASPER_FILE_MOVIMENTI = "scalarePdf/pdf_movimenti.jrxml";
  2. private static final String JASPER_FILE_SCALARE = "scalarePdf/pdf_scalare.jrxml";
  3.  
  4. @SuppressWarnings("rawtypes")
  5. public byte[] rawPdf(BeScalare beScalare, String codTabulato, String output) throws JRException, IOException {
  6.  
  7. JRBeanArrayDataSource dataSource = new JRBeanArrayDataSource(new Object[]{beScalare});
  8.  
  9. //report's list
  10. List<byte[]> pdfFilesAsByteArray = new ArrayList<byte[]>();
  11.  
  12. //Report one
  13. Class cScalare = this.getClass();
  14. ClassLoader clScalare = cScalare.getClassLoader();
  15. InputStream isScalare = clScalare.getResourceAsStream(JASPER_FILE_SCALARE);
  16. JasperDesign jasDesignScalare = JRXmlLoader.load(isScalare);
  17. //compile report one
  18. JasperReport reportScalare = JasperCompileManager.compileReport(jasDesignScalare);
  19. //parameters report one
  20. Map<String, Object> paramScalare = new HashMap<String, Object>();
  21. JRBeanCollectionDataSource itemsScalareSaldiPerValuta = new JRBeanCollectionDataSource(beScalare.getLstBeScalareSaldiPerValuta());
  22. paramScalare.put("scalareSaldiPerValuta", itemsScalareSaldiPerValuta);
  23. //fill report one
  24. JasperPrint jasperPrintScalare = JasperFillManager.fillReport(reportScalare, paramScalare, dataSource);
  25. pdfFilesAsByteArray.add(JasperExportManager.exportReportToPdf(jasperPrintScalare));
  26.  
  27. //Report two
  28. Class c = this.getClass();
  29. ClassLoader cl = c.getClassLoader();
  30. InputStream is = cl.getResourceAsStream(JASPER_FILE_MOVIMENTI);
  31. JasperDesign jasDesign = JRXmlLoader.load(is);
  32. //compile report two
  33. JasperReport reportMovimenti = JasperCompileManager.compileReport(jasDesign);
  34. //parameters report two
  35. Map<String, Object> paramMovimenti = new HashMap<String, Object>();
  36. BufferedImage imgNumeroVerde = ImageIO.read(getClass().getResource("/scalarePdf/headphones.png"));
  37. paramMovimenti.put("numeroVerde", imgNumeroVerde);
  38. BufferedImage imgInternet = ImageIO.read(getClass().getResource("/scalarePdf/internet.png"));
  39. paramMovimenti.put("internet", imgInternet);
  40. JRBeanCollectionDataSource itemsScalareMovimenti = new JRBeanCollectionDataSource(beScalare.getLstBeScalareMovimenti());
  41. paramMovimenti.put("scalareMovimenti", itemsScalareMovimenti);
  42. //fill report two
  43. JasperPrint jasperPrintMovimenti = JasperFillManager.fillReport(reportMovimenti, paramMovimenti, dataSource);
  44. pdfFilesAsByteArray.add(JasperExportManager.exportReportToPdf(jasperPrintMovimenti));
  45.  
  46. //merge the two reports in one
  47. ByteArrayOutputStream outStream = new ByteArrayOutputStream();
  48. Document document = null;
  49. PdfCopy writer = null;
  50. for (byte[] pdfByteArray : pdfFilesAsByteArray) {
  51.  
  52. try {
  53. PdfReader reader = new PdfReader(pdfByteArray);
  54. int numberOfPages = reader.getNumberOfPages();
  55.  
  56. if (document == null) {
  57. document = new Document(reader.getPageSizeWithRotation(1));
  58. writer = new PdfCopy(document, outStream); // new
  59. document.open();
  60. }
  61. PdfImportedPage page;
  62. for (int i = 0; i < numberOfPages;) {
  63. ++i;
  64. page = writer.getImportedPage(reader, i);
  65. writer.addPage(page);
  66. }
  67. }
  68. catch (Exception e) {
  69. e.printStackTrace();
  70. }
  71. }
  72. document.close();
  73. outStream.close();
  74. return outStream.toByteArray();
  75. }
  76.  
  77. //Report two
  78. dataSource.moveFirst();
  79.  
  80. //Report two
  81. dataSource = new JRBeanArrayDataSource(new Object[]{beScalare});
Add Comment
Please, Sign In to add comment