21 Nisan 2015 Salı

Pdf to Excel

      S.a. rkadaşlar,
      Bugün elimizde bulunan pdf dosyalarını excele çevirmeye çalışacağız. İnternetten bir çok program bulmamıza rağmen istediğimiz işi tam olarak yapan bir program bulamadık. Daha önce de benzer işlemler yaptığımız için kendi kendimize çevirelim dedik ve daha sonra bunu sizlerle de paylaşalım dedik. İnternette çok farklı yöntemler, çok farklı kütüphaneler mevcut. Biz de buna ek olarak kendi projemizi yazdık, dediğimiz gibi kendi pdf formatımızı göz önünde bulundurarak yazdık. Sizler de bunu kendi isteğinize göre kolaylıkla çevirebilirsiniz diye düşünüyoruz. Şimdi kodumuzu yazmaya başlıyoruz.



     try {
            String text;
            String sutun[][] = new String[100][6];
            String pdf = "YourPdFPath";
            PdfReader reader = new PdfReader(pdf);//pdf okuma
            //pdfi okur ve parçalar
            PdfReaderContentParser parser = new PdfReaderContentParser(reader);
            //Excel dosyası oluşturuluyor
            FileOutputStream fos = new FileOutputStream(pdf + ".xls");
         
            //Excel odosyası oluşturma
            HSSFWorkbook workBook = new HSSFWorkbook();
            //Sayfa açıyoruz. Ekstra sayfalar da açabiliriz.
            HSSFSheet spreadSheet = workBook.createSheet("malikmasis.blogspot.com.tr");
            HSSFCell cell;
            HSSFRow row;
         
            //pdfi okuma işlemi ve parçalama işlemleri başlıyor
            for (int i = 1; i <= reader.getNumberOfPages(); i++) {
                TextExtractionStrategy strategy = parser.processContent(i, new SimpleTextExtractionStrategy());
                text = strategy.getResultantText();
                //satır satır alıyoruz
                String s1[] = text.split("\n");
                System.out.println("Boyut:" + s1.length);
                //satırları da bölüyoruz. Fakat burada Biz bir tek tipi pdfi 
                //çevirdiğimiz için değerleri static girdik. 
                //Burada farklı algoritmalar yazılabilir.
                for (int k = 29; k < s1.length - 1; k++) {
                    System.out.println("||" + s1[k] + "." + k + ".." + s1.length);
                    //satirlari excel yazıyoruz
                    row = spreadSheet.createRow(k - 29);
                    String satirSatir = s1[k];
                    for (int j = 0; j < s1.length; j++) {
                        sutun[j][0] = satirSatir.substring(0, 1);
                        sutun[j][1] = satirSatir.substring(2, 13);
                        sutun[j][2] = satirSatir.substring(14, 30);
                        sutun[j][3] = satirSatir.substring(32, 42);
                        sutun[j][4] = satirSatir.substring(50, 58);
                        sutun[j][5] = satirSatir.substring(59, 65);

                    }
                    for (int h = 0; h < 6; h++) {
                        //Sutünları excele yazıyoruz
                        cell = row.createCell((short) h);
                        cell.setCellValue(sutun[k - 29][h]);
                        System.out.println("--" + sutun[k - 29][h]);
                        cell.setCellType(HSSFCell.CELL_TYPE_STRING);
                    }
                }
            }
            //en son da açtığımız bağlantıları kapatıyoruz
            workBook.write(fos);
            fos.close();
            reader.close();

        }

     Kodlarımızda her zamanki yorum satırları mevcut. Nerede hangi işlemi yaptığımızı elimizden geldiğince açıklamaya çalışıyoruz. Aklınıza takılan bir yer olursa çekinmeden sorun. Ayrıca burada 2tane kütüphane kullandık. İkisi de ücretsiz. Maven projesi olarak oluşturursanız projelerinizi jarları aramak zorunda kalmazsınız o açıdan çok daha rahat edersiniz. Fakat ben yine de buradan 2jarın da yolunu vereceğim, fakat daha büyük projelerde bunun baş ağrısını çekerseniz veya kütüphane güncellenirken bunların hepsini tek tek güncellemektense kolaylıkla pom.xml içerisinde halledilebilir. Jarları buradan ve buradan  indirebilirsiniz.

Hiç yorum yok:

Yorum Gönder