Without Watcher involved I can generate a PDF report and download it like this;
This POST has the "Generation URL" from Kibana;
curl -XPOST -k -u elastic:changeit -H "kbn-xsrf: reporting" 'https://localhost:5601/api/reporting/generate/dashboard/41585f30-2e88-11e7-ab33-956973f3c5b8?_g=(refreshInterval:(display:Off,pause:!f,value:0),time:(from:now-15m,mode:quick,to:now))&_a=(filters:!(),options:(darkTheme:!f),panels:!((col:4,id:Web-transactions,panelIndex:1,row:1,size_x:9,size_y:4,type:visualization),(col:1,id:HTTP-error-codes,panelIndex:2,row:8,size_x:6,size_y:3,type:visualization),(col:7,id:HTTP-error-codes-evolution,panelIndex:3,row:8,size_x:6,size_y:3,type:visualization),(col:1,id:Navigation,panelIndex:4,row:1,size_x:3,size_y:4,type:visualization),(col:1,id:Total-number-of-HTTP-transactions,panelIndex:5,row:5,size_x:3,size_y:3,type:visualization),(col:4,id:HTTP-codes-for-the-top-queries,panelIndex:6,row:5,size_x:9,size_y:3,type:visualization),(col:1,id:Top-10-HTTP-requests,panelIndex:7,row:11,size_x:12,size_y:5,type:visualization)),query:(query_string:(analyze_wildcard:!t,query:%27*%27)),timeRestore:!f,title:%27Packetbeat+HTTP+1%27,uiState:(P-7:(vis:(params:(sort:(columnIndex:!n,direction:!n))))),viewMode:view)'
And this gets the download with curl and redirects it to a pdf file (wget might be more appropriate). I got the URL from the Kibana log (its also in the response from the POST).
curl -k -u elastic:changeit 'https://localhost:5601/api/reporting/jobs/download/j26bv6ud01jx8f5fe5fnexbv'