Return 使用 spring MVC 和 angularjs 生成 pdf
Return generated pdf using spring MVC With angularjs
我正在尝试做与 Return generated pdf using spring MVC
中相同的事情
但是我正在使用 wkhtmltopdf 所以我稍微修改了上面问题的答案,直到我得到这样的结果。
@RequestMapping(value = "/createhtml2", method = RequestMethod.POST)
public ResponseEntity<byte[]> getPDF() throws IOException {
try {
ProcessBuilder pb = new ProcessBuilder("cmd.exe", "/c", " cd C:\Program Files\wkhtmltopdf\bin && wkhtmltopdf.exe "
+ "http://google.com C:\test\Google.pdf");
pb.start();
} catch (Exception e) {
System.out.println(e);
}
Path pdfPath = Paths.get("C:\test\Google.pdf");
byte[] pdf = Files.readAllBytes(pdfPath);
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.parseMediaType("application/pdf"));
String filename = "output.pdf";
headers.setContentDispositionFormData(filename, filename);
headers.setCacheControl("must-revalidate, post-check=0, pre-check=0");
ResponseEntity<byte[]> response = new ResponseEntity<byte[]>(pdf, headers, HttpStatus.OK);
return response;
}
不知道上面的请求映射对不对。但是目前前端和后端没有抛出任何错误。
但是我现在怎样才能让用户下载这个 pdf 文件呢?
这是控制器
(function () {
'use strict';
angular
.module('app')
.controller('DemoCtrl', DemoCtrl);
DemoCtrl.$inject = ['$scope', '$http', '$localStorage' ];
function DemoCtrl($scope, $http,$localStorage) {
var vm = this;
vm.add = add;
function add() {
$http.post('/api/createhtml2');
console.log("Create html page")
}
}
})();
html 页面
<div ng-controller="DemoCtrl as vm">
<form ng-submit="vm.add()">
<button type="submit" class="btn btn-danger" >Create Html Page</button>
</form>
</div>
您可以使用
headers.setContentType(MediaType.parseMediaType("application/pdf;charset=utf-8"));
我正在尝试做与 Return generated pdf using spring MVC
中相同的事情但是我正在使用 wkhtmltopdf 所以我稍微修改了上面问题的答案,直到我得到这样的结果。
@RequestMapping(value = "/createhtml2", method = RequestMethod.POST)
public ResponseEntity<byte[]> getPDF() throws IOException {
try {
ProcessBuilder pb = new ProcessBuilder("cmd.exe", "/c", " cd C:\Program Files\wkhtmltopdf\bin && wkhtmltopdf.exe "
+ "http://google.com C:\test\Google.pdf");
pb.start();
} catch (Exception e) {
System.out.println(e);
}
Path pdfPath = Paths.get("C:\test\Google.pdf");
byte[] pdf = Files.readAllBytes(pdfPath);
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.parseMediaType("application/pdf"));
String filename = "output.pdf";
headers.setContentDispositionFormData(filename, filename);
headers.setCacheControl("must-revalidate, post-check=0, pre-check=0");
ResponseEntity<byte[]> response = new ResponseEntity<byte[]>(pdf, headers, HttpStatus.OK);
return response;
}
不知道上面的请求映射对不对。但是目前前端和后端没有抛出任何错误。 但是我现在怎样才能让用户下载这个 pdf 文件呢?
这是控制器
(function () {
'use strict';
angular
.module('app')
.controller('DemoCtrl', DemoCtrl);
DemoCtrl.$inject = ['$scope', '$http', '$localStorage' ];
function DemoCtrl($scope, $http,$localStorage) {
var vm = this;
vm.add = add;
function add() {
$http.post('/api/createhtml2');
console.log("Create html page")
}
}
})();
html 页面
<div ng-controller="DemoCtrl as vm">
<form ng-submit="vm.add()">
<button type="submit" class="btn btn-danger" >Create Html Page</button>
</form>
</div>
您可以使用
headers.setContentType(MediaType.parseMediaType("application/pdf;charset=utf-8"));