[Risolto]Trasformare file.txt in PDF o LibreOffice
-
raffaele63
- Scoppiettante Seguace

- Messaggi: 348
- Iscrizione: lunedì 3 ottobre 2011, 12:27
- Desktop: Lubuntu
- Distribuzione: Lubuntu 22.04.1 LTS (Jammy Jellyfis
- Sesso: Maschile
[Risolto]Trasformare file.txt in PDF o LibreOffice
Salve a tutti,
nel gestionale per società sportive che ho realizzato (utilizzando Python 2.7 e MySQL 5.5 e come interfaccia Tkinter) ho necessità di poter visualizzare e stampare se occorre, quanto precedentemente inserito e salvato, non solo a video (cosa che già avviene di per se) ma da formato .txt in PDF e che rispetti le caratteristiche riportate a video (es. suddivisione in colonne dei dati estratti ).
Nel manuale di Python, ho trovato come creare, modificare e salvare i fili con estensione .txt oppure .dat, ma non riesco ad ottenere dei risultati che mi soddisfino, per questo motivo sono alla ricerca di un aiuto.
Ho trovato nel Gestore Pacchetti di Lubuntu, il pacchetto Python-pkPdf, è possibile utilizzarlo con il programma che ho creato? oppure come si deve usare?
Grazie.
nel gestionale per società sportive che ho realizzato (utilizzando Python 2.7 e MySQL 5.5 e come interfaccia Tkinter) ho necessità di poter visualizzare e stampare se occorre, quanto precedentemente inserito e salvato, non solo a video (cosa che già avviene di per se) ma da formato .txt in PDF e che rispetti le caratteristiche riportate a video (es. suddivisione in colonne dei dati estratti ).
Nel manuale di Python, ho trovato come creare, modificare e salvare i fili con estensione .txt oppure .dat, ma non riesco ad ottenere dei risultati che mi soddisfino, per questo motivo sono alla ricerca di un aiuto.
Ho trovato nel Gestore Pacchetti di Lubuntu, il pacchetto Python-pkPdf, è possibile utilizzarlo con il programma che ho creato? oppure come si deve usare?
Grazie.
Ultima modifica di raffaele63 il sabato 2 gennaio 2016, 22:38, modificato 1 volta in totale.
Bisognerebbe evitare di predicare ai giovani il successo nella solita forma come lo scopo principale nella vita.
Il motivo più importante per lavorare a scuola e nella vita è il piacere nel lavoro, piacere nel suo risultato e la conseguenza del valore del risultato per la comunità. ( A.E. )
Il motivo più importante per lavorare a scuola e nella vita è il piacere nel lavoro, piacere nel suo risultato e la conseguenza del valore del risultato per la comunità. ( A.E. )
- cortinico
- Scoppiettante Seguace

- Messaggi: 477
- Iscrizione: venerdì 15 maggio 2015, 16:49
- Desktop: Unity
- Distribuzione: Ubuntu 15.04 amd64
- Sesso: Maschile
- Località: Pisa
- Contatti:
Re: Trasformare file.txt in PDF o LibreOffice
Allora puoi provare ad utilizzare PyPDF2
Ecco qua il link: https://github.com/mstamy2/PyPDF2
Nel repository trovi anche qualche file di esempio che ti permette di capire come funziona la libreria, non dovrebbe essere difficile
Ecco qua il link: https://github.com/mstamy2/PyPDF2
Nel repository trovi anche qualche file di esempio che ti permette di capire come funziona la libreria, non dovrebbe essere difficile
"Look wide, and even when you think you are looking wide – look wider still!"
http://ncorti.com
http://ncorti.com
-
raffaele63
- Scoppiettante Seguace

- Messaggi: 348
- Iscrizione: lunedì 3 ottobre 2011, 12:27
- Desktop: Lubuntu
- Distribuzione: Lubuntu 22.04.1 LTS (Jammy Jellyfis
- Sesso: Maschile
Re: Trasformare file.txt in PDF o LibreOffice
Salve cortinico,
ho guardato all'indirizzo segnalato, ma non è proprio quello che io stavo cercando (avevo visto la prima versione).
Googolando ho invece trovato questo che rientra più nell'ordine di quanto ho in mente.
Nel senso che una volta creata la giusta disposizione delle righe e delle colonne, richiamando la macro dal programma ottengo una impaginazione corretta (questo è quanto vorrei sviluppare).
Ora, devo solo capire bene come applicare tutto questo (sempre che sia possibile).
Ovviamente se avete informazioni o consigli, relativi a quanto sopra scritto, ed al suo sviluppo per favore lasciate pure un vostro commento.
Da parte mia, appena avrò novità sulla corretta esecuzione di questa fase, segnalerò la stessa al forum.
ho guardato all'indirizzo segnalato, ma non è proprio quello che io stavo cercando (avevo visto la prima versione).
Googolando ho invece trovato questo che rientra più nell'ordine di quanto ho in mente.
Nel senso che una volta creata la giusta disposizione delle righe e delle colonne, richiamando la macro dal programma ottengo una impaginazione corretta (questo è quanto vorrei sviluppare).
Ora, devo solo capire bene come applicare tutto questo (sempre che sia possibile).
Ovviamente se avete informazioni o consigli, relativi a quanto sopra scritto, ed al suo sviluppo per favore lasciate pure un vostro commento.
Da parte mia, appena avrò novità sulla corretta esecuzione di questa fase, segnalerò la stessa al forum.
Bisognerebbe evitare di predicare ai giovani il successo nella solita forma come lo scopo principale nella vita.
Il motivo più importante per lavorare a scuola e nella vita è il piacere nel lavoro, piacere nel suo risultato e la conseguenza del valore del risultato per la comunità. ( A.E. )
Il motivo più importante per lavorare a scuola e nella vita è il piacere nel lavoro, piacere nel suo risultato e la conseguenza del valore del risultato per la comunità. ( A.E. )
-
raffaele63
- Scoppiettante Seguace

- Messaggi: 348
- Iscrizione: lunedì 3 ottobre 2011, 12:27
- Desktop: Lubuntu
- Distribuzione: Lubuntu 22.04.1 LTS (Jammy Jellyfis
- Sesso: Maschile
Re: Trasformare file.txt in PDF o LibreOffice
Salve,
al link che ho indicato nel messaggio precedente, vi è uno script Python che genera una Macro in Libre Office,
e lanciando la Macro si ottiene la stringa sul foglio di lavoro.
Però ho bisogno per favore di ricevere alcune informazioni su dove poter leggere documentazione ulteriore per approfondire l'argomento (es. sul tutorial ufficiale oppure sulla libreria di riferimento ecc.) oppure avere esempi più dettagliati dai quali prendere spunti (anche se non è la cosa più corretta).
Inoltre vorrei inserire nel gestionale di mio realizzo, il comando per avviare appunto la macro, quindi prima bisogna far aprire Libre Office: questo comando è possibile darlo, come spiegato al capitolo 2.2.4 del tutorial?
al link che ho indicato nel messaggio precedente, vi è uno script Python che genera una Macro in Libre Office,
e lanciando la Macro si ottiene la stringa sul foglio di lavoro.
Però ho bisogno per favore di ricevere alcune informazioni su dove poter leggere documentazione ulteriore per approfondire l'argomento (es. sul tutorial ufficiale oppure sulla libreria di riferimento ecc.) oppure avere esempi più dettagliati dai quali prendere spunti (anche se non è la cosa più corretta).
Inoltre vorrei inserire nel gestionale di mio realizzo, il comando per avviare appunto la macro, quindi prima bisogna far aprire Libre Office: questo comando è possibile darlo, come spiegato al capitolo 2.2.4 del tutorial?
Bisognerebbe evitare di predicare ai giovani il successo nella solita forma come lo scopo principale nella vita.
Il motivo più importante per lavorare a scuola e nella vita è il piacere nel lavoro, piacere nel suo risultato e la conseguenza del valore del risultato per la comunità. ( A.E. )
Il motivo più importante per lavorare a scuola e nella vita è il piacere nel lavoro, piacere nel suo risultato e la conseguenza del valore del risultato per la comunità. ( A.E. )
- cortinico
- Scoppiettante Seguace

- Messaggi: 477
- Iscrizione: venerdì 15 maggio 2015, 16:49
- Desktop: Unity
- Distribuzione: Ubuntu 15.04 amd64
- Sesso: Maschile
- Località: Pisa
- Contatti:
Re: Trasformare file.txt in PDF o LibreOffice
Perdonami ma non mi è chiaro cosa c'entri adesso Libreoffice, visto che nel primo messaggio parlavi di conversione da .txt a .pdf, giusto?
"Look wide, and even when you think you are looking wide – look wider still!"
http://ncorti.com
http://ncorti.com
-
raffaele63
- Scoppiettante Seguace

- Messaggi: 348
- Iscrizione: lunedì 3 ottobre 2011, 12:27
- Desktop: Lubuntu
- Distribuzione: Lubuntu 22.04.1 LTS (Jammy Jellyfis
- Sesso: Maschile
Re: Trasformare file.txt in PDF o LibreOffice
Si scusami, nel messaggio ho parlato solo di PDF (ma non nel titolo) è stato un mio refuso.
Quanto sto cercando di generare è un foglio (LibreOffice o PDF) nel quale far convogliare in modo ordinato i dati che provengono da scelte utente (nel caso specifico una classifica contenente dati quali: nomi.società,settori ecc.).
Quindi è vero che posso trasformare il file in PDF, ma è altrettanto vero che con LibreOffice posso creare un foglio standard dove immettere quei tipi di dati.
La mia idea è il trasporto dei dati in un file .txt o .dat e passarli al foglio di LO organizzato (dal quale è poi possibile, se voluto, la trasformazione in PDF).
Il tuo suggerimento è stato prezioso perché mi ha aiutato a fare chiarezza e se hai suggerimenti dove poter reperire documentazione relativa a quanto esposto oppure se esistono strade più consone, sappi che sono ben accette. Resto in attesa. Grazie.
Quanto sto cercando di generare è un foglio (LibreOffice o PDF) nel quale far convogliare in modo ordinato i dati che provengono da scelte utente (nel caso specifico una classifica contenente dati quali: nomi.società,settori ecc.).
Quindi è vero che posso trasformare il file in PDF, ma è altrettanto vero che con LibreOffice posso creare un foglio standard dove immettere quei tipi di dati.
La mia idea è il trasporto dei dati in un file .txt o .dat e passarli al foglio di LO organizzato (dal quale è poi possibile, se voluto, la trasformazione in PDF).
Il tuo suggerimento è stato prezioso perché mi ha aiutato a fare chiarezza e se hai suggerimenti dove poter reperire documentazione relativa a quanto esposto oppure se esistono strade più consone, sappi che sono ben accette. Resto in attesa. Grazie.
Bisognerebbe evitare di predicare ai giovani il successo nella solita forma come lo scopo principale nella vita.
Il motivo più importante per lavorare a scuola e nella vita è il piacere nel lavoro, piacere nel suo risultato e la conseguenza del valore del risultato per la comunità. ( A.E. )
Il motivo più importante per lavorare a scuola e nella vita è il piacere nel lavoro, piacere nel suo risultato e la conseguenza del valore del risultato per la comunità. ( A.E. )
-
fabio massacci
- Scoppiettante Seguace

- Messaggi: 289
- Iscrizione: mercoledì 11 giugno 2014, 14:12
- Desktop: Lubuntu
- Distribuzione: Ubuntu 20.04.3 LTS
Re: Trasformare file.txt in PDF o LibreOffice
scusa ma se vuoi creare un foglio di lavoro leggibile da libreoffice basta che produci un file .cvs, che è perfettamente leggibile in libre
https://it.wikipedia.org/wiki/Comma-separated_values
edit: file csv
https://it.wikipedia.org/wiki/Comma-separated_values
edit: file csv
-
raffaele63
- Scoppiettante Seguace

- Messaggi: 348
- Iscrizione: lunedì 3 ottobre 2011, 12:27
- Desktop: Lubuntu
- Distribuzione: Lubuntu 22.04.1 LTS (Jammy Jellyfis
- Sesso: Maschile
Re: Trasformare file.txt in PDF o LibreOffice
Salve a tutti,
ho trovato uno script di Python che cito
Quindi una parte del mio problemino sembrerebbe andata a buon fine, resta comunque da sistemare la disposizione dei dati: nel file.dat che uso per prova, inserisco i dati presi da Mysql con una SELECT, ma restano conseguenziali, cioè Nome Cognome Società Squadra ed ovviamente avendo nomi o cognomi più lunghi rispetto ad altri ottengo
vorrei sapere dove trovare documentazione per ottenere la giusta impaginazione.
ho trovato uno script di Python che cito
ed è così."Make some simple multipage pdf files."
Quindi una parte del mio problemino sembrerebbe andata a buon fine, resta comunque da sistemare la disposizione dei dati: nel file.dat che uso per prova, inserisco i dati presi da Mysql con una SELECT, ma restano conseguenziali, cioè Nome Cognome Società Squadra ed ovviamente avendo nomi o cognomi più lunghi rispetto ad altri ottengo
mentre io vorrei vedere una lista ordinata (volevo postarvi un esempio ma a video non risultano i giusti spazi tra un dato ed un altro)Concorrenti page 1 of 1
Brignola Gianni apsd Napolisud A; ;
Fiorentino Bruno apsd Napolisud A; ;
Borghini Aldo apsd Napolisud A; ;
;
vorrei sapere dove trovare documentazione per ottenere la giusta impaginazione.
Bisognerebbe evitare di predicare ai giovani il successo nella solita forma come lo scopo principale nella vita.
Il motivo più importante per lavorare a scuola e nella vita è il piacere nel lavoro, piacere nel suo risultato e la conseguenza del valore del risultato per la comunità. ( A.E. )
Il motivo più importante per lavorare a scuola e nella vita è il piacere nel lavoro, piacere nel suo risultato e la conseguenza del valore del risultato per la comunità. ( A.E. )
-
axelcode72
- Prode Principiante
- Messaggi: 7
- Iscrizione: giovedì 10 dicembre 2015, 18:04
- Sesso: Maschile
Re: Trasformare file.txt in PDF o LibreOffice
Se hai un minimo di conoscenza di Java potresti usare questa libreria che fa esattamente quello di cui hai bisogno:
GlobalReports
GlobalReports
www.globalreports.it - La libreria per la creazione di file PDF
-
rai
- Imperturbabile Insigne

- Messaggi: 2886
- Iscrizione: domenica 11 maggio 2008, 18:03
- Desktop: plasma
- Distribuzione: 22.04
- Località: Palermo
Re: Trasformare file.txt in PDF o LibreOffice
Non so se ho capito cosa intendi per "vedere una lista ordinata" ma nella shell puoi usare comodamente l'utility column
in ogni caso, e ammesso che sia quello che vuoi fare, potresti usare sempre python per tabulare i dati
Codice: Seleziona tutto
$ echo -e $testo
Brignola Gianni apsd Napolisud A
Fiorentino Bruno apsd Napolisud A
Borghini Aldo apsd Napolisud A
$ echo -e $testo | column -t
Brignola Gianni apsd Napolisud A
Fiorentino Bruno apsd Napolisud A
Borghini Aldo apsd Napolisud A
$
Codice: Seleziona tutto
$ cat incolonna.py
#!/usr/bin/env python
testo="""Brignola Gianni apsd Napolisud A; ;
Fiorentino Bruno apsd Napolisud A; ;
Borghini Aldo apsd Napolisud A; ;"""
tabella = testo.replace("; ;",'').split("\n")
tabella = [row.split() for row in tabella]
larghezze = []
trasposta = []
for y in range(len(tabella[0])):
trasposta.append([])
# itera su tutte le liste
for x in range(len(tabella)):
# crea una lista per ogni colonna
trasposta[y].append(tabella[x][y])
# crea una lista con le larghezze max di ogni colonna
for y in range(len(trasposta)):
max = 0
for a in trasposta[y]:
if len(a) > max:
max = len(a)
larghezze.append(max)
# padding di ogni elemento alla larghezza max
for row in tabella:
for x in range(len(larghezze)):
row[x] = row[x].ljust(larghezze[x]) + " "
for z in range(len(tabella)):
print("".join(tabella[z]))
$ incolonna.py
Brignola Gianni apsd Napolisud A
Fiorentino Bruno apsd Napolisud A
Borghini Aldo apsd Napolisud A
$
-
raffaele63
- Scoppiettante Seguace

- Messaggi: 348
- Iscrizione: lunedì 3 ottobre 2011, 12:27
- Desktop: Lubuntu
- Distribuzione: Lubuntu 22.04.1 LTS (Jammy Jellyfis
- Sesso: Maschile
Re: Trasformare file.txt in PDF o LibreOffice
Salve,
Comunque avevo letto in una discussione del forum qualcosa di similare. (Tieni presente quello che ho appena scritto).
Prima Colonna, uno spazio abbastanza ampio, Seconda Colonna, uno spazio abbastanza ampio ecc.
Nome Cognome, spazio come sopra, Società, ancora idem di spazio ecc.
(Io ho provato a postare un esempio applicando spazi tra le colonne, ma quando faccio l'anteprima gli stessi non vengono rispettati, per cui ho scritto così).
Adesso mi studio quanto mi hai suggerito in Python, provando ad applicarlo (certo che di cicli ce ne sono abbastanza) e poi ci risentiamo se sei d'accordo. Grazie.
grazie, ma ancora non ho preso in considerazione Java (nel senso che sto studiando Python da autodidatta) e non vorrei creare confusione nella mia zucca.axelcode72 ha scritto:Se hai un minimo di conoscenza di Java potresti usare questa libreria che fa esattamente quello di cui hai bisogno:
GlobalReports
Chiedo scusa per non essere stato più preciso nella descrizione, giusto per la cronaca intendo:Non so se ho capito cosa intendi per "vedere una lista ordinata"
Prima Colonna, uno spazio abbastanza ampio, Seconda Colonna, uno spazio abbastanza ampio ecc.
Nome Cognome, spazio come sopra, Società, ancora idem di spazio ecc.
(Io ho provato a postare un esempio applicando spazi tra le colonne, ma quando faccio l'anteprima gli stessi non vengono rispettati, per cui ho scritto così).
Adesso mi studio quanto mi hai suggerito in Python, provando ad applicarlo (certo che di cicli ce ne sono abbastanza) e poi ci risentiamo se sei d'accordo. Grazie.
Bisognerebbe evitare di predicare ai giovani il successo nella solita forma come lo scopo principale nella vita.
Il motivo più importante per lavorare a scuola e nella vita è il piacere nel lavoro, piacere nel suo risultato e la conseguenza del valore del risultato per la comunità. ( A.E. )
Il motivo più importante per lavorare a scuola e nella vita è il piacere nel lavoro, piacere nel suo risultato e la conseguenza del valore del risultato per la comunità. ( A.E. )
-
raffaele63
- Scoppiettante Seguace

- Messaggi: 348
- Iscrizione: lunedì 3 ottobre 2011, 12:27
- Desktop: Lubuntu
- Distribuzione: Lubuntu 22.04.1 LTS (Jammy Jellyfis
- Sesso: Maschile
Re: Trasformare file.txt in PDF o LibreOffice
Ciao a tutti,
di seguito riporto parte di codice che ad un certo punto mi procura questo:
Codice Python:
Cortesemente chiedo quali modifiche posso apportare per rendere fluido il codice.
di seguito riporto parte di codice che ad un certo punto mi procura questo:
Codice: Seleziona tutto
Traceback (most recent call last):
File "/home/lucy/provapypdf.py", line 38, in <module>
row[x] = row[x].ljust(larghezze[x])
TypeError: 'tuple' object does not support item assignmentCodice: Seleziona tutto
import MySQLdb
larghezze = []
trasposta = []
Concorrenti = []
tabella = ('')
linend = ('\n')
conn=MySQLdb.connect(host=XXXXXXXXX,user=XXXXXXX,\
passwd=XXXXXXXX,db=XXXXXXX)
cursor = conn.cursor()
cursor.execute("""SELECT Concorrenti,Societa,Squadra from Lista_partecipanti""")
rows = cursor.fetchall()
for row in rows:
tabella=rows
for y in range(len(tabella[0])):
trasposta.append([])
for x in range(len(tabella)):
# crea una lista per ogni colonna
trasposta[y].append(tabella[x][y])
for y in range(len(trasposta)):
max = 0
for a in trasposta[y]:
if len(a) > max:
max = len(a)
larghezze.append(max)
for row in tabella:
for x in range(len(larghezze)):
row[x] = row[x].ljust(larghezze[x]) + " "
for z in range(len(tabella)):
Concorrenti = z
print ("".join(Concorrenti[z]))Bisognerebbe evitare di predicare ai giovani il successo nella solita forma come lo scopo principale nella vita.
Il motivo più importante per lavorare a scuola e nella vita è il piacere nel lavoro, piacere nel suo risultato e la conseguenza del valore del risultato per la comunità. ( A.E. )
Il motivo più importante per lavorare a scuola e nella vita è il piacere nel lavoro, piacere nel suo risultato e la conseguenza del valore del risultato per la comunità. ( A.E. )
- cortinico
- Scoppiettante Seguace

- Messaggi: 477
- Iscrizione: venerdì 15 maggio 2015, 16:49
- Desktop: Unity
- Distribuzione: Ubuntu 15.04 amd64
- Sesso: Maschile
- Località: Pisa
- Contatti:
Re: Trasformare file.txt in PDF o LibreOffice
La domanda esula un po' dal titolo del thread,
potresti aprire un nuovo thread su questo problema?
L'errore che ti sta dando è comunque legato al fatto che stai cercando di riassegnare un oggetto di tipo tupla, che su python è immutabile
potresti aprire un nuovo thread su questo problema?
L'errore che ti sta dando è comunque legato al fatto che stai cercando di riassegnare un oggetto di tipo tupla, che su python è immutabile
"Look wide, and even when you think you are looking wide – look wider still!"
http://ncorti.com
http://ncorti.com
-
raffaele63
- Scoppiettante Seguace

- Messaggi: 348
- Iscrizione: lunedì 3 ottobre 2011, 12:27
- Desktop: Lubuntu
- Distribuzione: Lubuntu 22.04.1 LTS (Jammy Jellyfis
- Sesso: Maschile
Re: Trasformare file.txt in PDF o LibreOffice
In realtà quello che sto cercando di risolvere è sempre legato al mio problema iniziale (poiché lo script non si limita solo a queste poche righe).
Le cose si evolvono anche in conseguenza delle soluzioni trovate ed io, nel mio piccolo ho trovato valido passare (alla parte che crea il PDF) i dati anche senza salvarli precedentemente in un file.
Si può salvare solo il PDF (che è sempre un file) per tenere traccia dell'avvenimento, senza salvare anche il file.txt o altro tipo (questa soluzione è di oggi ed io ho postato come promesso).
Il codice suggeritomi "da rai » 15/12/2015, 19:24 " ha di molto migliorato la strada verso la risoluzione, però si basa su del testo mentre io ho tuple, quindi vorrei capire quel come e se si può sistemare per ottenere
Le cose si evolvono anche in conseguenza delle soluzioni trovate ed io, nel mio piccolo ho trovato valido passare (alla parte che crea il PDF) i dati anche senza salvarli precedentemente in un file.
Si può salvare solo il PDF (che è sempre un file) per tenere traccia dell'avvenimento, senza salvare anche il file.txt o altro tipo (questa soluzione è di oggi ed io ho postato come promesso).
Infatti la mia ultima domanda cerca una soluzione per aggirare l'immutabilità delle tuple.L'errore che ti sta dando è comunque legato al fatto che stai cercando di riassegnare un oggetto di tipo tupla, che su python è immutabile
Il codice suggeritomi "da rai » 15/12/2015, 19:24 " ha di molto migliorato la strada verso la risoluzione, però si basa su del testo mentre io ho tuple, quindi vorrei capire quel
Codice: Seleziona tutto
row[x] = row[x].ljust(larghezze[x]) + " "Codice: Seleziona tutto
Brignola Gianni apsd Napolisud A
Fiorentino Bruno apsd Napolisud A
Borghini Aldo apsd Napolisud A
Bolognino Raffaele apsd Sunese A Bisognerebbe evitare di predicare ai giovani il successo nella solita forma come lo scopo principale nella vita.
Il motivo più importante per lavorare a scuola e nella vita è il piacere nel lavoro, piacere nel suo risultato e la conseguenza del valore del risultato per la comunità. ( A.E. )
Il motivo più importante per lavorare a scuola e nella vita è il piacere nel lavoro, piacere nel suo risultato e la conseguenza del valore del risultato per la comunità. ( A.E. )
-
rai
- Imperturbabile Insigne

- Messaggi: 2886
- Iscrizione: domenica 11 maggio 2008, 18:03
- Desktop: plasma
- Distribuzione: 22.04
- Località: Palermo
Re: Trasformare file.txt in PDF o LibreOffice
Non conosco MySQL né l'interfaccia Python che tu usi per cui mi limito al frammento di codice che si occupa dell'incolonnamento
A quanto pare il metodo cursor.fetchall() restituisce una tupla di tuple: qui non ho fatto altro che trasformare la tupla di tuple in lista di liste
puoi sempre farlo con for invece di usare map() [ma è meno efficiente e più complicato, in breve poco pythonico]
A quanto pare il metodo cursor.fetchall() restituisce una tupla di tuple: qui non ho fatto altro che trasformare la tupla di tuple in lista di liste
puoi sempre farlo con for invece di usare map() [ma è meno efficiente e più complicato, in breve poco pythonico]
Codice: Seleziona tutto
$ cat incolonna.py
#!/usr/bin/env python
laTua_rows=(('Brignola', 'Gianni', 'apsd', 'Napolisud', 'A'),\
('Fiorentino', 'Bruno', 'apsd', 'Napolisud', 'A'),\
('Borghini', 'Aldo', 'apsd', 'Napolisud', 'A'))
tabella = map(list, laTua_rows)
# itera sulla dimensione delle liste (il numero di colonne)
numCol = len(tabella[0])
trasposta = []
for col in range(numCol):
trasposta.append([])
# itera su tutte le liste (il numero di righe)
for riga in range(len(tabella)):
# crea una lista temporanea contenente una lista per ogni colonna
trasposta[col].append(tabella[riga][col])
# crea una lista con le larghezze max di ogni colonna
larghezze = []
for y in range(numCol):
max = 0
for a in trasposta[y]:
if len(a) > max:
max = len(a)
larghezze.append(max)
# padding di ogni stringa alla larghezza max della propria colonna
for row in tabella:
for col in range(len(larghezze)):
row[col] = row[col].ljust(larghezze[col]) + " "
for row in tabella:
print("".join(row))
$ ./incolonna.py
Brignola Gianni apsd Napolisud A
Fiorentino Bruno apsd Napolisud A
Borghini Aldo apsd Napolisud A
$
-
raffaele63
- Scoppiettante Seguace

- Messaggi: 348
- Iscrizione: lunedì 3 ottobre 2011, 12:27
- Desktop: Lubuntu
- Distribuzione: Lubuntu 22.04.1 LTS (Jammy Jellyfis
- Sesso: Maschile
Re: Trasformare file.txt in PDF o LibreOffice
(versione Python 2.7.6, Databese Mysql 5.5, GUI Tkinter)
Salve a tutti,
allora la situazione che mi si presenta è la seguente:
con la soluzione suggeritami dell'utente rai (metto solo l'ultima parte) ottengo quanto ricercato, ma se provo ad inserire 'testo' in un file .txt oppure nella parte che genera il file PDF, la stessa prende una, per cosi dire, 'piega diversa', cioè non rispetta più le distanze ordinate che aveva in precedenza. esattamente così. Da inesperto quale sono, ho erroneamente pensato che bastasse assegnare 'testo' anche ad altra voce, ma purtroppo non funziona cosi. Ho provato ad inserire nel file.txt con metodi diversi, con pickle ma le 'onde' restano e lo sclero aumenta.
Non capisco perchè se con il ciclo for menzionato in precedenza, ottengo una lista ordinata, non sia possibile ottenerla anche successivamente se applicato ad altro. Dove è l'errore?
Salve a tutti,
allora la situazione che mi si presenta è la seguente:
con la soluzione suggeritami dell'utente rai (metto solo l'ultima parte)
Codice: Seleziona tutto
for row in Tabella:
testo = (' '.join(row))
print (testo)Codice: Seleziona tutto
Brignola Gianno apsd Napolisud A;
Fiorentino Bruno apsd Napolisud A;
Brghini Aldo apsd Napolisud A;
Bolognaro Silvio apsd Napolisud A;
Masini Gianni apsd Napolisud B;
Bolchini Vanni apsd Suno A;
Bolognino Raffaele apsd Suno A;
Brustia Franco apsd Suno A;
Cassai Gianni apsd Suno A;
Bruno Aldo apsd Suno B;
Vassali Andrea apsd Suno B;
Lilla Giorgio apsd Crotonesi A;
Branca Nino apsd Crotonesi A;
Mina Tony apsd Crotonesi A;
Valli Sandro apsd Crotonesi A; Non capisco perchè se con il ciclo for menzionato in precedenza, ottengo una lista ordinata, non sia possibile ottenerla anche successivamente se applicato ad altro. Dove è l'errore?
Bisognerebbe evitare di predicare ai giovani il successo nella solita forma come lo scopo principale nella vita.
Il motivo più importante per lavorare a scuola e nella vita è il piacere nel lavoro, piacere nel suo risultato e la conseguenza del valore del risultato per la comunità. ( A.E. )
Il motivo più importante per lavorare a scuola e nella vita è il piacere nel lavoro, piacere nel suo risultato e la conseguenza del valore del risultato per la comunità. ( A.E. )
-
rai
- Imperturbabile Insigne

- Messaggi: 2886
- Iscrizione: domenica 11 maggio 2008, 18:03
- Desktop: plasma
- Distribuzione: 22.04
- Località: Palermo
Re: Trasformare file.txt in PDF o LibreOffice
il fatto è che non abbiamo visto questo script che genera il PDF nè sappiamo cosa vuole dato in pasto; inolte personalmente non mi è chiaro che vuoi dire conma se provo ad inserire 'testo' in un file .txt oppure nella parte che genera il file PDF, la stessa prende una, per cosi dire, 'piega diversa', cioè non rispetta più le distanze ordinate che aveva in precedenza.
comunque, se invece del print che ho messo nell'esempio assegni le stringhe a una var, non hai bisogno di pickle per salvare var su fileassegnare 'testo' anche ad altra voce
Codice: Seleziona tutto
$ cat incolonna.py
#!/usr/bin/env python
laTua_rows=(('Brignola', 'Gianni', 'apsd', 'Napolisud', 'A'),\
('Fiorentino', 'Bruno', 'apsd', 'Napolisud', 'A'),\
('Borghini', 'Aldo', 'apsd', 'Napolisud', 'A'))
tabella = map(list, laTua_rows)
# itera sulla dimensione delle liste (il numero di colonne)
numCol = len(tabella[0])
trasposta = []
for col in range(numCol):
trasposta.append([])
# itera su tutte le liste (il numero di righe)
for riga in range(len(tabella)):
# crea una lista temporanea contenente una lista per ogni colonna
trasposta[col].append(tabella[riga][col])
# crea una lista con le larghezze max di ogni colonna
larghezze = []
for y in range(numCol):
max = 0
for a in trasposta[y]:
if len(a) > max:
max = len(a)
larghezze.append(max)
# padding di ogni stringa alla larghezza max della propria colonna
for row in tabella:
for col in range(len(larghezze)):
row[col] = row[col].ljust(larghezze[col]) + " "
var = ''
for row in tabella:
var += "".join(row)+"\n"
# salvi su file come stringa
with open('/tmp/file.txt', 'w') as f:
f.write(var)
# carichi i dati dal file
with open('/tmp/file.txt', 'r') as f:
var = f.read()
# fai quello che devi con la var
print(var) # tanto per esempio
$ ./incolonna.py
Brignola Gianni apsd Napolisud A
Fiorentino Bruno apsd Napolisud A
Borghini Aldo apsd Napolisud A
$
-
raffaele63
- Scoppiettante Seguace

- Messaggi: 348
- Iscrizione: lunedì 3 ottobre 2011, 12:27
- Desktop: Lubuntu
- Distribuzione: Lubuntu 22.04.1 LTS (Jammy Jellyfis
- Sesso: Maschile
Re: Trasformare file.txt in PDF o LibreOffice
Grazie per le risposte.
Proverò ad esporre meglio quello che mi succede, premettendo che il mio linguaggio informatico non è sicuramente corretto (come ti sarai accorto
)
per lo script lo si può trovare qui, (mi sono accorto dopo che la segnalazione di Cortinico già la indicava) ma il problema , secondo me non è li.
Dopo l'assegnazione dei dati al file: se guardi nell'URL che ti ho segnalato troverai questo parte di codice tranne la parte '+testo'.
Grazie e Buon Anno.
Proverò ad esporre meglio quello che mi succede, premettendo che il mio linguaggio informatico non è sicuramente corretto (come ti sarai accorto
per lo script lo si può trovare qui, (mi sono accorto dopo che la segnalazione di Cortinico già la indicava) ma il problema , secondo me non è li.
Dopo l'assegnazione dei dati al file:
- - aprendo il file con Leafpad ottengo la lista dei dati non ordinati
- aprendo il file con LibreOffice ho una lista perfetta
- aprendo da LibreOffice il file (comando Inserisci / File) ottengo la lista dei dati non ordinati
- ed anche nel PDF i dati restano non ordinati
Codice: Seleziona tutto
TEXT = """%s pagina %d di %d
"""+testoGrazie e Buon Anno.
Bisognerebbe evitare di predicare ai giovani il successo nella solita forma come lo scopo principale nella vita.
Il motivo più importante per lavorare a scuola e nella vita è il piacere nel lavoro, piacere nel suo risultato e la conseguenza del valore del risultato per la comunità. ( A.E. )
Il motivo più importante per lavorare a scuola e nella vita è il piacere nel lavoro, piacere nel suo risultato e la conseguenza del valore del risultato per la comunità. ( A.E. )
-
raffaele63
- Scoppiettante Seguace

- Messaggi: 348
- Iscrizione: lunedì 3 ottobre 2011, 12:27
- Desktop: Lubuntu
- Distribuzione: Lubuntu 22.04.1 LTS (Jammy Jellyfis
- Sesso: Maschile
Re: Trasformare file.txt in PDF o LibreOffice
Salve,
per tutto il giorno non ho avuto linea, la signora TIM ha problemi con i propri impianti e a noi poveri mortali non resta che accettare e pagare. Tempo fa avevo chiesto di attivare solo la linea Nacked (notare che le centraline sono presenti ed attive) ma il colosso mi ha risposto che non è possibile soddisfare la mia richiesta ecc.
Scusate lo sfogo ma troppo potere in mano a pochi è molto pericoloso per un sacco di motivi.
Tornando all'argomento principale del mio intervento, io avrei risolto perché grazie alla collaborazione di persone come rai, cortinico ed altri, posso mettere risolto alla discussione.
Spiegazione:
per tutto il giorno non ho avuto linea, la signora TIM ha problemi con i propri impianti e a noi poveri mortali non resta che accettare e pagare. Tempo fa avevo chiesto di attivare solo la linea Nacked (notare che le centraline sono presenti ed attive) ma il colosso mi ha risposto che non è possibile soddisfare la mia richiesta ecc.
Scusate lo sfogo ma troppo potere in mano a pochi è molto pericoloso per un sacco di motivi.
Tornando all'argomento principale del mio intervento, io avrei risolto perché grazie alla collaborazione di persone come rai, cortinico ed altri, posso mettere risolto alla discussione.
Spiegazione:
- - salvo i dati estratti in un file denominato 'nome.txt';
- apro LibreOffice (per la prima volta) / Nuovo;
- copio il file 'nome.txt' con i comandi Inserisci / File;
- chiudo salvando, ma l'estensione .txt non è prevista, quindi salvo .odt;
- così il file 'nome.odt' è sempre presente e posso riutilizzarlo ogni volta che serve;
- oppure salvo direttamente in PDF;
Bisognerebbe evitare di predicare ai giovani il successo nella solita forma come lo scopo principale nella vita.
Il motivo più importante per lavorare a scuola e nella vita è il piacere nel lavoro, piacere nel suo risultato e la conseguenza del valore del risultato per la comunità. ( A.E. )
Il motivo più importante per lavorare a scuola e nella vita è il piacere nel lavoro, piacere nel suo risultato e la conseguenza del valore del risultato per la comunità. ( A.E. )
-
rai
- Imperturbabile Insigne

- Messaggi: 2886
- Iscrizione: domenica 11 maggio 2008, 18:03
- Desktop: plasma
- Distribuzione: 22.04
- Località: Palermo
Re: [Risolto]Trasformare file.txt in PDF o LibreOffice
Ciao Raffaele
Mi fa piacere che hai risolto
e visto che hai richiesto osservazioni, ecco le mie:
il fatto che l'output di quel codice, dopo il salvataggio su file, abbia un aspetto diverso a secondo di come lo apri dipende evidentemente dalla applicazione e in particolare (penso) dal tipo di font.
Inoltre, non so se hai veramente necessità di salvare le tabelle _su_file_di_testo_ invece di creare al volo i pdf, certo questa serie di passaggi di formato sembra farraginosa
Ho visto lo script che hai linkato da PyPDF2: non mi è sembrato un esempio particolarmente adeguato a quello che chiedevi ma mi ha incuriosito
Perciò l'ho modificato in modo che la funzione make_pdf_file() crei il pdf in dipendenza dal testo che passi come primo argomento( il secondo è il path del pdf di output)
prova se si adatta a quello che ti serve
EDIT modificato il codice per mantenere lo stesso carattere ad ogni nuova pagina. Comunque non mi sembra sensato dovere fare così quindi se qualcuno conosce la libreria intervenga a correggermi ;-)
Mi fa piacere che hai risolto
il fatto che l'output di quel codice, dopo il salvataggio su file, abbia un aspetto diverso a secondo di come lo apri dipende evidentemente dalla applicazione e in particolare (penso) dal tipo di font.
Inoltre, non so se hai veramente necessità di salvare le tabelle _su_file_di_testo_ invece di creare al volo i pdf, certo questa serie di passaggi di formato sembra farraginosa
Ho visto lo script che hai linkato da PyPDF2: non mi è sembrato un esempio particolarmente adeguato a quello che chiedevi ma mi ha incuriosito
Perciò l'ho modificato in modo che la funzione make_pdf_file() crei il pdf in dipendenza dal testo che passi come primo argomento( il secondo è il path del pdf di output)
Codice: Seleziona tutto
#!/usr/bin/env python
#-*- coding: utf-8 -*-
"Crea un semplice pdf; il n° di pagine dipende dalla lunghezza del testo."
from reportlab.pdfgen import canvas
point = 1 # un punto, in altezza è 1/72 di pollice
inch = 72
def make_pdf_file(input_text, output_filename):
font = "Courier" # NON proporzionale
fontSize = 12 * point # in A4 ci entrano 59 righe se fontSize=12
c = canvas.Canvas(output_filename)
c.setFont(font, fontSize)
margineSn = 1 * inch
primoRigo = 10.7 * inch # posizione verticale del primo rigo
rigo = primoRigo
for line in input_text.split( '\n' ):
if rigo <= inch:
c.showPage() # crea una nuova pagina
c.setFont(font, fontSize) # ma serve veramente a ogni nuova pagina? :(
rigo = primoRigo
c.drawString( margineSn, rigo, line )
rigo -= fontSize # scendiamo di un rigo
c.save()
if __name__ == "__main__":
# se esegui il file invece di usare la funzione
# crea un pdf di esempio
text = ''
for rigo in range(70):
text = "{}#{:2d} ".format(text, rigo)
for decina in range(6):
for n in range(10):
text = text + str(n)
text = text + ' '
text = text + '\n'
filename = "/tmp/simple.pdf"
make_pdf_file(text, filename)
EDIT modificato il codice per mantenere lo stesso carattere ad ogni nuova pagina. Comunque non mi sembra sensato dovere fare così quindi se qualcuno conosce la libreria intervenga a correggermi ;-)
Ultima modifica di rai il lunedì 4 gennaio 2016, 13:00, modificato 1 volta in totale.
Chi c’è in linea
Visualizzano questa sezione: 0 utenti iscritti e 4 ospiti