[Python] Taglia e cuci di PDF

Manlio Perillo manlio.perillo a gmail.com
Ven 19 Set 2014 15:22:14 CEST


2014-09-19 15:01 GMT+02:00 Daniele Varrazzo <piro a develer.com>:

> On 2014-09-19 13:32, Manlio Perillo wrote:
>
>> 2014-09-19 14:08 GMT+02:00 Daniele Varrazzo <piro a develer.com>:
>>
>>  [...]
>>>
>>
>> Proprio pochi minuti fa mi e' venuto in mente che sia chordlab che rst2pdf
>>
>>> usano reportlab come motore di rendering. Anziche' usare chordlab come
>>> processo esterno potrei usarlo come libreria e scrivere nello stesso
>>> documento che sto generando.
>>>
>>>
>>>
Piccola nota: il suggerimento che ti avevo dato era esattamente quanto hai
scritto sopra.  Usare chordlab come libreria che generi un flowable di
reportlab da includere nel tuo documento.


>  Potrebbe essere una alternativa, ma significa fare a meno di reST ed usare
>> reportlab per la gestione del documento finale.
>>
>
> Perdendo reST per la gestione del documento finale non mi perdo molto:
> docutils e' debole in questo e Sphinx in effetti e' nato proprio per
> coprire questa mancanza (ed e' stato quello il momento in cui si e' potuto
> usare reST per generare la documentazione di roba grossa come Python).


Si, infatti stavo assumendo l'uso di sphinx; solo dopo la precedente
risposta ho notato che rst2pdf è un package esterno; ma il discorso non
cambia.


> Gia' usare rst2pdf mi consente di avere di piu', e questo non lo perderei:
> la struttura del documento rimane quella che avevo in mente:
>
>     titolo
>     ------
>
>     Qualche parola di circostanza
>
>     .. song:: the-man-who-sold-the-world.cho
>     .. song:: karma-police.cho
>     .. song:: personal-jesus.cho
>
>     Ringraziamenti finali
>
> solo che la direttiva song, invece di generare un pdf in un file
> temporaneo da unire al documento in una fase successiva al rendering,
> consiste nel richiamare chordlib (la libreria di chordlab), passargli il
> "canvas" o quello che sia di reportlab, e fargli fare la sua cosa li'.
>
>
Si, quello che intendevo.

Io avevo complicato un pò le cose, facendo fare a chordlab il parsing +
rendering di un solo elemento o linea (in modo da avere un formato reST
pseudo-intermedio per il formato cho) ma meglio fargli renderizzare tutto
il documento a meno che non si debba personalizzare qualcosa.

Salto il resto perchè direi che stiamo dicendo la stessa cosa.
Non ero stato preciso, ma non volevo suggerti di reimplementare tutto
quello che fa chordlab nella tua direttiva, ma di usare chordlab come
libreria, opportunamente rifattorizzato.

> [...]


>  Credo tu non abbia nemmeno bisogno di generare il documento reST
>> intermedio, ma puoi generare l'AST direttamente e renderizzarlo in PDF.
>>  Rispetto a reportlab almeno hai tutte le feature "document oriented" di
>> reST.
>>
>> Tutto questo è solo ad intuito, non avendo mai utilizzato reST per fare
>> cose più complicate di un rst2html di un documento standard, ma mi
>> stupirei
>> se non fosse possibile.
>>
>
> Diciamo che il mio compito e' semplificato dal fatto che il songsheet e'
> sempre una pagina a se', mai completamente integrato nel documento. La
> strada di avere un unico AST globale,


Non devi avere proprio un AST globale.

Ripendandoci, come ho già scritto, ti basta un elemento SongBook da
includere nell'AST di reST.
Tale elemento contiene solo il path al song book, e lo puoi renderizzare
usando chordlab come libreria facendogli usare lo stesso canvas che usa
rst2pdf.

comprendente sia le parti di documento che quelle dei songsheet, e' di
> sicuro "elegante", ma se mi costringe a risolvere problemi "specializzati"
> tentando di usare una struttura e un renderer generico potrebbe non essere
> la piu' semplice. Su questo c'e' il fattore risparmio, per cui se ho gia'
> queste due toolchain funzionanti:
>
>     [documento .rst] -> (rst2pdf+reportlab)  -> [file PDF]
>     [documento .cho] -> (chordlab+reportlab) -> [file PDF]
>
> uno dove prova ad integrarsi? Pigro 1: coi pdf. Pigro 2: con reportlab.
> L'alternativa:
>
>     [documento .cho] -> [documento .rst+cho] -> (chorst2pdf) -> [file PDF]
>
>
Si, ma ti costringe a fare cose orrende come parsare i documenti PDF
generat per patcharli (se ho capito bene).

> [...]


Ciao  Manlio
-------------- parte successiva --------------
Un allegato HTML è stato rimosso...
URL: <http://lists.python.it/pipermail/python/attachments/20140919/6155b678/attachment.html>


Maggiori informazioni sulla lista Python