Forum
>>
Programmazione Python
>>
Files e Directory
>>
MERGE FILE PDF CON PyPDF2
Pagina: 1
Esegui il login per scrivere una risposta.
Pagina: 1
Scritto da ffabio75 |
2023-03-24 12:50:21 - MERGE FILE PDF CON PyPDF2
|
Buongiorno a Tutti,
Sotto la cartella c:\merge\ ho una serie di file pdf chiamati file_1.pdf, file_2.pdf, file_3.pdf, .... file_10.pdf nel mio programma ho una lista (1:3,4:7,8:10) quindi lo scopo sarebbe mettere insieme i vari pdf dall' 1 al 3 poi dal 4 al 7 e dall' 8 al 10 Sono PDF di una pagina quindi avrei alla fine 3 pdf . NewMergedFile 1 _3_.pdf NewMergedFile 4 _7_.pdf NewMergedFile 8 _10_.pdf Ho provato a sviluppare la mia idea ma adesso quando lo lancio non mi da errore ma non mi fa nulla . Sono alle prime armi scusate ci sono ancora molte cose che non capisco . come ad esempio perchè ho dovuto mettere questa istruzione per uscire dal ciclo while . Grazie mille in anticipo del vostro aiuto import PyPDF2 mergeFile = PyPDF2.PdfFileMerger() # Setta la stringa delle pagine da fare il merge # l'intervallo pag_inizio separatore ":" pag_fine # es. 1:3 da pagina 1 a pagina 3 # es. 1:1 conterra iuna sola pagina la 1 my_string = "4:7" # mi crea una lista tokens (1:3,4:7,8:10) composta da tre elementi tokens = my_string.split(',') #in value ci sarà una lista con la pagina iniziale e quella finale value = tokens0.split(':') # >>> print(value0) # 4 # >>> print(value1) # 7 # dovro' fare il merge delle pagine dalla 4 alla 7 comprese # inizio a prendere ogni pagina della lista tokens : ind_intervallo = 1 numero_coppie = int(len(tokens)) while ind_intervallo <= numero_coppie: if (ind_intervallo == numero_coppie) : break print(ind_intervallo) print(len(tokens)) value = tokensind intervallo.split(':') print(tokens) i= int(value0) print (i) print (value1) while int(i) <= int(value1): print("ENTRO CICLO INTERNO WHILE") str_file_1 = "C:\\merge\\file_"+ str(i) +".pdf" print(str(str_file_1)) mergeFile.append(PyPDF2.PdfFileReader(str_file_1, 'rb')) i+=1 print(i) nome_merge_file="C:\\merge\NewMergedFile_"+ str(value0) + "_A_"+str(value1)+".pdf" print(nome_merge_file) mergeFile.write("C:\\merge\NewMergedFile_"+ str(value0) + "_A_"+str(value1)+".pdf") ind_intervallo += 1 |
|
Scritto da nuzzopippo |
2023-03-24 18:45:34 - Re: MERGE FILE PDF CON PyPDF2
|
Ciao, riguardo
L'istruzione "break" serve ad interrompere un loop, ed è la causa del "non far niente" del Tuo script, par come la hai posta ti fa uscire immediatamente dal ciclo "while" primario, quindi nessuna delle istruzione seguenti viene eseguita, ho modificato un pochino il Tuo script, tra l'altro sostituendo con "os.path.join()" la costruzione dei nomi di files da Te adottata (ti suggerirei di studiarti ed utilizzare tali moduli) ma lasciandolo essenzialmente inalterato (anche se Ti suggerirei di vederti l'utilizzo delle liste con cicli for) e facendo in modo di non mischiare i files originali con i nuovi prodotti, ho stabilito i file di origine contenuti in una sub-directory di quella contenente lo script, in tale condizione: (tests_v) NzP:~$ tree . ├── merge │ ├── file_10.pdf │ ├── file_1.pdf │ ├── file_2.pdf │ ├── file_3.pdf │ ├── file_4.pdf │ ├── file_5.pdf │ ├── file_6.pdf │ ├── file_7.pdf │ ├── file_8.pdf │ ├── file_9.pdf │ └── merge_3.py ├── merge_3bis.py ├── NewMergedFile_1_A_3.pdf ├── NewMergedFile_4_A_7.pdf └── NewMergedFile_8_A_10.pdf 1 directory, 15 files (tests_v) NzP:~$ ... il codice è questo che segue import PyPDF2 import os # Setta la stringa delle pagine da fare il merge # l'intervallo pag_inizio separatore ":" pag_fine # es. 1:3 da pagina 1 a pagina 3 # es. 1:1 conterra iuna sola pagina la 1 my_string = "1:3,4:7,8:10" # mi crea una lista tokens (1:3,4:7,8:10) composta da tre elementi tokens = my_string.split(',') #in value ci sarà una lista con la pagina iniziale e quella finale value = tokens[0].split(':') # >>> print(value[0]) # 4 # >>> print(value[1]) # 7 # dovro' fare il merge delle pagine dalla 4 alla 7 comprese # inizio a prendere ogni pagina della lista tokens : ind_intervallo = 1 numero_coppie = int(len(tokens)) while ind_intervallo <= numero_coppie: mergeFile = PyPDF2.PdfFileMerger() print(ind_intervallo) print(len(tokens)) value = tokens[ind_intervallo-1].split(':') print(tokens) i= int(value[0]) print (i) print (value[1]) while int(i) <= int(value1): print("ENTRO CICLO INTERNO WHILE") str_file_1 = os.path.join("merge", f'file_{i}.pdf') print(str(str_file_1)) mergeFile.append(PyPDF2.PdfFileReader(str_file_1, 'rb')) i+=1 print(i) nome_merge_file=f'NewMergedFile_{value[0]}_A_{value[1]}.pdf' print(nome_merge_file) mergeFile.write(nome_merge_file) if (ind_intervallo == numero_coppie) : break ind_intervallo += 1(Io uso linux) guarda le differenze dello script che segue rispetto al Tuo In particolare, cerca di comprendere il "perché" della diversa posizione per "mergefile" e l'istruzione break (per altro inutile nel caso esposto) Ciao EDIT : cercato di correggere varie alterazioni dovute allo editor dei post, non sono riusciti bene i nomi dei files risultanti nel tree del terminale linux, dalla anteprima sembra in ordine ma ... --- Ultima modifica di nuzzopippo in data 2023-03-24 18:49:16 --- --- Ultima modifica di nuzzopippo in data 2023-03-24 18:55:49 --- Fatti non foste a viver come bruti... |
Pagina: 1
Esegui il login per scrivere una risposta.