Il 26/11/2010 01:46, Paolo Mantovani ha scritto:
Ciao Bart,

Ciao Paolo

...zoootttt...
Ho ripetuto l'operazione usando il DispatchToApiRecorder-20060707.uno.pkg
di Paolo Mantovani (e che spero legga ancora questa lista),

presente.

Ottimo! :-)
...zott....
In rete ho trovato anche questa soluzione:
http://user.services.openoffice.org/en/forum/viewtopic.php?f=20&t=25535

basata anche questa sulla modifica delle printareas.

Va detto che l'esportazione basata su printareas è l'esatto contrario dell'esportazione di un range selezionato, quindi mi pare un sistema un po contraddittorio.

Giusto! Non l'avevo valutata da questa angolazione.
Il mio sguardo (peraltro non ben esplicitato nel mio messaggio) partiva dal "lato utente". Ovvero l'inaffidabile utente si ritrova ad impostare per ciascun foglio del suo Doc una serie di parametri, comprese le aree di stampa che vengono "registrate" come printareas.
Questo è ciò che vede e che verifica con la preview.
Ma, quando va in "stampa" (nel mio caso specifico almeno) è nella necessità di stampare una sola sheet per volta.
Se fa a manina e:
1) non ha selezionato un range
2) si ricorda di mettere la spunta su "Selezione"
la sheet viene stampata correttamente (e solo quella)

Ma l'esperienza mi insegna che si inciampa spesso uno di quei due errori.
(come utente sono mediamente inaffidabile)

Da qui l'idea di avere una macro che bypassi la possibilità di sbagliare esportando in pdf solo l'area di stampa della sheet attiva.



In ogni modo, ...zooottttt...

Qualche buona idea ?

Ovviamente, :-) ma prima non potevo esimermi dal triturarti i maroni con una pedante und prolissa und irritante spiegazione tecnica.

che malgrado il mio taglio del quoting ho letto con attenzione ed interesse (il dispatch.. questo sconosciuto...)


La prima idea è guardare la docu ufficiale:
http://wiki.services.openoffice.org/wiki/API/Tutorials/PDF_export

ok! RTFM... :-) ma ne converrai che è roba piuttosto difficile da digerire!

Applicando la documentazione si ottiene il seguente codice:

sub test

  'prepara il range da esportare:
  oRng = ThisComponent.Sheets.Foglio1.getCellRangeByName("A15:B17")

Ottimo, certamente funziona!... potremmo quindi aggiungere un [Solved]... invece modifico il titolo della discussione.

Infatti, non a caso, mi sono fermato su quella riga del tuo codice.
Perché Il presupposto per fare bingo è quello di avere un range preciso.
Ma come accennavo sopra il "range preciso" vorrebbe essere quello impostato nella printareas di quella sheet e ci si trova quindi nella necessità di andare a leggerlo. E qui casca l'asino perché non riesco a recuperare la printareas di una sheet.

Print_area = ThisComponent.currentController.activeSheet.getPrintAreas

dovrebbe "contenere" un array con il range cercato... ma non riesco ad "aprirlo"...

(Ovvio, oltre a non comprendere a fondo lo sforzo di taglio ho qualche problema con gli array)

L'idea sarebbe quella di appunto di leggere la printareas della sheet attiva, e poi di riproporla come range da stampare!

Ma:
xray  Print_area
mi restituisce:    0 | Structure : com.sun.star.table.CellRangeAddress
ovvero un index min = 0 , index max = 0

temo ci sia qualcosa che non va...

Nelle mie prove il codice ha funzionato senza intoppi.
Con questa impostazione, oltre a ridurre la gran massa del codice si evita di pastrocchiare con le printareas

Anche nelle mie ha funzionato alla grande... ed è giusto evitare di pastrocchiare le printareas, ma si riesce almeno a leggerle?


Ciao e Grazie per la pazienza

Bart


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Rispondere a