J'essaie d'imprimer un pdf généré par jspdf et chargé sur iframe, mais je reçois ce message d'erreur:
"DOMException: Bloqué une trame avec Origin" http: // localhost: 8084 "d'accéder à une trame cross-Origin."
voici mon code:
<iframe id="pdf-prueba" name="pdf-box"></iframe>
function open(){
var pdf = new jsPDF('p', 'mm', [55, 5]);
var data = pdf.output('datauristring');
$('#pdf-box').attr("src", data).load(function(){
document.getElementById('pdf-box').contentWindow.print();
});
}
DOMException: bloqué une trame avec l'origine " http: // localhost: 8084 " contre l'accès à une trame d'origine croisée. "
Ce message est valide car lorsque vous chargez iframe avec le pdf, vous définissez l'attribut src avec un enregistrement de données, pas un blob.
Une solution simple repose sur:
La stratégie est violée en utilisant votre approche car les protocoles (http/data) sont différents:
Une autre erreur est:
document.getElementById('pdf-box')
Vous devez utiliser l'identifiant et non le nom, alors changez-le en:
document.getElementById('pdf-prueba')
Le code modifié suivant fonctionne dans Chrome:
function open(){
var pdf = new jsPDF('p', 'mm', [55, 5]);
var blobPDF = pdf.output('blob');
var blobUrl = URL.createObjectURL(blobPDF);
$('#pdf-prueba').attr("src", blobUrl).load(function(e){
document.getElementById('pdf-prueba').contentWindow.print();
});
}
<iframe id="pdf-prueba" name="pdf-box"></iframe>