Jspdfによって生成され、iframeに読み込まれたPDFを印刷しようとしていますが、そのエラーメッセージが表示されます。
「DOMException:Origin " http:// localhost:8084 "でフレームがクロスオリジンフレームにアクセスできないようにブロックしました。」
これは私のコードです:
<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:Origin " http:// localhost:8084 "がクロスオリジンフレームにアクセスできないようにする "でフレームをブロックしました。
このメッセージは、iframeをpdfでロードするときに、src属性にblobではなくdatauristringを設定するため、有効です。
簡単な解決策は以下に基づいています。
プロトコル(http/data)が異なるため、アプローチを使用するとポリシーに違反します。
別の間違いは次のとおりです。
document.getElementById('pdf-box')
名前ではなくidを使用する必要があるため、次のように変更します。
document.getElementById('pdf-prueba')
次の変更されたコードは、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>