81 messaggi dal 12 settembre 2010
Ciao a tutti,
prima di lasciare qui la mia domanda mi sono ovviamente informato e ho trovato vari riferimenti a librerie (come iTextSharp) etc...

Il risultato che vorrei ottenere è il seguente:
- ho un PDF dove il contenuto testuale è all'interno di una "tabella" (ci sono più pagine strutturate in questo modo) e vorrei riportare appunto questo contenuto all'interno di un Excel per poter poi manipolare meglio questi dati e comunque ottenere un file di questo tipo che poi ti consente di fare determinate operazioni

Ho istanziato un progetto e ho pensato di realizzare il tutto tramite le WinForm in C# e in questo momento sto utilizzando appunto iTextSharp e sto estraendo il testo dal pdf, fino a qui non ci sono problemi.

Non so se però questa sia la strada giusta per i seguenti motivi:
- non so esattamente come manipolare tutto il testo per riportarlo all'interno dell excel (considerando il fatto che alla fine la tabella che attualmente ho dentro questo pdf devo ottenerla anche all'interno dell'excel con la medesima struttura)
- se devo ragionare in modo differente e optare per una soluzione differente

Vi scrivo qui per sapere se potete indicarmi o fornirmi delle valide soluzioni (non semplicemente dei link alle guide di come si utilizzano determinate librerie perchè il mio problema non è utilizzare una libreria ma capire quali sono le criticità che devo gestire e la strada da perseguire).

Grazie in anticipo a tutti!!!
32 messaggi dal 13 agosto 2017
Ciao Gargano, in pratica hai delle tabelle in Pdf e vuoi riportarle in un foglio Excel?
32 messaggi dal 13 agosto 2017
La soluzione da te individuata è assolutamente valida, criticità particolari non ne vedo. Ho usato molto itextsharp in progetti asp.net-vb.net creando tabelle da pdf e convertendo il file in excel, word ecc.. e viceversa. Puoi partire per ciò che ti serve da questo progetto (come del resto ho fatto io) e manipolare i file a tuo piacimento (http://www.aspforums.net/Threads/202061/Solved-Read-Table-Grid-data-from-PDF-Convert-and-export-to-Excel-File-in-ASPNet/) anche se a te interessano le winform è tutto adattabile. Ripeto, secondo il mio modestissimo parere, sei sulla strada giusta, poi lascio ovviamente a gente esperta l'ultima parola.
Un saluto.
81 messaggi dal 12 settembre 2010
Ciao MarkRoss,
intanto grazie mille per avermi risposto. Appena avrò modo proverò a seguire quanto mi hai indicato e farò sapere.

Ovvio che se altri hanno indicazioni utili che ben venga.
81 messaggi dal 12 settembre 2010
Ciao MarkRoss,
ho avuto modo di lavorare un attimo con quello che mi hai passato come riferimento solo che effettivamente la principale criticità che incontro è questa:
- nelle tabelle PDF che devo convertire il testo presente all'interno delle singole "celle" va a capo e quindi non so quale criterio applicare per splittare coerentemente le righe ed ottenere quindi un numero di colonne uguali per ogni riga (non so se mi sono spiegato)

Sicuramente nell'esempio indicato il risultato è ottimale perchè la tabella pdf di partenza presenta un contenuto testuale molto semplice (se non banale) ma nel caso in cui il contenuto di ogni "cella" contenga un testo più articolato (come nel mio caso) diventa difficile trovare quel criterio (o algoritmo) che mi consenta di gestirlo correttamente.
32 messaggi dal 13 agosto 2017
Ce ne sono tantissime di opzioni quando vuoi estrarre dati da pdf a excel (impostare celle formato testo, date, backcolor, testo grassetto-sottolineato ecc...ecc...) Più genericamente in linea di massima usa il comando "AutoFit()" su righe e colonne per impostare in automatico altezza e larghezza delle celle, es:

Cells["A:B"].Columns.AutoFit();
Cells["1:2"].Rows.AutoFit(); 

Modificato da MarkRoss il 02 febbraio 2018 20.07 -
Modificato da MarkRoss il 02 febbraio 2018 20.11 -
Modificato da MarkRoss il 02 febbraio 2018 20.11 -
11.886 messaggi dal 09 febbraio 2002
Contributi
Gargano intende dire che ha difficoltà nell'estrarre i dati dal PDF, perché ogni "cella" contiene del testo multiriga.
Infatti, nei PDF non esistono i concetti di "tabella", "riga" e "cella". C'è semplicemente del testo disposto sulla pagina in maniera tale che sembri una tabella.


non so quale criterio applicare per splittare coerentemente le righe ed ottenere quindi un numero di colonne uguali per ogni riga (non so se mi sono spiegato)

Sì, il problema è chiaro, ho dovuto affrontare anch'io la stessa questione. Nel mio caso mi sono affidato alla spaziatura tra i testi per determinare a quale cella appartenessero.
Di solito, il numero di pixel dell'interlinea è minore rispetto al numero di pixel che separano i testi di due celle differenti.

Guarda un esempio come questo. La parola "possible" è distanziata da "Row C" di un numero di pixel maggiore rispetto a "as much as". Questo ti aiuta a capire che "possible" e "Row C" appartengono a due celle separate.

In orizzontale di solito il problema non esiste perché i testi sono tutti ben incolonnati e quindi una cella inizia sempre alla stessa coordinata X.

Nel mio caso questa tecnica è stata sufficiente a risolvere il problema. In alternativa, non so se sia possibile ottenere un riferimento alle righe di separazione. Se sì, le loro coordinate ti aiuteranno a capire dove inizia e finisce ciascuna cella.

ciao,
Moreno
Modificato da BrightSoul il 03 febbraio 2018 10.19 -

Enjoy learning and just keep making

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.