Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
PDF dosyasından veri almak
#11
C# çözümü işinize yarayacaksa, bir çok tablodan ve parametre/tablo yapısı değişken olan karmaşık bir pdf kalıbı üzerine bir çok dille çokça zaman harcadım, kendi adıma en kusursuz çözümü şöyle elde ettim, kendi projemden düzenleyerek kopyalıyorum.

iTextSharp paketini kurun
using iTextSharp.text.pdf;
using iTextSharp.text.pdf.parser;
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Threading.Tasks;
using System.Windows.Forms;
using static PdfHelper;

namespace PdfParser
{
   public partial class Form1 : Form
   {
       public Form1()
       {
           InitializeComponent();
           webView2.CoreWebView2InitializationCompleted += (sender, e) =>
           {
               webView2.CoreWebView2.DownloadStarting += (s, args) =>
               {
                   // İndirme başladığında indirme panelini temizle
                   args.Cancel = false;
               };
           };
       }

       string klasorYolu = "PDFLER";
       
       public static string PDFtoText(string pdfFilePath)
       {
           using (PdfReader reader = new PdfReader(pdfFilePath))
           {
               int pageNumber = 1;
               PdfDictionary page = reader.GetPageN(pageNumber);

               ITextExtractionStrategy strategy = new SimpleTextExtractionStrategy();
               string pageText = PdfTextExtractor.GetTextFromPage(reader, pageNumber);

               return pageText;
           }
       }

       private async void button1_Click(object sender, EventArgs e)
       {
           string text;
           string pdfDosyaYolu;
           pdfDosyaYolu = "uc.pdf";
           text = PDFtoText(pdfDosyaYolu);
           MessageBox.Show(text);
       }
   }
}

Buna rağmen bolca regex metotları da yazmam gerekti, mutlaka daha iyi çözümler vardır.
Cevapla
#12
Merak edip Adobe API'lerini bir test edeyim dedim. 

(örnek PDF'ler ve onların metin çıktılarını bu mesaj ekine bırakıyorum)

Word Dosya üretilip bir adet SaveToPDF yapıldı bir adet de PrintToPDF yapılarak iki farklı PDF dosya üretildi. Adobe gönderdiğiniz pdf'leri (1) günlük süreli dosya konumuna alıyor ve oradan işlem yapıyor. ertesi gün siliniyormuş. 

C# ve Python örnekleriniz yerel çözümler ürettiği için (öyle görünüyor) mümkünse öncelikle yerel çözümlerin tercih edilmesini öneririm. 

eww7enmnt7235vnhkith.png

SaveAsPDF olanı ile  PrintToPDF olanında üretilen JSON'lar benzeri şekilde oldu. Bu mesaj ekinden indirip inceleyebilirsiniz. Standart dışı yazı tipi vs. TR harf sorunu olur mu bilemiyorum ayrıca denemek lazım.

File: C:\ARMAN.Study\Belgelerim\_ProgramSource\_AR-GE\VCL_AdobeAPI\Win32\Debug\Sample\TR_SaveAsPDF.pdf
urn:aaid:AS:EW1:f2bb92c4-751c-4b13-b662-eae5c3a960c3

https://pdf-services-ew1.adobe.io/operation/extractpdf/7WCC5lgKh1bdLpM5MgNldkHtXejpgBC5/status
{
   "status": "in progress"
}



AssetId : urn:aaid:AS:EW1:ffcb5bb2-1f4a-48af-b2d9-824372c61ba2
MetaData: {"type":"application\/json","size":29574}
Content :
https://dcplatformstorageservice-prod-eu-west-1.s3.amazonaws.com/704285bfba4c4881a60baf4ac97e5511_25431D5D66DA91590A495E2D%40techacct.adobe.com/e2cbb132-0458-4487-8eda-45522598d130?X-Amz-Security-Token=IQoJb3JpZ2luX2VjEP%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2FwEaCWV1LXdlc3QtMSJIMEYCIQC%2Fni50SHikLPdSudaHbvkngA5oCrY67P0MNmBwj4O7XwIhALyDbZncesJcj73PlrRrbqPoj%2BW0IOPYqYgq5iQ3XmWCKqsFCCgQABoMNDIwNTMzNDQ1OTgyIgxVyp0VX3yTIjM3z0sqiAUJZdSztCxF6u2wTipvKKWn6MfQcG%2BW8p%2BswyZYZZDzV4Nv4sehAMSVcWJOKHmleMwL%2FFPxntsUs5szjekla54baIYVkvoPpvCTWmpcAEuHdaRSqEuaLvoqTu4KejIgG56EEwSnfLPqSjDWyAdx9ufUw85LmuzN24HvIxfJF7c%2BhHHUB3dL7lsxINxOQ7Ad%2FQDoqcFoH%2FfHbEaylfmXnGDMSyyPr49Wl0f1fagRHs6rNKCcy2gFpmhX5dRUpD7w2PkvuT%2F0Xx5LwuWL8aYSCZSn7y7aOEwIeHqjOz3wXb2xp5g5WSFO8agvpUO8Ojqe3z%2BDCbO7AKQAZSMovnb%2B%2F2sunyUMMqMDUlFhpSNuV7QJ4%2FokC4Qtp1uOtmcvHbA3WUlLXk%2B5smKZHGDpOHxd%2F3lfUAYv94NVzJzYFDmGpA35z9dsKtIosP7EqaWZOaBKqnw0ZYPRRLMUHgwuFbVeJjovGiMyVYO1V%2BDFXLYemKorK7Vm7nR0UD8GKUjKE2htZjMyq%2Foo1zzr9CgZNm5hoQiCHeLwvtSOYSrayqCe1V3xQ19RVfTsG3CUtQrIqJV2S%2FxWzFkneZCtZtJR0xgrgNZKpdAOc9KJVvVU2BYktILurycLcoHXCwntRW0rEWiagV284X0uhWR5kKM8s2sicoew%2BHNL5EZ2MHAkCsKHjErhABvJqNEaU7L%2FDMISorljhMNw%2BxKCTrmeGCq4SlUVE70oz6CP0aLBw084XNhrLkR8xGNSLPuZjTmiEiKFo28V44OG1Dz6H%2F0WihV5%2FlILK9auV63qJd0ixsAzjwaHOEbLLKbJsQV8IXxuX8ZLyvetbMZ%2Fgh9TMktBNr7rB8q8%2Bsgc0JVvvY1%2BEjkwu%2FjvtgY6qAEjncEWc55W87NtTyoBraiqgeQmGzZEVjkuC4JW%2BCeQoq2giEU%2BDI44Wf3oXB9sox%2BnJOHOE%2FbxxEhbVXL1Ls6pROGdfX9geg33KqSvWLdglg9dNMmz989kMdspbY%2BShARDovmva1h50%2FMc7i6RILCdu%2FZW5neNkTMEdcJ%2F53s7MRDbVNQofysJoxcXzBT6uQQjkSxc9vA70Ys5pokbwosvY2C%2FSDIQ9QM%3D&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=20240907T072629Z&X-Amz-SignedHeaders=host&X-Amz-Expires=3600&X-Amz-Credential=ASIAWD2N7EVPNLF5H65Q%2F20240907%2Feu-west-1%2Fs3%2Faws4_request&X-Amz-Signature=4aa610f26e5d4b01700a4920b15f49d3720d500f952b187e214a96491358e39b

AssetId : urn:aaid:AS:EW1:a0797fec-cc8e-4e3c-a1b7-dd3a6c9cc0a4
metadata: {"type":"application\/zip","size":8256}
Resource :
https://dcplatformstorageservice-prod-eu-west-1.s3.amazonaws.com/704285bfba4c4881a60baf4ac97e5511_25431D5D66DA91590A495E2D%40techacct.adobe.com/fb457a3b-6cdb-4464-9129-0dac9ff19769?X-Amz-Security-Token=IQoJb3JpZ2luX2VjEP%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2FwEaCWV1LXdlc3QtMSJIMEYCIQC%2Fni50SHikLPdSudaHbvkngA5oCrY67P0MNmBwj4O7XwIhALyDbZncesJcj73PlrRrbqPoj%2BW0IOPYqYgq5iQ3XmWCKqsFCCgQABoMNDIwNTMzNDQ1OTgyIgxVyp0VX3yTIjM3z0sqiAUJZdSztCxF6u2wTipvKKWn6MfQcG%2BW8p%2BswyZYZZDzV4Nv4sehAMSVcWJOKHmleMwL%2FFPxntsUs5szjekla54baIYVkvoPpvCTWmpcAEuHdaRSqEuaLvoqTu4KejIgG56EEwSnfLPqSjDWyAdx9ufUw85LmuzN24HvIxfJF7c%2BhHHUB3dL7lsxINxOQ7Ad%2FQDoqcFoH%2FfHbEaylfmXnGDMSyyPr49Wl0f1fagRHs6rNKCcy2gFpmhX5dRUpD7w2PkvuT%2F0Xx5LwuWL8aYSCZSn7y7aOEwIeHqjOz3wXb2xp5g5WSFO8agvpUO8Ojqe3z%2BDCbO7AKQAZSMovnb%2B%2F2sunyUMMqMDUlFhpSNuV7QJ4%2FokC4Qtp1uOtmcvHbA3WUlLXk%2B5smKZHGDpOHxd%2F3lfUAYv94NVzJzYFDmGpA35z9dsKtIosP7EqaWZOaBKqnw0ZYPRRLMUHgwuFbVeJjovGiMyVYO1V%2BDFXLYemKorK7Vm7nR0UD8GKUjKE2htZjMyq%2Foo1zzr9CgZNm5hoQiCHeLwvtSOYSrayqCe1V3xQ19RVfTsG3CUtQrIqJV2S%2FxWzFkneZCtZtJR0xgrgNZKpdAOc9KJVvVU2BYktILurycLcoHXCwntRW0rEWiagV284X0uhWR5kKM8s2sicoew%2BHNL5EZ2MHAkCsKHjErhABvJqNEaU7L%2FDMISorljhMNw%2BxKCTrmeGCq4SlUVE70oz6CP0aLBw084XNhrLkR8xGNSLPuZjTmiEiKFo28V44OG1Dz6H%2F0WihV5%2FlILK9auV63qJd0ixsAzjwaHOEbLLKbJsQV8IXxuX8ZLyvetbMZ%2Fgh9TMktBNr7rB8q8%2Bsgc0JVvvY1%2BEjkwu%2FjvtgY6qAEjncEWc55W87NtTyoBraiqgeQmGzZEVjkuC4JW%2BCeQoq2giEU%2BDI44Wf3oXB9sox%2BnJOHOE%2FbxxEhbVXL1Ls6pROGdfX9geg33KqSvWLdglg9dNMmz989kMdspbY%2BShARDovmva1h50%2FMc7i6RILCdu%2FZW5neNkTMEdcJ%2F53s7MRDbVNQofysJoxcXzBT6uQQjkSxc9vA70Ys5pokbwosvY2C%2FSDIQ9QM%3D&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=20240907T072628Z&X-Amz-SignedHeaders=host&X-Amz-Expires=3599&X-Amz-Credential=ASIAWD2N7EVPNLF5H65Q%2F20240907%2Feu-west-1%2Fs3%2Faws4_request&X-Amz-Signature=e4e86eb02bf5370cd3925f78711d70387a84c029ada6b93add802b1195734aeb
{
   "version": {
       "json_export": "203",
       "page_segmentation": "5",
       "schema": "1.1.0",
       "structure": "1.1099.0",
       "table_structure": "5"
   },
   "extended_metadata": {
       "ID_instance": "C9 FC 35 85 C5 BA B2 11 0A 00 67 45 8B 6B C6 23 ",
       "ID_permanent": "45 37 20 37 32 20 33 33 20 38 35 20 43 35 20 42 41 20 42 32 20 31 31 20 30 41 20 30 30 20 36 37 20 34 35 20 38 42 20 36 42 20 43 36 20 32 33 20 ",
       "has_acroform": false,
       "has_embedded_files": false,
       "is_XFA": false,
       "is_certified": false,
       "is_encrypted": false,
       "is_digitally_signed": false,
       "language": "tr",
       "page_count": 1,
       "pdf_version": "1.6",
       "pdfa_compliance_level": "",
       "pdfua_compliance_level": ""
   },
   "elements": [
       {
           "Bounds": [
               76.58399963378906,
               576.3399963378906,
               395.0777893066406,
               770.1139221191406
           ],
           "ObjectID": 159,
           "Page": 0,
           "Path": "\/\/Document\/Sect\/Table",
           "attributes": {
               "BBox": [
                   71.03709999999774,
                   590.0499999999884,
                   259.6689999999944,
                   771.4829999999783
               ],
               "NumCol": 2,
               "NumRow": 14,
               "Placement": "Block",
               "SpaceAfter": 11.25
           },
           "filePaths": [
               "tables\/fileoutpart0.xlsx"
           ]
       },
       {
           "Bounds": [
               76.58399963378906,
               757.4400024414062,
               118.62393188476562,
               770.1139221191406
           ],
           "ObjectID": 270,
           "Page": 0,
           "Path": "\/\/Document\/Sect\/Table\/TR\/TD",
           "attributes": {
               "BBox": [
                   70.79709999999977,
                   756.8429999999935,
                   259.6689999999944,
                   770.7629999999772
               ],
               "BlockAlign": "Middle",
               "ColIndex": 0,
               "Height": 13.875,
               "InlineAlign": "Start",
               "RowIndex": 0,
               "Width": 188.875
           }
       },
       {
           "Bounds": [
               76.58399963378906,
               757.4400024414062,
               118.62393188476562,
               770.1139221191406
           ],
           "Font": {
               "alt_family_name": "Calibri",
               "embedded": true,
               "encoding": "Identity-H",
               "family_name": "Calibri",
               "font_type": "CIDFontType2",
               "italic": false,
               "monospaced": false,
               "name": "BCDEEE+Calibri",
               "subset": true,
               "weight": 400
           },
           "HasClip": true,
           "ObjectID": 123,
           "Page": 0,
           "Path": "\/\/Document\/Sect\/Table\/TR\/TD\/P",
           "Text": "SATIR-01 ",
           "TextSize": 11.039993286132812,
           "attributes": {
               "LineHeight": 13.25
           }
       },


....
....
....
uzun bir json içerik olduğundan seçilen içeriği aşağıda vereyim
   ]
}


           "Text": "SATIR-01 ",
           "Text": "ĞĞĞĞĞĞĞĞĞĞĞĞĞĞĞĞĞĞ ",

           "Text": "SATIR-02 ",
           "Text": "ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ ",

           "Text": "SATIR-03 ",
           "Text": "ŞŞŞŞŞŞŞŞŞŞŞŞŞŞŞŞŞŞŞŞŞŞŞŞŞ ",

           "Text": "SATIR-04 ",
           "Text": "İİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİİ ",

           "Text": "SATIR-05 ",
           "Text": "ÖÖÖÖÖÖÖÖÖÖÖÖÖÖÖÖÖ ",

           "Text": "SATIR-06 ",
           "Text": "ÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇ ",

           "Text": "SATIR-07 ",
           "Text": "IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII ",

           "Text": "SATIR-08 ",
           "Text": "ğğğğğğğğğğğğğğğğğğğğğğğ ",

           "Text": "SATIR-09 ",
           "Text": "üüüüüüüüüüüüüüüüüüüüü ",

           "Text": "SATIR-10 ",
           "Text": "şşşşşşşşşşşşşşşşşşşşşşşşşşşş ",

           "Text": "SATIR-11 ",
           "Text": "iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii ",

           "Text": "SATIR-12 ",
           "Text": "ööööööööööööööööööööö ",

           "Text": "SATIR-13 ",
           "Text": "çççççççççççççççççççççççççç ",

           "Text": "SATIR-14 ",
           "Text": "ıııııııııııııııııııııııııııııııııııııııııııııııı ",


Ek Dosyalar
.zip   Sample.zip (Dosya Boyutu: 268,89 KB / İndirme Sayısı: 7)
Saygılarımla
Muharrem ARMAN

guplouajuixjzfm15eqb.gif
Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  Veri Tabanına Kontrollü Kayıt Yaptırma bünyamin68 20 4.238 08-06-2025, Saat: 09:40
Son Yorum: izmaimen
  wsdl veri çekme hatası tuna 6 1.348 15-01-2025, Saat: 16:54
Son Yorum: hi_selamlar
  kap.org.tr veri alma hk. pro_imaj 7 14.127 22-10-2024, Saat: 19:57
Son Yorum: Zeynepfeyza20
  bir resimden renk kodunu $00584827 seklinde almak sadikacar60 2 639 01-10-2024, Saat: 13:02
Son Yorum: frmman
  mysql ve sqllite veri eşitleme senerelmas 5 933 13-07-2024, Saat: 14:45
Son Yorum: frmman



Konuyu Okuyanlar: 2 Ziyaretçi