Merhaba arkadaşlar, elimde 30.000 adet pdf var. Bu pdf sayfalar müşteri bilgilerini barındırıyor. Her bir pdf de müşteriye ait bilgiler var. Bu pdf lerde bulunan bilgileri veritabanina aktarmak istiyorum. 30.000 kişinin adı, soyadı, telefon numarası, adresi, araç bilgileri, çalıştığı iş yeri vb. bilgiler kayıtlı.
Her sayfadaki bilgileri ilgili sutunlara aktarmak istiyorum. Böylece tüm müşterilere ait elimde veri bankası olacak ve arama yöntemi ile araç sahibi olanları ayrı, meslek gruplarına göre ayrı ayrı, cinsiyet ve yaş durumlarına göre ayrı ayrı kategorilemek için veritabanı yapmak istiyorum.
Danışmak istediğim husus: pdf den verileri ayrı ayrı arayarak veritabanına çekmem mümkün mü?
Her PDF form şeklinde yani her bilginin yeri PDF icinde aynı yerde..
PDF veri toplama ve veritabanına kaydetme..
iTextSharp kullanarak PDF belgelerinizin içeriğini okuyabilirsiniz. İşin klasördeki PDF leri dolaşması, okunanları farklı bir yere taşıması, hatalı olanların loglanması gibi pek çok yan işlerini unutmamak lazım
AccessTr.Net teknik konular içeren bir sitedir. Bu tip sitelerde en iyi şekilde yardım alabilmeniz için Site Kurallarını mutlaka okumanız ve buna göre hareket etmeniz lazım.
(01/10/2017, 23:01)Uğur ŞİRİN yazdı: Merhaba arkadaşlar, elimde 30.000 adet pdf var. Bu pdf sayfalar müşteri bilgilerini barındırıyor. Her bir pdf de müşteriye ait bilgiler var. Bu pdf lerde bulunan bilgileri veritabanina aktarmak istiyorum. 30.000 kişinin adı, soyadı, telefon numarası, adresi, araç bilgileri, çalıştığı iş yeri vb. bilgiler kayıtlı.
Her sayfadaki bilgileri ilgili sutunlara aktarmak istiyorum. Böylece tüm müşterilere ait elimde veri bankası olacak ve arama yöntemi ile araç sahibi olanları ayrı, meslek gruplarına göre ayrı ayrı, cinsiyet ve yaş durumlarına göre ayrı ayrı kategorilemek için veritabanı yapmak istiyorum.
Danışmak istediğim husus: pdf den verileri ayrı ayrı arayarak veritabanına çekmem mümkün mü?
Her PDF form şeklinde yani her bilginin yeri PDF icinde aynı yerde..
Ben kdv, geçici tahakkuklarını önce datagridde yolu ile listeletiyorum aynı anda ödemesi çıkanlarıda açtırıp şu şekilde okutuyorum.
Örnek kod :
Public Function ParsePdfText(ByVal sourcePDF As String, Optional ByVal fromPageNum As Integer = 0, Optional ByVal toPageNum As Integer = 0) As String
Dim sb As New System.Text.StringBuilder()
Dim reader As New PdfReader(sourcePDF)
Dim pageBytes() As Byte = Nothing
Dim raFile As iTextSharp.text.pdf.RandomAccessFileOrArray = Nothing
raFile = New iTextSharp.text.pdf.RandomAccessFileOrArray(sourcePDF)
Dim token As PRTokeniser = New iTextSharp.text.pdf.PRTokeniser(raFile)
Dim tknType As Integer = -1
Dim tknValue As String = String.Empty
If fromPageNum = 0 Then
fromPageNum = 1
End If
If toPageNum = 0 Then
toPageNum = reader.NumberOfPages
End If
If fromPageNum > toPageNum Then
Throw New ApplicationException("Parameter error: The value of fromPageNum can not be larger than the value of toPageNum")
End If
For i As Integer = fromPageNum To toPageNum Step 1
pageBytes = reader.GetPageContent(i)
If Not IsNothing(pageBytes) Then
' token = New iTextSharp.text.pdf.PRTokeniser(pageBytes)
While token.NextToken()
tknType = token.TokenType()
tknValue = token.StringValue
Select Case tknType
Case iTextSharp.text.pdf.PRTokeniser.TokType.NUMBER '1
Dim dValue As Double
If Double.TryParse(tknValue, dValue) Then
If dValue < -8000 Then
sb.Append(ControlChars.Tab)
End If
End If
Case iTextSharp.text.pdf.PRTokeniser.TokType.STRING '2
sb.Append(token.StringValue)
Case iTextSharp.text.pdf.PRTokeniser.TokType.NAME '3
'Ignore
Case iTextSharp.text.pdf.PRTokeniser.TokType.COMMENT '4
'Ignore
Case iTextSharp.text.pdf.PRTokeniser.TokType.START_ARRAY '5
'Ignore
Case iTextSharp.text.pdf.PRTokeniser.TokType.END_ARRAY '6
sb.Append(" ")
Case iTextSharp.text.pdf.PRTokeniser.TokType.START_DIC '7
'Ignore
Case iTextSharp.text.pdf.PRTokeniser.TokType.END_DIC '8
'Ignore
Case iTextSharp.text.pdf.PRTokeniser.TokType.REF '9
'Ignore
Case iTextSharp.text.pdf.PRTokeniser.TokType.OTHER '10
Select Case tknValue
Case "TJ"
sb.Append(" ")
Case "ET", "TD", "Td", "Tm", "T*"
sb.Append(Environment.NewLine)
End Select
End Select
End While
End If
Next i
Return sb.ToString()
End Function
Public Function PDFToText(file As String) As String
Using reader As New PdfReader(file)
Dim text As New StringBuilder()
For i As Integer = 1 To reader.NumberOfPages
text.Append(PdfTextExtractor.GetTextFromPage(reader, i))
Next
Return text.ToString()
End Using
End Function
Public Function TRSiz(ByVal vdata As String) As String
Dim tmp As String
tmp = Replace(vdata, "Ý", "İ")
tmp = Replace(tmp, "ý", "ı")
tmp = Replace(tmp, "Ð", "Ğ")
tmp = Replace(tmp, "ğ", "g")
tmp = Replace(tmp, "Þ", "Ş")
tmp = Replace(tmp, "þ", "ş")
TRSiz = tmp
End Function
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim Secim As Boolean
For Each Ana_Klasor In Directory.GetDirectories(TextBox1.Text)
Dim Mukellef_Isim As New System.IO.FileInfo(Ana_Klasor)
If Ana_Klasor.ToString.Length > 0 Then
Try
For Each Donemi In Directory.GetDirectories(Ana_Klasor, "08 2017" & "-" & "08 2017", SearchOption.AllDirectories)
Dim Donem_Klasor As New System.IO.FileInfo(Donemi)
For Each Evrak In Directory.GetFiles(Donemi)
Dim Evraklar As New System.IO.FileInfo(Evrak)
If Evrak.Contains("KDV1_tahakkuk") Or Evrak.Contains("KDV2_tahakkuk") Then
Dim Dizi() As String
Dizi = Evraklar.Name.Split("_")
Dim yol As String = Ana_Klasor & "\" & Donem_Klasor.Name & "\" & Evraklar.Name
' Dim oku As String = TRSiz(yol).Substring(yazitoplam + 6, yaziislem - yazitoplam - 6)
Dim str99 As String = PDFToText(yol)
Dim i As Integer = TRSiz(str99).IndexOf("TOPLAM")
Dim c As Integer = TRSiz(str99).IndexOf("İşlem")
Dim x As Integer = TRSiz(str99).IndexOf("VADESİ")
Dim str98 As String = TRSiz(str99).Substring(x + 6, c - x - 6)
Dim w As Integer = TRSiz(str98).IndexOf("/")
Dim str97 As String = TRSiz(str98).Substring(w - 2, 10)
Dim oku As String = TRSiz(str99).Substring(i + 6, c - i - 6)
DataGridView1.Rows.Add(Secim, Mukellef_Isim.Name, Donem_Klasor.Name, Dizi(0) & " " & UCase(Dizi(1)), Ana_Klasor & "\" & Donem_Klasor.Name & "\" & Evraklar.Name, Evraklar.LastAccessTime, oku)
End If
Next
Next
Catch ex As Exception
End Try
End If
Next
End Sub
Kodlar işine yarıyacaktır.
drummers, 11-05-2009 tarihinden beri AccessTr.neT üyesidir.
Şu soruyu sorupta verilen cevaplara yanıt vermiyorlarmı insanı hakikaten merak ediyor. Madem takip etmeyeceksiniz neden soru soruyorsunuz? Konuyu çözülmüş konulara taşıyorum.
AccessTr.Net teknik konular içeren bir sitedir. Bu tip sitelerde en iyi şekilde yardım alabilmeniz için Site Kurallarını mutlaka okumanız ve buna göre hareket etmeniz lazım.
Konuyu Okuyanlar: 1 Ziyaretçi