Sei sulla pagina 1di 3

def existingDoc = docman.getNodeByName(self.parent, "orizzontale.

pdf")

log.error("${existingDoc}")

signers = [ [fullname: 'Luca Serra', role:'OPERATION',


signtype:'Autorizzazione'],
[fullname: 'Mario Rossi', role:'CEO', signtype:'Autorizzazione'],
[fullname: 'Pierantonio Verdi della Geradesca', role:'Ragioniere',
signtype:'Validazione'],
[fullname: 'Luca Serra', role:'President',
signtype:'Autorizzazione'],
[fullname: 'Mario Rossi', role:'QUALITY',
signtype:'Autorizzazione'],
[fullname: 'Pierantonio Verdi della Geradesca', role:'Ragioniere',
signtype:'Validazione'],
[fullname: 'Luca Serra', role:'President',
signtype:'Autorizzazione'],
[fullname: 'Mario Rossi', role:'CEO', signtype:'Autorizzazione'],
[fullname: 'Pierantonio Verdi della Geradesca', role:'Ragioniere',
signtype:'Validazione'],
[fullname: 'Pierantonio Verdi della Geradesca', role:'Ragioniere',
signtype:'Validazione'],
[fullname: 'Pierantonio Verdi della Geradesca', role:'Ragioniere',
signtype:'Validazione'],
[fullname: 'Pierantonio Verdi della Geradesca', role:'Ragioniere',
signtype:'Validazione'],
[fullname: 'Pierantonio Verdi della Geradesca', role:'Ragioniere',
signtype:'Validazione'],
[fullname: 'Pierantonio Verdi della Geradesca', role:'Ragioniere',
signtype:'Validazione'],
[fullname: 'Pierantonio Verdi della Geradesca', role:'Ragioniere',
signtype:'Validazione'],
[fullname: 'Luca Serra', role:'OPERATION',
signtype:'Autorizzazione'],
[fullname: 'Mario Rossi', role:'CEO', signtype:'Autorizzazione'],
[fullname: 'Pierantonio Verdi della Geradesca', role:'Ragioniere',
signtype:'Validazione'],
[fullname: 'Luca Serra', role:'President',
signtype:'Autorizzazione'],
[fullname: 'Mario Rossi', role:'QUALITY',
signtype:'Autorizzazione'],
[fullname: 'Pierantonio Verdi della Geradesca', role:'Ragioniere',
signtype:'Validazione'],
[fullname: 'Luca Serra', role:'President',
signtype:'Autorizzazione'],
[fullname: 'Mario Rossi', role:'CEO', signtype:'Autorizzazione'],
[fullname: 'Pierantonio Verdi della Geradesca', role:'Ragioniere',
signtype:'Validazione'],
[fullname: 'Pierantonio Verdi della Geradesca', role:'Ragioniere',
signtype:'Validazione'],
[fullname: 'Pierantonio Verdi della Geradesca', role:'Ragioniere',
signtype:'Validazione'],
[fullname: 'Pierantonio Verdi della Geradesca', role:'Ragioniere',
signtype:'Validazione'],
[fullname: 'Pierantonio Verdi della Geradesca', role:'Ragioniere',
signtype:'Validazione'],
[fullname: 'Pierantonio Verdi della Geradesca', role:'Ragioniere',
signtype:'Validazione'],
[fullname: 'Pierantonio Verdi della Geradesca', role:'Ragioniere',
signtype:'Validazione'],
[fullname: 'Luca Serra', role:'OPERATION',
signtype:'Autorizzazione'],
[fullname: 'Mario Rossi', role:'CEO', signtype:'Autorizzazione'],
]

//return sign(existingDoc, signers, 2)


return sign(existingDoc, signers, signers.size(), [2,3])

def sign(pdfResource, signerList, currentSigner, whichPages = [], type = 1){

//All the pages


allPages = 1..(pdf.getPages(pdfResource))
whichPages = whichPages.size() == 0 ? allPages : whichPages
nsigner = signerList.size()
log.error("signerList size ${nsigner}")
overlay = docbuilder.createPDF("signed overlay")
{
if (type == 1) {
def ncol = 0
def nrow = 0
if (nsigner <= 7) {
ncol = nsigner
}
else if (nsigner > 7) {
ncol = 7
}
else {
nrow = Math.ceil (nsigner / 7)
}
//def totslot = 25
//def ncol = Math.ceil(signers.size / 4)
// def nrow = Math.ceil(nsigner / ncol) as int
def counter = 0

document(
margin: [top: (8.5).inches, bottom: 0.inch],
pageCount: 1
){
table( columns: (1..ncol).collect{25}, padding:1, font:[size:5.px],
border:[size:1]){
(1..nrow).each{
row{
(1..ncol).each{
x = signerList?[counter]
log.error("x ${x}")
if (x && counter<=currentSigner){
cell{
text "Per ${x.signtype}"
lineBreak()
text "${x.role}"
lineBreak()
text "${x.fullname}", font: [italic: true,
bold:true]
}
} else{
cell ""
}
counter++
}
}
}
}
}
}
}

def tempFile
log.error("whicPages ${whichPages}")
log.error("allPages ${allPages}")
log.error("allPages size ${allPages.size()}")
allPages.each {
//Extract single page
singlePage = pdf.extractPageRange(pdfResource, it, it)

//If single page is to sign then apply overlay overit


res = (it in whichPages) ? pdf.overlay(singlePage, overlay) : singlePage

//Merge single page with previous pages


tempFile = tempFile!=null ? pdf.merge(tempFile.content, res?.content) : res
}

return tempFile
}

Potrebbero piacerti anche