J'essaie d'utiliser le plugin de rendu pour enregistrer un fichier PDF généré dans un fichier lorsqu'une action du contrôleur pour générer un fichier PDF est affichée. Je en suivant les instructions par: http://gpc.github.com/grails-rendering/docs/manual/index.htmlGrails Rendering plugin enregistrer dans le fichier
def pdf = {
def project = Project.get(params.id)
def numGoodMilestones = queryService.getGoodShapeMilestonesCount(project)
def totalMilestones = project.milestones.size()
def updateHistory = queryService.getReadableHistory(project)
def summaryName = "${project.name.replace(" ","_")}_summary_${String.format('%tF', new Date()).replace(" ","_")}"
if(!project)
{
flash.message = g.message(code:'default.not.found.message',
args:[message(code:'project.label',default:'Project'),params.id])
redirect(uri:'/')
}
// see if a summary has been generated with this data and attached to the
// project. If not, do it.
def existingAttachedSummary = ProjectDocument.findByName(summaryName)
if(!existingAttachedSummary)
{
//make the file
def savedSummary = new File(summaryName).withOutputStream { outputStream ->
pdfRenderingService.render(controller:this,
template: "projectDetail",
model:[project:project,
numGoodMilestones:numGoodMilestones,
totalMilestones:totalMilestones,
updateHistory: updateHistory])
}
def projectDocument = new ProjectDocument(name:summaryName,
description:"Project summary automatically generated on ${new Date()}}",
fileData:savedSummary,
owner: springSecurityService.currentUser,
project:project
)
if(projectDocument.validate())
{
projectDocument.save(flush:true)
flash.message="I saved a document, yo. ${projectDocument}."
}
else
{
flash.message="Errors, yo. ${projectDocument.errors.allErrors.each{ it }}."
}
}
else
{
flash.message = "project summary already attached to project"
}
renderPdf(template: "projectDetail",
model:[project:project, numGoodMilestones:numGoodMilestones, totalMilestones:totalMilestones, updateHistory: updateHistory],
filename: "${summaryName}.pdf")
}
La méthode renderPdf() fonctionne très bien, comme la sortie dans mon navigateur est ce qu'on attend. Mais quand je regarde le ProjectDocument créé, je vois un fichier PDF vide. J'essaye d'enregistrer dans un fichier de la même manière que celle décrite par la documentation de rendu. Qu'est-ce que je fais mal?
Avez-vous déjà eu ce travail? –