Salve forum/lista. Da felice utilizzatore della gemma pdf-writer ho avuto la malsana idea di cominciare a provare prawn, in quanto ci sono voci che quest'ultima andrà a sostituire la prima. Vi evito il racconto delle (dis)avventure e delle ore perse per capirne la logica e il funzionamento ringraziando la documentazione a dir poco scarsa e un approccio secondo me non molto intuitivo e andiamo al dunque. Sto cercando di creare la stampa di una fattura, ho bisogno di un'intestazione, un pié di pagina e un corpo centrale variabile nel quale ci sono una tabella con la lista degli oggetti della fattura e altre due tabelline più piccole che contengono il calcolo dell'IVA e i totali. Con prawn le intestazioni e i pié di pagina non sono gestiti, per cui bisogna crearseli a mano; ho quindi fatto delle bounding box ripetute in ogni pagina, e fin qui ci sono. Per il corpo centrale ho create un'altra bounding box contenente le tre tabelline. Funziona tutto finché il contenuto resta su una pagina e adeguatamente distante dal pié di pagina, o ci sono abbastanza oggetti da dover passare su di un'altra; il problema si presenta quando la prima tabella con gli oggetti è di poco inferiore alla dimensione della bounding box, quindi non è necessaria una nuova pagina. In questo caso infatti le due tabelline sotto la maggiore NON sono passate alla pagina seguente (che naturalmente non viene generata), ma vanno simpaticamente a sovrascrivere gli elementi del pié di pagina, uscendo quindi dalle dimensioni massime della bounding box che le contiene. Riassumendo: c'è un qualche sistema per rendere non oltrepassabili i margini di una bounding box? O un altro sistema migliore per gestire i "pié di pagina" (nel mio caso un'altra semplice bounding box) in modo che non vengano sovrascritti? Sto buttando all'aria internet, ma finora non ho trovato nulla di utile... Se avete sistemi migliori e/o esempi pratici, mandate pure :-) Grazie in anticipo e a presto :-)
on 2010-08-11 14:33
on 2010-08-11 15:01
2010/8/11 Daneel Olivaw <daneel.olivaw.r@gmail.com>: > Riassumendo: c'è un qualche sistema per rendere non oltrepassabili i > margini di una bounding box? O un altro sistema migliore per gestire i > "pié di pagina" (nel mio caso un'altra semplice bounding box) in modo > che non vengano sovrascritti? se on ricordo male c'è un metodo che ti restituisce la dimensione *finale* di un b-box... usando quello puoi verificare se la parte di tabella che stai per inserire in pagina è tutta contenuta o devi spaccarla in più parti. > Sto buttando all'aria internet, ma finora non ho trovato nulla di > utile... > > Se avete sistemi migliori e/o esempi pratici, mandate pure :-) io sto facendo *esattamente* la stessa cosa, magari possiamo risparmiare un po di fatica se facciamo in due ;-) io ho trovato molto utili gli esempi di codice http://github.com/sandal/prawn/tree/master/examples/ e gli doc http://rdoc.info/projects/sandal/prawn in particolare guarda i metodi (overruns_page?, absolute_* e stretchy?) michele
on 2010-08-11 15:33
Michele Franzin wrote: > se on ricordo male c'� un metodo che ti restituisce la dimensione *finale* > di un b-box... usando quello puoi verificare se la parte di tabella che > stai > per inserire in pagina � tutta contenuta o devi spaccarla in pi� parti. Proprio quello che volevo evitare... '''-_- > io sto facendo *esattamente* la stessa cosa, magari possiamo > risparmiare un po di fatica se facciamo in due ;-) Io ci sto, ma ti avverto che scrivo codice in maniera tremenda '^_^ (sarà la volta buona che imparo qualcosa di più?) > > io ho trovato molto utili gli esempi di codice > > http://github.com/sandal/prawn/tree/master/examples/ > > e gli doc > > http://rdoc.info/projects/sandal/prawn Sì, li sto consultando, ma rimpiango ancora il manuale in pdf di pdf/writer: uno dei più completi e chiari mai trovati... > > in particolare guarda i metodi (overruns_page?, absolute_* e stretchy?) Grazie del suggerimento, guardo subito :-) Daneel Olivaw
on 2010-08-12 09:34
Alessandro Scolavino wrote:
> Ti suggerisco di iscriverti alla mailing list di prawn, è molto attiva
Sapessi scrivere decentemente in inglese quello che intendo... :-)
on 2010-08-12 11:36
Daneel Olivaw wrote: > Michele Franzin wrote: > >> se on ricordo male c'� un metodo che ti restituisce la dimensione *finale* >> di un b-box... usando quello puoi verificare se la parte di tabella che >> stai >> per inserire in pagina � tutta contenuta o devi spaccarla in pi� parti. > > Proprio quello che volevo evitare... '''-_- Soluzione forse non molto elegante, ma funziona: dopo la generazione della tabella ho messo: if cursor < 60 start_new_page end Il "60" è un numero che ho ricavato in maniera abbastanza aleatoria facendo prove con tabelle di diversa lunghezza. Per fare le cose in maniera più carina, sarebbe da aggiungere l'eventuale ridimensionamento della lunghezza della bounding box per fare in modo che nella nuova pagina non ci vadano solo le tabelline sotto quella con gli articoli della fattura, ma anche almeno l'ultimo di questi, tanto per dare un senso di continuità , ma finora non ci sono riuscito.
on 2010-08-12 11:49
2010/8/12 Daneel Olivaw <daneel.olivaw.r@gmail.com>: > Soluzione forse non molto elegante, ma funziona: > l'eventuale ridimensionamento della lunghezza della bounding box per > fare in modo che nella nuova pagina non ci vadano solo le tabelline > sotto quella con gli articoli della fattura, ma anche almeno l'ultimo di > questi, tanto per dare un senso di continuità , ma finora non ci sono > riuscito. aggiungi un b-box con altezza 60-cursor come ultimo elemento e gli altri articoli saranno nella uova pagina. guarda l'oggetto table, ha un'opzione per ristampare gli header nella nuova pagina michele
on 2010-08-12 12:30
Michele Franzin wrote: > 2010/8/12 Daneel Olivaw <daneel.olivaw.r@gmail.com>: >> Soluzione forse non molto elegante, ma funziona: >> l'eventuale ridimensionamento della lunghezza della bounding box per >> fare in modo che nella nuova pagina non ci vadano solo le tabelline >> sotto quella con gli articoli della fattura, ma anche almeno l'ultimo di >> questi, tanto per dare un senso di continuità , ma finora non ci sono >> riuscito. > > aggiungi un b-box con altezza 60-cursor come ultimo elemento > e gli altri articoli saranno nella uova pagina. Non ho capito molto bene, comunque sto provando, ma il risultato non cambia :-) Da quello che ho visto, basta che la lunghezza della tabella superi quella della b-box e viene creata un'altra pagina, quindi pensavo che se riuscivo a rimpicciolire al volo di un po' la b-box avevo tutto in automatico. > guarda l'oggetto table, ha un'opzione per ristampare gli header nella > nuova pagina Lo fa già di default :-)
on 2010-08-12 15:00
2010/8/12 Daneel Olivaw <daneel.olivaw.r@gmail.com>: >> e gli altri articoli saranno nella uova pagina. intendevo dire: verifica la dimensione delle righe fattura che vuoi aggiungere ed appena una ha altezza superiore allo spazio rimanente (60-cursor) al suo posto aggiungi un b-box alto esattamente quanto lo spazio rimanente. > Non ho capito molto bene, comunque sto provando, ma il risultato non > cambia :-) funziona, ne ho le prove ;-) [...] >> guarda l'oggetto table, ha un'opzione per ristampare gli header nella >> nuova pagina > > Lo fa già di default :-) meglio ancora! michele
on 2010-08-16 17:27
Scusate lo spam, seguo silenziosamente da un po' la lista, dopo anni passati a scrivere Java & C# sono felicemente passato a ruby (per chi non mi conosce, http://www.the-arm.com) Lavoro attualmente per http://www.forward.co.uk/ e mi sto divertendo parecchio, ma al momento stiamo faticando a trovare gente brava su ruby con discreta esperienza. Usiamo mongoDB, node.js, sinatra, hadoop, hive... L'ambiente e' decisamente agile, molti sviluppatori arrivano da ThoughtWorks UK. Se siete interessati mandatemi un'email. Grazie
on 2010-08-16 18:22
2010/8/16 Antonio Terreno <antonio.terreno@gmail.com>: > Scusate lo spam, > seguo silenziosamente da un po' la lista, dopo anni passati a scrivere Java & C# sono felicemente passato a ruby (per chi non mi conosce, http://www.the-arm.com) > > Lavoro attualmente per http://www.forward.co.uk/ e mi sto divertendo parecchio, ma al momento stiamo faticando a trovare gente brava su ruby con discreta esperienza. <snip> Non sono in cerca di un lavoro, ma approfitto per complimentarmi, "invisible hand" è _geniale_ soprattutto per il nome :)
on 2010-08-23 17:42
2010/8/16 Antonio Terreno <antonio.terreno@gmail.com> > > L'ambiente e' decisamente agile, molti sviluppatori arrivano da > ThoughtWorks UK. > Quoto quanto dice Gabriele e bisso i complimenti, soprattutto per i nomi delle tecnologie usate. -- Andrea Reginato, http://mikamai.com Writing http://sensejs.wordpress.com/ Collaborating http://therubymine.it Reading http://stacktrace.it
Please log in before posting. Registration is free and takes only a minute.
Existing account
(Switch to SSL-encrypted connection)
NEW: Do you have a Google/GoogleMail or Yahoo account? No registration required!
Log in with Google account | Log in with Yahoo account
Log in with Google account | Log in with Yahoo account
No account? Register here.