在新 window 中打开 I PDF 并在 Firefox 中打印
Open I PDF in a new window and print in Firefox
我正在使用 Vue3.js。我需要在新 window 中打开 PDF,然后打开打印对话框,但这仅适用于 MS Edge 和 Google Chrome,但不适用于 Firefox 或 Safari。
const getBlobPdf = async (url: string) => {
const response = await axios.get(url, { responseType: "blob" });
return new Blob([response.data], { type: "application/pdf" });
};
const printPdf = async ({ url }) => {
const blob = await getBlobPdf(url);
window.open(URL.createObjectURL(blob), "_blank")?.print();
};
我试过 window.focus(); window.print();
但没用。
我找到了让它在 Firefox 和 Safari 上运行的方法。但是不知道有没有不用setTimeout()
的方法
const printPdf = async ({ url }) => {
const blob = await getBlobPdf(url);
const printWin = window.open(URL.createObjectURL(blob), "_blank");
if (printWin) {
setTimeout(() => {
printWin.print();
}, 200);
}
};
我正在使用 Vue3.js。我需要在新 window 中打开 PDF,然后打开打印对话框,但这仅适用于 MS Edge 和 Google Chrome,但不适用于 Firefox 或 Safari。
const getBlobPdf = async (url: string) => {
const response = await axios.get(url, { responseType: "blob" });
return new Blob([response.data], { type: "application/pdf" });
};
const printPdf = async ({ url }) => {
const blob = await getBlobPdf(url);
window.open(URL.createObjectURL(blob), "_blank")?.print();
};
我试过 window.focus(); window.print();
但没用。
我找到了让它在 Firefox 和 Safari 上运行的方法。但是不知道有没有不用setTimeout()
const printPdf = async ({ url }) => {
const blob = await getBlobPdf(url);
const printWin = window.open(URL.createObjectURL(blob), "_blank");
if (printWin) {
setTimeout(() => {
printWin.print();
}, 200);
}
};