Abrir PDF em navegador

Bom dia pessoal, me deparei com um problema aqui em minha aplicação utilizando o navegador Chrome:

Ao realizar uma chamada para a impressão de um relatório, utilizo o conceito que meu back-end devolve como response um base64 e no javascript eu converto o mesmo utilizando o seguinte comando (com angularjs):

			$http.post(uri, filtro).then(function (response) {
				window.open("data:application/pdf;base64, " + response.data);
			},  
			function (response) {
				erro(response.data.messageStack);
			});

Depois a atualização do chrome este método parou de funcionar, aparece normalmente a url e necessito dar um refresh na pagina para gerar a conversão. Lembrando que outros navegadores funciona normalmente, somente com o chorme ocorre este problema.

Alguem poderia me dizer como posso fazer para contornar esta situação?
Se é alguma configuração que tenho que fazer no navegador ou se tem outra forma para eu abrir um baseg4 em javascript.

Fico no aguardo e desde já muito obrigado.

Bom dia,

Conseguiu resolver?
Estou com o mesmo problema

Siga esse exemplo:

$http({
    method: 'GET',
    url: '/api/transaction-file/'+id,
    responseType:'arraybuffer'
}).then(function(response){
    var file = new Blob([response.data], {type: 'application/pdf'});
    var fileURL = URL.createObjectURL(file);
    window.open(fileURL);
}, function(response){
    //Error
});

Tinha testado esse código também, abre a nova guia mas da falha ao carregar documento pdf

O que o serviço retorna? Um array de bytes?

Uma string em base64

Entendi. Por isso não vai funcionar nesse esquema mesmo. Se o serviço retornasse os bytes diretamente, iria funcionar de boa.

Fiz o teste agora no backend retornando um array de bytes.
C#
byte[] bytes = response.RawBytes;

Angular
Se eu colocar nesse metodo new Blod… da mesma coisa

Resolvi.
Segue o código:

var link = “data:application/pdf;base64, " + window.atob(res).replace(/[\”]/g, ‘’);
fetch(link).then(res => res.blob()).then(res => window.open(URL.createObjectURL(res), ‘_blank’));

1 curtida