javascript - 当用户尝试打印我的页面时,如何加载自定义 PDF?

标签 javascript jquery html css pdf

目标

media="print"在我的页面上很糟糕,我想改进它。 基本上,我想在用户打印页面时改善页面的外观。

我在想。 . .

而不是在我的 media="print" 页面上隐藏和显示很多元素. 我决定完全隐藏我的页面,并改为加载 PDF。我做的PDF。我不确定这是否是最好的方法,但我发现这样可以节省很多时间,并且仍然可以完全控制显示/隐藏对象。


HTML

<body >

  <span id="web">
    <!-- My whole site structure -->
  </span>

  <span id="print"><iframe src="img/USER.pdf" width="100%" height="830" ></span>


</body>

在我的 <body> 内, 我有一个 PDF

<span id="print"><iframe src="img/name.pdf" width="100%" height="830" ></span>

我通过执行以下操作在整个页面中隐藏该 PDF:

#print{
    display: none;
  }

然后,当用户要打印我的页面时。我想加载此 PDF,并隐藏我的整个网站。

CSS

/*Hide the whole page*/
#web{
    display: none;
}


/*Show PDF back*/
#print{
    display:block!important;
}

结果

它可以工作,但不幸的是,它只能在 Safari 中工作。 不是 Chrome,也不是 Firefox。

  • 实现这样的目标最有效的方法是什么?
  • 有人可以帮我解决这个问题以适用于所有浏览器吗?
  • 是否有任何 JSjQuery 插件可以帮助我完成此任务?

如果还有什么我可以提供的,请告诉我。

enter image description here

最佳答案

通常的模式是提供带有文本的链接,例如“可打印版本”。然后,您只需以一种对用户而言并不意外的方式链接到 PDF。

如果您想坚持使用 CSS 打印布局,我在 CSS paged media specification 方面取得了一些成功。 .

这是一个示例 CSS 文件 - 请注意,print 样式中只有少量...

body {
    font-family: Georgia, serif;
    font-size: 12pt;
}

h2 {
    string-set: title content();
}

img {
    max-width: 100%;
}

.on-new-page {
    display: block;
    page-break-before: always;
}

.keep-together {
    page-break-before: avoid;
}

.keep-intact {
    page-break-inside: avoid;
}

.contents a::after {
  content: leader('.') target-counter(attr(href), page);
}

@page {
    margin: 2.54cm;
    size: portrait;
}

@page :left {
    margin-right: 3.18cm;

    @bottom-left {
        content: counter(page);
    }

    @top-left {
        content: string(title);
    }
}

@page :right {
    margin-left: 3.18cm;

    @bottom-right {
        content: counter(page);
    }

    @top-right {
        content: string(title);
    }
}

@page :first {
    margin-top: 10cm;
}

@media print {
    .dont-print {
        display: none;
    }
}

你可以看看我的example page并进行打印预览以查看其效果。它因浏览器而异,但您可以看到现在对打印布局的控制比过去多得多。

关于javascript - 当用户尝试打印我的页面时,如何加载自定义 PDF?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29928206/

相关文章:

javascript - 为什么未执行的评估会影响某些浏览器的行为?

javascript - 我如何使用 jquery 从输入 'type=text' 元素中获取文本?

javascript - Onkeypress 更新输入落后 1 步

javascript - jQuery 是否会从已销毁的 DOM 内容中删除事件监听器?

jquery在单击按钮时设置表格的宽度

Javascript - 将文件移动到另一个目录(node.js)

javascript - 如何在类函数内发送ajax请求

javascript - 按键名过滤对象

html - 指定图像尺寸以提高站点速度

html - 有没有办法放入样式表以获得页面上所有表单元素的 Material 主题或类似主题?