[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: scribus export.py



Ciao!

On Wed, Dec 30, 2020 at 05:03:30PM +0100, Franco Peci wrote:
> Di solito da Scribus con lo script export.py (che copio qui sotto) riesco ad
> esportare tutto il testo di un documento impaginato con lo stesso Scribus,
> compreso i nomi dei files delle immagini.
> In questi giorni con Scribus 1.5.6.1 quando eseguo lo script mi restituisce:

A partire da Scribus 1.5.5+svn23928+dfsg-1 Scribus usa Python3, quindi
tutti gli script dovranno essere resi compatibili.

> Traceback (most recent call last):
>   File "<string>", line 11, in <module>
>   File "<string>", line 43
>     except Exception, e:
>                     ^
> SyntaxError: invalid syntax

Questo è un tipico caso in cui la sintassi è leggermente cambiata da
Python 2 a Python 3 :)

> Chiedo se alcuni di voi esperti di Python possono suggerirmi delle modifiche
> allo script.

Non ho testato, ma noto le seguenti cose, vedi inline nello script

> ========================
> import scribus
> 
> 
> def exportText(textfile):
>     page = 1
>     pagenum = scribus.pageCount()
>     T = []
>     content = []
>     while (page <= pagenum):
>         scribus.gotoPage(page)
>         d = scribus.getPageItems()
>         strpage = str(page)
>         T.append('Page '+ strpage + '\n\n')
>         for item in d:
>             if (item[1] == 2):
>                 imgname = scribus.getImageFile(item[0])
>                 T.append(item[0]+': ' + imgname + '\n')
>         page += 1
>         T.append('\n')

Ti consiglio di cambiare queste 3 righe:

>     output_file = open(textfile,'w')
>     output_file.writelines(T)
>     output_file.close()

nel seguente.  Non è strettamente necessario, ma lo consiglio comunque:

    with open(textfile, 'w') as output_file:
        output_file.writelines(T)

>     endmessage = textfile + ' was created'
>     scribus.messageBox("Finished", endmessage,icon=0,button1=1)
> 
> 
> if scribus.haveDoc():
>     textfile = scribus.fileDialog('Enter name of file to save to', \
>                                   filter='Text Files (*.txt);;All Files (*)')
>     try:
>         if textfile == '':
>             raise Exception
>         exportText(textfile)

qui è l'unico errore che vedo:

>     except Exception, e:
>         print e

cambia queste due righe in (e gia che ci sei, magari manda il messagio a
scribus…)

    except Exception as e:
        print(e)
        scribus.messageBox('Python Exception', str(e), icon=0, button1=1)

> 
> else:
>     scribus.messageBox('Export Error', 'You need a Document open, and a
> frame selected.', \
>                        icon=0, button1=1)
> 

Prova un po' così :)
Tra l'altro facendolo così resta compabile con Python 2.7, quindi nel
caso puoi usarlo anche altrove dove hai una versione di Scribus più
vecchia.

-- 
regards,
                        Mattia Rizzolo

GPG Key: 66AE 2B4A FCCF 3F52 DA18  4D18 4B04 3FCD B944 4540      .''`.
More about me:  https://mapreri.org                             : :'  :
Launchpad user: https://launchpad.net/~mapreri                  `. `'`
Debian QA page: https://qa.debian.org/developer.php?login=mattia  `-

Attachment: signature.asc
Description: PGP signature


Reply to: