Example usage for com.itextpdf.text.pdf BarcodeQRCode BarcodeQRCode

List of usage examples for com.itextpdf.text.pdf BarcodeQRCode BarcodeQRCode

Introduction

In this page you can find the example usage for com.itextpdf.text.pdf BarcodeQRCode BarcodeQRCode.

Prototype

public BarcodeQRCode(String content, int width, int height, Map<EncodeHintType, Object> hints) 

Source Link

Document

Creates the QR barcode.

Usage

From source file:com.masscustsoft.service.ToPdf.java

License:Open Source License

public Image getBarcode(Map it) throws Exception {
    String type = MapUtil.getStr(it, "type");
    String code = MapUtil.getStr(it, "code");
    switch (type) {
    case "pf417":
        BarcodePDF417 bar = new BarcodePDF417();
        bar.setText(code);//from   w  w w .j a  v  a  2s.co m
        return bar.getImage();
    case "QRCode":
        BarcodeQRCode qr = new BarcodeQRCode(code, MapUtil.getInt(it, "qrWidth", 1),
                MapUtil.getInt(it, "qrHeight", 1), null);
        return qr.getImage();
    default:
        Barcode barcode;
        PdfContentByte cb = getWriter().getDirectContent();
        switch (type) {
        case "code128":
        case "code128_raw":
            barcode = new Barcode128();
            barcode.setCodeType(Barcode.CODE128_RAW);
            break;
        case "code128_ucc":
            barcode = new Barcode128();
            barcode.setCodeType(Barcode.CODE128_UCC);
            break;
        case "inter25":
            barcode = new BarcodeInter25();
            break;
        case "postnet":
            barcode = new BarcodePostnet();
            break;
        case "planet":
            barcode = new BarcodePostnet();
            barcode.setCodeType(Barcode.PLANET);
            break;
        case "code39":
            barcode = new Barcode39();
            break;
        case "codabar":
            barcode = new BarcodeCodabar();
            break;
        default:
            barcode = new BarcodeEAN();
            MapUtil.setIfBool(it, "guardBars", barcode, "setGuardBars");
            MapUtil.setIfFloat(it, "baseLine", barcode, "setBaseLine");
            if ("upca".equals(type))
                barcode.setCodeType(Barcode.UPCA);
            if ("ean8".equals(type))
                barcode.setCodeType(Barcode.EAN8);
            if ("upce".equals(type))
                barcode.setCodeType(Barcode.UPCE);
            if ("ean13".equals(type))
                barcode.setCodeType(Barcode.EAN13);
        }
        barcode.setCode(code);
        MapUtil.setIfFloat(it, "barHeight", barcode, "setBarHeight");
        MapUtil.setIfFloat(it, "x", barcode, "setX");
        MapUtil.setIfFloat(it, "n", barcode, "setN");
        MapUtil.setIfFloat(it, "size", barcode, "setSize");
        barcode.setTextAlignment(getAlignment(it, "alignment"));
        MapUtil.setIfBool(it, "checksumText", barcode, "setChecksumText");
        MapUtil.setIfBool(it, "startStopText", barcode, "setStartStopText");
        MapUtil.setIfBool(it, "extended", barcode, "setExtended");
        String suppCode = MapUtil.getStr(it, "suppCode");
        if (!LightStr.isEmpty(suppCode)) {
            BarcodeEAN codeSUPP = new BarcodeEAN();
            codeSUPP.setCodeType(Barcode.SUPP5);
            codeSUPP.setCode(suppCode);
            codeSUPP.setBaseline(-2);
            BarcodeEANSUPP eanSupp = new BarcodeEANSUPP(barcode, codeSUPP);
            return eanSupp.createImageWithBarcode(cb, getColor(it, "barColor"), getColor(it, "textColor"));
        } else {
            return barcode.createImageWithBarcode(cb, getColor(it, "barColor"), getColor(it, "textColor"));
        }
    }
}

From source file:com.vectorprint.report.itext.style.stylers.QR.java

License:Open Source License

@Override
protected Image createImage(PdfContentByte canvas, String data, float opacity)
        throws VectorPrintException, BadElementException {
    Image img = null;/*from   ww w  .  java 2s  .  c o m*/
    try {
        if (data == null && getData() == null) {
            ByteArrayOutputStream out = new ByteArrayOutputStream(100);
            IOHelper.load(getUrl().openStream(), out);
            img = new BarcodeQRCode(out.toString(), getValue(WIDTH, Integer.class),
                    getValue(HEIGHT, Integer.class), null).getImage();
        } else {
            img = new BarcodeQRCode(data == null ? getData() : data, getValue(WIDTH, Integer.class),
                    getValue(HEIGHT, Integer.class), null).getImage();
        }
    } catch (IOException ex) {
        throw new VectorPrintException(ex);
    }
    applySettings(img);
    return img;
}

From source file:org.smap.sdal.managers.PDFSurveyManager.java

License:Open Source License

private void fillTemplate(GlobalVariables gv, AcroFields pdfForm, ArrayList<Result> record, String basePath,
        String formName, int repeatIndex, String serverRoot, PdfStamper stamper, int oId)
        throws IOException, DocumentException {
    try {//ww  w. j a v a 2s  . c om

        for (Result r : record) {

            String value = "";
            boolean hideLabel = false;
            String fieldName = getFieldName(formName, repeatIndex, r.name);
            String fieldNameQR = getFieldName(formName, repeatIndex, r.name + "_qr");

            DisplayItem di = new DisplayItem();
            try {
                Form form = survey.forms.get(r.fIdx);
                Question question = getQuestionFromResult(sd, r, form);
                setQuestionFormats(question.appearance, di);
            } catch (Exception e) {
                // If we can't get the question details for this data then that is ok
            }

            /*
             * Set the value based on the result
             * Process subforms if this is a repeating group
             */
            if (r.type.equals("form")) {
                for (int k = 0; k < r.subForm.size(); k++) {
                    fillTemplate(gv, pdfForm, r.subForm.get(k), basePath, fieldName, k, serverRoot, stamper,
                            oId);
                }
            } else if (r.type.equals("select1")) {

                Form form = survey.forms.get(r.fIdx);
                Question question = form.questions.get(r.qIdx);

                ArrayList<String> matches = new ArrayList<String>();
                matches.add(r.value);
                value = choiceManager.getLabel(sd, cResults, user, oId, survey.id, question.id, question.l_id,
                        question.external_choices, question.external_table,
                        survey.languages.get(languageIdx).name, languageIdx, matches, survey.ident);

            } else if (r.type.equals("select")) {

                String nameValue = r.value;
                if (nameValue != null) {
                    String vArray[] = nameValue.split(" ");
                    ArrayList<String> matches = new ArrayList<String>();
                    if (vArray != null) {
                        for (String v : vArray) {
                            matches.add(v);
                        }
                    }
                    Form form = survey.forms.get(r.fIdx);
                    Question question = form.questions.get(r.qIdx);
                    value = choiceManager.getLabel(sd, cResults, user, oId, survey.id, question.id,
                            question.l_id, question.external_choices, question.external_table,
                            survey.languages.get(languageIdx).name, languageIdx, matches, survey.ident);
                }

            } else if (r.type.equals("dateTime") || r.type.equals("timestamp")) {

                value = null;
                if (r.value != null) {
                    // Convert date to local time
                    DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
                    df.setTimeZone(TimeZone.getTimeZone("UTC"));
                    Date date = df.parse(r.value);
                    df.setTimeZone(TimeZone.getTimeZone(tz));
                    value = df.format(date);
                    log.info("Convert date to local time (template): " + r.name + " : " + r.value + " : "
                            + " : " + value + " : " + r.type + " : " + tz);
                }

            } else {
                value = r.value;
            }

            /*
             * Add the value to the form
             * Alternatively remove the fieldName if the value is empty.
             */
            if (value == null || value.trim().equals("")) {
                try {
                    pdfForm.removeField(fieldName);
                } catch (Exception e) {
                    log.info("Error removing field: " + fieldName + ": " + e.getMessage());
                }

            } else if (r.type.equals("geopoint") || r.type.equals("geoshape") || r.type.equals("geotrace")
                    || r.type.startsWith("geopolygon_") || r.type.startsWith("geolinestring_")) {

                PushbuttonField ad = pdfForm.getNewPushbuttonFromField(fieldName);
                if (ad != null) {
                    Image img = PdfUtilities.getMapImage(sd, di.map, r.value, di.location, di.zoom,
                            gv.mapbox_key, survey.id, user, di.markerColor);
                    PdfUtilities.addMapImageTemplate(pdfForm, ad, fieldName, img);
                } else {
                    log.info("No field for image (Mapbox not called: " + fieldName);
                }

            } else if (r.type.equals("image") || r.type.equals("video") || r.type.equals("audio")) {
                PdfUtilities.addImageTemplate(pdfForm, fieldName, basePath, value, serverRoot, stamper,
                        defaultFontLink);

            } else {
                if (hideLabel) {
                    try {
                        pdfForm.removeField(fieldName);
                    } catch (Exception e) {
                        log.info("Error removing field: " + fieldName + ": " + e.getMessage());
                    }
                } else {
                    if (di.isBarcode) {
                        PushbuttonField ad = pdfForm.getNewPushbuttonFromField(fieldName);
                        if (ad != null) {
                            BarcodeQRCode qrcode = new BarcodeQRCode(value.trim(), 1, 1, null);
                            Image qrcodeImage = qrcode.getImage();
                            qrcodeImage.setAbsolutePosition(10, 500);
                            qrcodeImage.scalePercent(200);
                            PdfUtilities.addMapImageTemplate(pdfForm, ad, fieldName, qrcodeImage);
                        }
                    } else {
                        pdfForm.setField(fieldName, value);

                    }
                }
            }

            /*
             * Add any QR code values to fields that have been identified using the QR suffix
             */
            if (fieldNameQR != null && value != null && value.trim().length() > 0) {
                PushbuttonField ad = pdfForm.getNewPushbuttonFromField(fieldName);
                if (ad != null) {
                    BarcodeQRCode qrcode = new BarcodeQRCode(value.trim(), 1, 1, null);
                    Image qrcodeImage = qrcode.getImage();
                    qrcodeImage.setAbsolutePosition(10, 500);
                    qrcodeImage.scalePercent(200);
                    PdfUtilities.addMapImageTemplate(pdfForm, ad, fieldNameQR, qrcodeImage);
                }
            }

        }
    } catch (Exception e) {
        log.log(Level.SEVERE, "Error filling template", e);
    }
}

From source file:org.smap.sdal.managers.PDFSurveyManager.java

License:Open Source License

private void updateValueCell(Parser parser, String remoteUser, PdfPCell valueCell, DisplayItem di,
        boolean generateBlank, String basePath, String serverRoot, GlobalVariables gv, int oId)
        throws Exception {

    // Questions that append their values to this question
    ArrayList<String> deps = gv.addToList.get(di.fIdx + "_" + di.rec_number + "_" + di.name);

    if (di.type.startsWith("select")) {
        processSelect(parser, remoteUser, valueCell, di, generateBlank, gv, oId);
    } else if (di.type.equals("image")) {
        if (di.value != null && !di.value.trim().equals("") && !di.value.trim().equals("Unknown")) {
            if (di.isHyperlink) {
                Anchor anchor = new Anchor(serverRoot + di.value);
                anchor.setReference(serverRoot + di.value);

                valueCell.addElement(getPara("", di, gv, deps, anchor));
            } else {
                try {
                    Image img = Image.getInstance(basePath + "/" + di.value);
                    valueCell.addElement(img);
                } catch (Exception e) {
                    log.info("Error: image " + basePath + "/" + di.value + " not added: " + e.getMessage());
                    log.log(Level.SEVERE, "Adding image to pdf", e);
                }// w  w w.  ja v a2 s  . c  om
            }

        } else {
            // TODO add empty image
        }

    } else if (di.type.equals("video") || di.type.equals("audio")) {
        if (di.value != null && !di.value.trim().equals("") && !di.value.trim().equals("Unknown")) {
            Anchor anchor = new Anchor(serverRoot + di.value);
            anchor.setReference(serverRoot + di.value);

            valueCell.addElement(getPara("", di, gv, deps, anchor));

        } else {
            // TODO add empty image
        }

    } else if (di.type.equals("geopoint") || di.type.equals("geoshape") || di.type.equals("geotrace")
            || di.type.startsWith("geopolygon_") || di.type.startsWith("geolinestring_")) {

        Image img = PdfUtilities.getMapImage(sd, di.map, di.value, di.location, di.zoom, gv.mapbox_key,
                survey.id, user, di.markerColor);

        if (img != null) {
            valueCell.addElement(img);
        } else {
            valueCell.addElement(getPara(" ", di, gv, deps, null));
        }

    } else if (di.isBarcode) {
        BarcodeQRCode qrcode = new BarcodeQRCode(di.value.trim(), 1, 1, null);
        Image qrcodeImage = qrcode.getImage();
        qrcodeImage.setAbsolutePosition(10, 500);
        qrcodeImage.scalePercent(200);

        valueCell.addElement((qrcodeImage));

    } else {
        // Todo process other question types
        String value = null;

        if (di.value == null || di.value.trim().length() == 0) {
            value = " "; // Need a space to show a blank row
        } else {
            if (di.value != null && di.value.length() > 0) {
                if (GeneralUtilityMethods.isRtlLanguage(di.value)) {
                    valueCell.setRunDirection(PdfWriter.RUN_DIRECTION_RTL);
                }
            }

            if (di.type.equals("dateTime") || di.type.equals("timestamp")) { // Set date time to local time

                DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
                df.setTimeZone(TimeZone.getTimeZone("UTC"));
                Date date = df.parse(di.value);
                df.setTimeZone(TimeZone.getTimeZone(tz));
                value = df.format(date);
                log.info("Convert date to local time: " + di.name + " : " + di.value + " : " + " : " + value
                        + " : " + di.type + " : " + tz);
            } else {
                value = di.value;
            }

        }
        valueCell.addElement(getPara(value, di, gv, deps, null));
    }
}

From source file:org.smap.sdal.managers.PDFTableManager.java

License:Open Source License

private PdfPCell addDisplayItem(Parser parser, KeyValue kv, String basePath, boolean barcode, String type)
        throws BadElementException, MalformedURLException, IOException {

    PdfPCell valueCell = new PdfPCell();
    valueCell.setBorderColor(BaseColor.LIGHT_GRAY);

    // Set the content of the value cell
    try {//from  w w  w .j  a va2  s.co m
        if (type != null && type.equals("image")) {
            Image img = Image.getInstance(kv.v);
            valueCell.addElement(img);
        } else if (barcode && kv.v.trim().length() > 0) {
            BarcodeQRCode qrcode = new BarcodeQRCode(kv.v.trim(), 1, 1, null);
            Image qrcodeImage = qrcode.getImage();
            qrcodeImage.setAbsolutePosition(10, 500);
            qrcodeImage.scalePercent(200);
            valueCell.addElement((qrcodeImage));
        } else {
            valueCell.addElement(getPara(kv.v));
        }
    } catch (Exception e) {
        log.info("Error updating value cell, continuing: " + basePath + " : " + kv.v);
        log.log(Level.SEVERE, "Exception", e);
    }

    return valueCell;
}

From source file:ro.nextreports.engine.exporter.ResultExporter.java

License:Apache License

private void generateBarcodeImage(BarcodeBandElement bandElement) {
    if (bean.getConnection() == null) {
        return;//from ww  w  .  ja  va 2s.  c  o m
    }
    int width = (bandElement.getWidth() == null) ? 1 : bandElement.getWidth();
    int height = (bandElement.getHeight() == null) ? 1 : bandElement.getHeight();
    String value = bandElement.getValue();
    if (bandElement.isColumn()) {
        try {
            value = String.valueOf(getResult().nextValue(value));
        } catch (QueryException e) {
            e.printStackTrace();
        }
    }
    Image image = null;
    if (BarcodeBandElement.isEANFamily(bandElement.getBarcodeType())) {
        BarcodeEAN codeEAN = new BarcodeEAN();
        codeEAN.setCodeType(bandElement.getBarcodeType());
        codeEAN.setCode(value);
        image = codeEAN.createAwtImage(Color.BLACK, Color.WHITE);
    } else {
        if (bandElement.getBarcodeType() == BarcodeBandElement.PDF417) {
            BarcodePDF417 barcode417 = new BarcodePDF417();
            barcode417.setText(value);
            image = barcode417.createAwtImage(Color.BLACK, Color.WHITE);
        } else if (bandElement.getBarcodeType() == BarcodeBandElement.DATAMATRIX) {
            BarcodeDatamatrix datamatrix = new BarcodeDatamatrix();
            try {
                datamatrix.generate(value);
            } catch (UnsupportedEncodingException e) {
                e.printStackTrace();
            }
            image = datamatrix.createAwtImage(Color.BLACK, Color.WHITE);
        } else if (bandElement.getBarcodeType() == BarcodeBandElement.QRCODE) {
            BarcodeQRCode qrcode = new BarcodeQRCode(value, width, height, null);
            image = qrcode.createAwtImage(Color.BLACK, Color.WHITE);
        } else {
            Barcode barcode = null;
            if (bandElement.getBarcodeType() == BarcodeBandElement.CODE128) {
                barcode = new Barcode128();
            } else if (bandElement.getBarcodeType() == BarcodeBandElement.CODE128_RAW) {
                barcode = new Barcode128();
                barcode.setCodeType(bandElement.getBarcodeType());
            } else if (bandElement.getBarcodeType() == BarcodeBandElement.INTER25) {
                barcode = new BarcodeInter25();
            } else if (bandElement.getBarcodeType() == BarcodeBandElement.CODE39) {
                barcode = new Barcode39();
            } else if (bandElement.getBarcodeType() == BarcodeBandElement.CODE39EXT) {
                barcode = new Barcode39();
                barcode.setStartStopText(false);
                barcode.setExtended(true);
            } else if (bandElement.getBarcodeType() == BarcodeBandElement.CODABAR) {
                barcode = new BarcodeCodabar();
            }
            barcode.setCode(value);
            image = barcode.createAwtImage(Color.BLACK, Color.WHITE);
        }
    }
    String imageName = saveBarcode(bandElement, toBufferedImage(image), "png");
    bandElement.setImage(imageName);
}

From source file:tn.esprit.twin1.brogrammers.eventify.Eventify.util.TicketGenerator.java

public static void GenerateTicket(Ticket ticket) {
    Document document = new Document();
    try {//  ww w. ja va  2 s.c o  m
        PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(FILE));
        Rectangle pagesize = new Rectangle(700, 300);
        document.open();
        Paragraph emptyline = new Paragraph();
        emptyline.add(new Paragraph(" "));
        document.setPageSize(pagesize);
        document.newPage();
        //PIC
        PdfContentByte canvas = writer.getDirectContentUnder();
        Image image = Image.getInstance(IMAGE);
        //image.scaleAbsolute(pagesize.rotate());
        image.setAbsolutePosition(0, 0);
        canvas.addImage(image);
        //PIC
        document.addTitle("Your Access To" + ticket.getEvent().getTitle());
        document.addSubject(ticket.getEvent().getTheme());
        document.addKeywords(ticket.getEvent().getTitle() + "Ticket");
        document.addAuthor("Mohamed Firas Ouertani");
        document.addCreator("Mohamed Firas Ouertani");
        Paragraph prefacetitle = new Paragraph();
        prefacetitle.add(new Paragraph("Your Ticket For " + ticket.getEvent().getTitle(), bigFont));
        document.add(prefacetitle);
        document.add(emptyline);

        Paragraph prefacetime = new Paragraph();
        prefacetime.add(new Paragraph(ticket.getEvent().getStartTime().toString(), greyFont));
        document.add(prefacetime);
        document.add(emptyline);
        document.add(emptyline);
        Paragraph prefacetype = new Paragraph();
        prefacetype.add(new Paragraph("You Reserved For: " + ticket.getTypeTicket(), catFont));
        document.add(prefacetype);
        //QR
        BarcodeQRCode qrcode = new BarcodeQRCode(
                "REF:#" + ticket.getEvent().getId() + "" + ticket.getEvent().getTitle().trim(), 1, 1, null);
        Image qrcodeImage = qrcode.getImage();
        qrcodeImage.setAbsolutePosition(520, 70);
        qrcodeImage.scalePercent(400);
        document.add(qrcodeImage);
        //QR

        //Bar
        PdfContentByte cb = writer.getDirectContent();
        Barcode128 code128 = new Barcode128();

        BarcodeEAN codeEAN = new BarcodeEAN();
        codeEAN.setCode("REF:#" + ticket.getEvent().getId() + "" + ticket.getEvent().getTitle().trim());
        codeEAN.setCodeType(BarcodeEAN.EAN13);
        Image codeEANImage = code128.createImageWithBarcode(cb, null, null);
        codeEANImage.setAbsolutePosition(10, 10);
        codeEANImage.scalePercent(125);
        document.add(codeEANImage);
        //Bar

        document.close();

    } catch (Exception e) {
        e.printStackTrace();
    }

}

From source file:tn.esprit.twin1.brogrammers.eventify.Eventify.util.TicketGenerator.java

public static void qr(Document document) {
    BarcodeQRCode qrcode = new BarcodeQRCode("fdf".trim(), 30, 30, null);
    Image qrcodeImage = null;//from  w  w w  . ja  v  a2  s. c o m
    try {
        qrcodeImage = qrcode.getImage();
    } catch (BadElementException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    qrcodeImage.setAbsolutePosition(10, 500);
    qrcodeImage.scalePercent(800);
    try {
        document.add(qrcodeImage);
    } catch (DocumentException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

}

From source file:utility.pdfRead.java

public void readPdfFromUrl(String url) throws MalformedURLException, Exception {
    URL urlnya = new URL(url);
    String namafile;/*from   w  ww  .  jav  a  2  s  .com*/
    Date d = new Date();
    // kode 
    String dataAkun = "Surat Keterangan Domisili Usaha dari Kelurahan dan Kecamatan yang masih berlaku atau Fotocopy dilegalisir Kecamatan";
    pdfRead myEncryptor = new pdfRead();
    String dataAkunEnkripsi = myEncryptor.encrypt(dataAkun);
    String dataAkunDekripsi = myEncryptor.decrypt(
            "AYxJhAMLk4fftR5XcqYDoUO4GaMY7sNX19k5SRxWWedGj6RB3tSUUmtdx1KHYf19EE1rLonm/3XikRnNoG/Q0rXkbiXO3QXHnmn2douw6SSwrirgYGoHmR3U4wmGUCxXqAERQFd5rdCZcK0CII7sPsb2uiTYqA97");

    System.out.println("Text Asli: " + dataAkun);
    System.out.println("Text Terenkripsi :" + dataAkunEnkripsi);
    System.out.println("Text Terdekripsi :" + dataAkunDekripsi);

    // kode 
    byte[] ba1 = new byte[5 * 1024];
    //        byte[] ba1 = new byte[10*1024];
    int baLength;
    InputStream is1 = null;
    ByteArrayOutputStream bios = new ByteArrayOutputStream();
    ByteArrayOutputStream biosPlusWatermark = new ByteArrayOutputStream();
    ByteArrayOutputStream biosPlusWatermarkQr = new ByteArrayOutputStream();
    AMedia amedia = null;
    try {

        //        report.setSrc(url);
        //            ssl disable
        // Create a trust manager that does not validate certificate chains
        TrustManager[] trustAllCerts = new TrustManager[] { new X509TrustManager() {
            public java.security.cert.X509Certificate[] getAcceptedIssuers() {
                return null;
            }

            public void checkClientTrusted(X509Certificate[] certs, String authType) {
            }

            public void checkServerTrusted(X509Certificate[] certs, String authType) {
            }
        } };

        // Install the all-trusting trust manager
        SSLContext sc = SSLContext.getInstance("SSL");
        sc.init(null, trustAllCerts, new java.security.SecureRandom());
        HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());

        // Create all-trusting host name verifier
        HostnameVerifier allHostsValid = new HostnameVerifier() {
            public boolean verify(String hostname, SSLSession session) {
                return true;
            }
        };

        // Install the all-trusting host verifier
        HttpsURLConnection.setDefaultHostnameVerifier(allHostsValid);

        URLConnection urlConn = urlnya.openConnection();
        try {

            // Read the PDF from the URL and save to a local file
            is1 = urlnya.openStream();
            while ((baLength = is1.read(ba1)) != -1) {
                bios.write(ba1, 0, baLength);
            }
        } catch (Exception e) {
        } finally {

            is1.close();
            bios.close();
        }

        // add watermark
        try {
            PdfReader reader = new PdfReader(bios.toByteArray());
            int n = reader.getNumberOfPages();
            // create a stamper that will copy the document to a new file
            try {
                // Read the PDF from the URL and save to a local file
                is1 = urlnya.openStream();
                while ((baLength = is1.read(ba1)) != -1) {
                    biosPlusWatermark.write(ba1, 0, baLength);
                }
            } catch (Exception e) {
            } finally {

                is1.close();
                biosPlusWatermark.close();
            }

            PdfStamper stamp = new PdfStamper(reader, biosPlusWatermark, '\0', true);
            int i = 0;
            PdfContentByte under;

            Image img = Image.getInstance("img/watermark.png");
            img.setTransparency(new int[] { 0x00, 0x10 });
            img.setAbsolutePosition(0, 0);
            while (i < n) {
                i++;
                under = stamp.getOverContent(i);
                under.addImage(img);
            }
            stamp.close();
        } catch (Exception e) {
            System.out.println("err watermark:" + e);
            amedia = new AMedia("Dokumen", "pdf", "application/pdf", bios.toByteArray());
        }
        // add QRcode
        try {
            PdfReader reader = new PdfReader(biosPlusWatermark.toByteArray());

            int n = reader.getNumberOfPages();
            BarcodeQRCode qrcode = new BarcodeQRCode(dataAkunEnkripsi, 50, 50, null);
            Image image = qrcode.getImage();
            Image mask = qrcode.getImage();
            mask.makeMask();
            image.setImageMask(mask);
            // create a stamper that will copy the document to a new file
            try {
                // Read the PDF from the URL and save to a local file
                is1 = urlnya.openStream();
                while ((baLength = is1.read(ba1)) != -1) {
                    biosPlusWatermarkQr.write(ba1, 0, baLength);
                }
            } catch (Exception e) {
            } finally {
                is1.close();
                biosPlusWatermarkQr.close();
            }

            PdfStamper stamp = new PdfStamper(reader, biosPlusWatermarkQr, '\0', false);
            int i = 0;
            PdfContentByte under;
            Image img = Image.getInstance(image);
            img.setTransparency(new int[] { 0x00, 0x10 });
            img.setAbsolutePosition(0, 0);
            while (i < n) {
                i++;
                under = stamp.getOverContent(i);
                under.addImage(img);
            }
            stamp.close();
            amedia = new AMedia("Dokumen", "pdf", "application/pdf", biosPlusWatermarkQr.toByteArray());
        } catch (Exception e) {
            System.out.println("err qrcode:" + e);
            amedia = new AMedia("Dokumen", "pdf", "application/pdf", bios.toByteArray());
        }

        report.setContent(amedia);

    } catch (Exception e) {
        System.out.println("url tidak dapat diakses");
    }

}