开发者

Java itext can't create pdf under windows, on ubuntu works fine

开发者 https://www.devze.com 2023-03-05 04:18 出处:网络
I have public class Pdf { private static float FONTSIZE = 8; public void open(String filename) throws Exception

I have

public class Pdf {

    private static float FONTSIZE = 8;


    public void open(String filename) throws Exception
    {
        /*
        File f = new File(PATH + filename);
        if(f.exists() == true)
        {
            Runtime.getRuntime().exec("gnome-open " + PATH + filename);
            //Runtime.getRuntime().exec("rundll32 url.dll,FileProtocolHandler C:/pdf/test.pdf"); // WINDOWS
        }
        else
        {
            init(filename);
        }
        */
        init(filename +".pdf");
        Runtime.getRuntime().exec("gnome-open " + Config.PATH + filename +".pdf");
    }

    public void init(String filename) throws Exception
    {
        Document doc = new Document(PageSize.A4);
        doc.setMargins(10, 10, 10, 10);

        PdfWriter writer = PdfWriter.getInstance(doc, new FileOutputStream(Config.PATH + filename));

        doc.open();
        doc.addTitle("incasation");

        PdfPTable header = new PdfPTable(5);
        float[] widths = {5.6f, 6, 8, 5, 5};
        header.setWidths(widths);
        header.setHorizontalAlignment(Element.ALIGN_CENTER);
        header.setWidthPercentage(100);
        header.setSpacingAfter(4);

        header.addCell(cell("Data: 20.04.2011", 0));
        PdfPCell pkt = cell("Punct de lucru: COM COM COM COM COM COM COM COM COM COM COM COM COM COM COM", 0);
            pkt.setColspan(2);
        header.addCell(pkt);
        PdfPCell cmp = cell("Company: SC ANC CNE", 0);
            cmp.setColspan(2);
        header.addCell(cmp);    
        PdfPCell pdate = cell("Ultima incasare: 06.03.2011", 0);

        header.addCell(pdate);
        header.addCell(cell("Zona: ADAAA", 0));
        header.addCell(cell("Operator: SOME ONE SPECIAL", 0));
        header.addCell(cell("Procent locatie: 45%", 0));
        header.addCell(cell("Metoda de plata: cash", 0));

        doc.add(header);

        Image img = Image.getInstance(Config.PATH +"tabelka.png");
        img.scalePercent(25, 25);


        // ON TOP
        PdfContentByte cb = writer.getDirectContent();
        BaseFont bf = BaseFont.createFont(BaseFont.HELVETICA, "Cp1250", false);
        cb.setFontAndSize(bf, FONTSIZE);
        cb.beginText();     

        float x = doc.getPageSize().getHeight() - 4;

        float start = x;
        int j = 0;

        for(int i=0; i< 5; i++)
        {           
            j++;
            if(i > 0 && i % 5 == 0)
            {
                cb.endText();
                doc.newPage();

                cb = writer.getDirectContent();
                cb.setFontAndSize(bf, FONTSIZE);
                cb.beginText();

                start = x;
                j = 1;
            }
            doc.add(img);


            cb.showTextAligned(PdfContentByte.ALIGN_LEFT, "0305/HS", 75, start- 53, 0);
            cb.showTextAligned(PdfContentByte.ALIGN_LEFT, "VUKA-HS-025", 75, start - 67.5f, 0);

            // ELEC
            // IN
            cb.showTextAligned(PdfContentByte.ALIGN_RIGHT, "000001", 293, start - 67.5f, 0);
            cb.showTextAligned(PdfContentByte.ALIGN_RIGHT, "000003", 365, start - 67.5f, 0);
            cb.showTextAligned(PdfContentByte.ALIGN_RIGHT, "000002", 440, start - 67.5f, 0);

            // OUT
            cb.showTextAligned(PdfContentByte.ALIGN_RIGHT, "000001", 293, start - 82, 0);
            cb.showTextAligned(PdfContentByte.ALIGN_RIGHT, "000003", 365, start - 82, 0);
            cb.showTextAligned(PdfContentByte.ALIGN_RIGHT, "000002", 440, start - 82, 0);

            // SUM
            cb.showTextAligned(PdfContentByte.ALIGN_CENTER, "0.50", 465, start - 73.5f, 0);     
            cb.showTextAligned(PdfContentByte.ALIGN_RIGHT, "999.0", 565, start - 73.5f, 0);

            // MECH
            // IN
            cb.showTextAligned(PdfContentByte.ALIGN_RIGHT, "000001", 293, start - 110, 0);
            cb.showTextAligned(PdfContentByte.ALIGN_RIGHT, "000003", 365, start - 110, 0);
            cb.showTextAligned(PdfContentByte.ALIGN_RIGHT, "000002", 440, start - 110, 0);

            // OUT
            cb.showTextAligned(PdfContentByte.ALIGN_RIGHT, "000001", 293, start - 124, 0);
            cb.showTextAligned(PdfContentByte.ALIGN_RIGHT, "000003", 365, start - 124, 0);
            cb.showTextAligned(PdfContentByte.ALIGN_RIGHT, "000002", 440, start - 124, 0);

            // SUM
            cb.showTextAligned(PdfContentByte.ALIGN_CENTER, "0.50", 465, start - 115.5f, 0);        
            cb.showTextAligned(PdfContentByte.ALIGN_RIGHT, "999.0", 565, start - 115.5f, 0);

            /// COINS AND NOTES
            cb.showTextAligned(PdfContentByte.ALIGN_RIGHT, "0.5", 156, start - 82, 0);
            cb.showTextAligned(PdfContentByte.ALIGN_RIGHT, "1", 156, start - 95.5f, 0);
            cb.showTextAligned(PdfContentByte.ALIGN_RIGHT, "5", 156, start - 110, 0);
            cb.showTextAligned(PdfContentByte.ALIGN_RIGHT, "10", 156, start - 124, 0);
            cb.showTextAligned(PdfContentByte.ALIGN_RIGHT, "50", 156, start - 138, 0);
            cb.showTextAligned(PdfContentByte.ALIGN_RIGHT, "100", 156, start - 152, 0);

            // COMMENTS
            cb.showTextAligned(PdfContentByte.ALIGN_LEFT, "comments...", 205, start - 138.5f, 0);

            start = (x - (img.getHeight() * 0.25f) * j);
        }
        //doc.add(content);
        cb.endText();
        // END

        PdfPTable footer = new PdfPTable(5);
        footer.setHorizontalAlignment(Element.ALIGN_CENTER);
        footer.setWidthPercentage(100);

        footer.addCell(cell("Total sum: 3397.50", 0));
        footer.addCell(cell("Total pierderi: 0.00", 0));
        footer.addCell(cell("Total taxa: 0.00", 0));
        footer.addCell(cell("Baza de calcul: 3397.50", 0));
        footer.addCell(cell("Locatie: 1528.88", 0));

        PdfPCell b = cell("Num. de ordine al primului bilet: 0", 0);
            b.setColspan(2);
        footer.addCell(b);
        footer.addCell(cell("Num. de tichete: 0", 0));
        footer.addCell(cell("Corectie tichete: 0", 0));
        footer.addCell(cell("Total bilete: 0.00", 0));

        PdfPCell b1 = cell("Num de ordine al ultimului bilet: 0", 0);
            b1.setColspan(3);
        footer.addCell(b1);

        PdfPCell t = cell("Bani ce trebuiesc viratii: 18.441", 0);
            t.setColspan(2);
        footer.addCell(t);

        PdfPCell s = cell("Suma de bani platita: de clienti", 0);
            s.setColspan(5);
        footer.addCell(s);

        PdfPCell o = cell("Obs: ", 0);
            o.setColspan(5);
        footer.addCell(o);
        doc.add(footer);

        PdfContentByte cb1 = writer.getDirectContent();
        BaseFont bf1 = BaseFont.createFont(BaseFont.HELVETICA, "Cp1250", false);
        cb1.setFontAndSize(bf1, FONTSIZE);
        cb1.beginText();    

        cb1.showTextAligned(PdfContentByte.ALIGN_RIGHT, "Semnatura Reprezentant Firma", 130, start - 210, 0);
        cb1.showTextAligned(PdfContentByte.ALIGN_CENTER, "Semnatura & Stampila Reprezentant", 500, start - 210, 0);
        cb1.showTextAligned(PdfContentByte.ALIGN_CENTER, "Pemct de lucru", 500, start - 220, 0);
        cb1.endText();
        // CLOSE
        doc.close();
    }

    public PdfPCell cell(String txt, int border)
    {
        Font font = new Font(Font.FontFamily.HELVETICA, FONTSIZE);
 开发者_StackOverflow       Paragraph p = new Paragraph(txt, font);
            p.setSpacingAfter(0);
        PdfPCell cell = new PdfPCell(p);
        cell.setBorder(border);
        return cell;
    }

}

I have export my project to jar, then compile it to exe on windows and pdf dont work. Class create file pdf with 0kb. What can be wrong ?

0

精彩评论

暂无评论...
验证码 换一张
取 消