Change the PDF report name
-
I would like to change the PDF report's name as
details.pdf
. Here is my request body:{ "template":{ "shortid":"rJtK3I_zW" }, "options": { "Content-Disposition": "attachment; filename=details.pdf" } }
However, the PDF report returned from the server still has the name
response.pdf
.Did I miss anything?
Thanks!
-
it seems to me that you are doing everything ok, but unfortunately the
Content-Disposition
header is very tricky, the behaviour depends on the client of the request, sometimes it does not work on IE, or Chrome, etc, you can check/verify that jsreport is applying your options correctly, just check the response headers of the request... i don't know a way to hack the client's request to always use the filename ofContent-Disposition
.. if you find something please let us know.
-
Thanks, @bjrmatos. Here are the response headers:
Access-Control-Allow-Origin →* Connection →keep-alive Content-Disposition →attachment; filename=details.pdf Content-Type →application/pdf Date →Mon, 10 Jul 2017 15:42:39 GMT File-Extension →pdf Number-Of-Pages →8 Transfer-Encoding →chunked X-Powered-By →Express X-XSS-Protection →0
Does anything look wrong to you?
-
no, everything looks ok. unfortunately it seems that it is the client of the request that is not honoring the
Content-Disposition
header
-
I see. Thank you, @bjrmatos .
-
I'm having a similar problem where I cannot name reports. In my case each report name is some guid like '023bb970-81fc-4945-a5e9-622578a2a723'. I am new to using jsreportsonline and have never actually gotten a normal report name. In my case requests are being made from node using superagent (I also tried with axios but had the same result):
const data = { "template": { "shortid": jsReportOnlineId }, "data": reportData, "options": { "Content-Disposition": "attachment; filename=myreport.pdf", } }; const {username, password} = getJsReportOnlineAuthorizationInfo(); request .post(reportUrl) .set('Content-Type', 'application/json') .responseType('arraybuffer') .auth(username, password) .send(data) .end(function (err, response) {
The generated report looks as desired except for the report name. Here is response header info:
headers: { date: 'Sat, 15 Jul 2017 14:13:50 GMT', 'content-type': 'application/pdf', 'transfer-encoding': 'chunked', connection: 'close', server: 'nginx/1.13.1', 'x-powered-by': 'Express', 'access-control-allow-origin': '*', 'set-cookie': [Object], 'content-disposition': 'attachment; filename=myreport.pdf', 'file-extension': 'pdf', 'number-of-pages': '2', 'x-xss-protection': '0' }, rawHeaders: [ 'Date', 'Sat, 15 Jul 2017 14:13:50 GMT', 'Content-Type', 'application/pdf', 'Transfer-Encoding', 'chunked', 'Connection', 'close', 'Server', 'nginx/1.13.1', 'X-Powered-By', 'Express', 'Access-Control-Allow-Origin', '*', 'Set-Cookie', 'render-complete=true; Path=/', 'Set-Cookie', 'session=[I removed this]', 'Content-Disposition', 'attachment; filename=myreport.pdf', 'File-Extension', 'pdf', 'Number-Of-Pages', '2', 'X-XSS-Protection', '0' ],