javascript - 在 Firefox 的选项卡中显示 pdf 内容

标签 javascript spring firefox

我使用 spring boot、jquery 和 itext。

当用户单击按钮时,会生成 pdf 文件。

@GetMapping(value = "/members/{memberId}/contract/{contractId}/generalcontracts", produces = "application/pdf")
public ResponseEntity<byte[]> getMemberContract(@PathVariable("memberId") Long memberId, @PathVariable("contractId") Long contractId) throws IOException {
    byte[] content = reportService.generateMemberContractReport(contractId);
    return prepareReport(content);
}

private ResponseEntity<byte[]> prepareReport(byte[] content) throws IOException {
    HttpHeaders headers = new HttpHeaders();
    headers.setContentType(MediaType.parseMediaType("application/pdf"));
    String filename = "report.pdf";
    headers.setContentDispositionFormData(filename, filename);
    headers.setCacheControl("must-revalidate, post-check=0, pre-check=0");
    ResponseEntity<byte[]> response = new ResponseEntity<>(content, headers, HttpStatus.OK);
    return response;
}

选项卡打开并显示文件。

该代码适用于 Chrome,但不适用于 Firefox。 对于 Firefox,这就像选项卡的打开和关闭。

<button id="memberPrintReport" type="button"  class="btn btn-primary">Imprimer</button>

$("#memberPrintReport").on('click', function (e) {


 tryit(getHostName() + "/members/" + memberId + "/contract/" + contractId + "/generalcontracts");
}    

function tryit(urlServer) {
    var win = window.open('_blank');
    downloadFile(urlServer, function (blob) {
        var url = URL.createObjectURL(blob);
        win.location = url;
    });
}

function downloadFile(url, success) {
    var xhr = new XMLHttpRequest();
    xhr.open('GET', url, true);
    xhr.setRequestHeader("Authorization", "Basic " + $.cookie('authorization'));
    xhr.responseType = "blob";
    xhr.onreadystatechange = function () {
        if (xhr.readyState == 4) {
            if (success)
                success(xhr.response);
        }
    };
    xhr.send(null);
}

function tryit(urlServer) {
  downloadFile(urlServer, function (blob) {
    var url = URL.createObjectURL(blob);
     window.open(url, '_blank');

  });
}

最佳答案

尝试更新此行

headers.setContentDispositionFormData(filename, filename);

到此

headers.setContentDispositionFormData("inline", filename);

如果这不起作用,请尝试以下操作:

headers.add("content-disposition", "inline;filename=" + filename)

关于javascript - 在 Firefox 的选项卡中显示 pdf 内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45747086/

相关文章:

javascript - 本地存储转错或空值

javascript - 使用 Express Sessions 的 Node.js 非常基本的本地身份验证

java - 过期后自动删除数据库行

java - 如何使用注释在 Spring 中加载系统属性?

javascript - JW Player 6 插件在 Firefox 中不工作 - Drupal

html - Div 100% 高度适用于 Firefox 但不适用于 IE

javascript - 用于外部点击的 @HostListener OnClick 在 Firefox 中不起作用

javascript - 如何与angular js联合获取最新记录

javascript - Chrome 应用程序如何自行重新加载? (不允许 document.location.reload)

java - JavaFX 中 Spring Autowiring 的空指针异常