Voir le code suivant:
Manette:
public ActionResult GetPDF()
{
byte[] pdf = GetPdfFromDatabase();
return new FileContentResult(reportData, "application/pdf");
}
Vue:
<iframe src="@Url.Action("GetPDF","Account")" width="600" height="500"></iframe>
Console Javascript:
_ {Chaque fois que vous chargez une page, affichez cet avertissement !!!} _
Pour qui tombe sur ce sujet. (Moi aussi.) La meilleure solution consiste à créer une page HTML agissant comme une page d'arrivée iframe pour afficher le contenu PDF.
C'est exemple HTML. Je viens d'extraire du chrome.
<html><body style="background-color: rgb(38, 38, 38); height: 100%; width: 100%; overflow: hidden; margin: 0px;"><embed width="100%" height="100%" name="plugin" id="plugin" src="your_pdf_url" type="application/pdf"></body></html>
Il suffit de remplacer your_pdf_url
par votre véritable URL. Je viens d'ajouter ce code HTML en tant que middleware dans Laravel et d'afficher ce code HTML afin que Chrome ne prévienne plus aucun avertissement. Vous pouvez utiliser ce code HTML comme base et créer une meilleure page de renvoi au format PDF, telle qu'un chargement personnalisé.
Un iframe demande à la ressource mentionnée dans l'attribut src avec un type de contenu text/html. Donc, ce message dit seulement "J'ai demandé du HTML mais le serveur a répondu avec pdf"
Je crois que l'avertissement ne peut être ignoré.
Une alternative que j'ai trouvée à ce problème, utilise la balise object, comme ceci:
<object data = "your-data-base-64" type = "application/pdf"> </ object>
et si vous utilisez angularJS, pour éviter toute erreur sur la console, procédez comme suit:
<object ng-attr-data = "votre-base-de-données-64" type = "application/pdf"> </ object>