[英]How to print a PDF in HTML
我想在浏览器中打印一个 PDF,它是由我的 ASP.NET Core 应用程序生成的。 我已经测试了无数文章和建议,但遗憾的是没有适用于所有浏览器的通用解决方案。
从iframe打印等解决方案在 iPadOS/iOS 上不起作用 - 对于包含多页的文档,它仅打印第一页(并且页面缩放不正确)。 embed
不再工作。
Print.js看起来不再维护,所有者在去年的帐户上没有任何活动。 根据项目上的问题,移动设备有很多错误,不再修复。
来自 mozilla 的PDF.js也不适用于 iPadOS/iOS 上的旧版本。 使用演示页面进行的测试表明,打印经常会卡住。 如这张票中所述,主要目标是 Firefox - 他们不会太在意 safari 上的问题)。
我能想到的唯一解决方案是使用 iframe 在桌面设备上打印并在移动设备上显示 PDF,让用户自己打印。 但是,特别是在 iPadOS 上,默认设置是“请求桌面网站”,Safari 显示为 macOS。 所以无法从 user agent 判断是否是 iPadOS。
有人对此有解决方案吗?
<html>
<head>
<title>Print PDF using Dynamic iFrame</title>
</head>
<body>
<input type="button" id="bt"
onclick="print('../sample.pdf')"
value="Print PDF" />
</body>
<script>
let print = (doc) => {
let objFra = document.createElement('iframe'); // Create an IFrame.
objFra.style.visibility = 'hidden'; // Hide the frame.
objFra.src = doc; // Set source.
document.body.appendChild(objFra); // Add the frame to the web page.
objFra.contentWindow.focus(); // Set focus.
objFra.contentWindow.print(); // Print it.
}
// Using regular js features.
// function print(doc) {
// var objFra = document.createElement('iframe');
// objFra.style.visibility = 'hidden';
// objFra.src = doc;
// document.body.appendChild(objFra);
// objFra.contentWindow.focus();
// objFra.contentWindow.print();
// }
</script>
</html>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.