像这种网站前端是怎么实现的?看起来是 PDF,不能保存,也不能打印。

2023-04-26 19:36:42 +08:00
 yuyue001

通过 国家标准全文公开系统 查看文件,每次都要输入验证码。

比如这个文件 标准号:GB/T 32960.2-2016。 我想保存到本地。

这么实现不利于标准的传播啊。

3536 次点击
所在节点    程序员
22 条回复
aqqwiyth
2023-04-26 19:42:27 +08:00
看看网络请求就知道 雪碧图 前端再拼接成可读的
yuyue001
2023-04-26 19:47:12 +08:00
@aqqwiyth 但是为什么不能打印保存成 PDF 格式?
WindProtect
2023-04-26 19:47:56 +08:00
看了下,是用 png 做背景图然后拼的。
leedarmau
2023-04-26 19:48:27 +08:00
/* Rules for browsers that support PDF.js printing */
body[data-pdfjsprinting] #outerContainer {
display: none;
}
body[data-pdfjsprinting] #printContainer {
display: block;
}
#printContainer {
height: 100%;
}
ewiglicht
2023-04-26 19:48:39 +08:00
看起来像是用 PDFJS 加密的,
网络请求只能看到加密后的图片,想解密还是得分析 JS 或者看 PDFJS 文档吧
http://c.gb688.cn/bzgk/gb/viewGbImg?fileName=Rxv5H%2B7w%2F9pStytcWHOjELhgi15P7t2pOM5E5s8n%2FNg%3D
http://c.gb688.cn/bzgk/gb/viewGbImg?fileName=Rxv5H%2B7w%2F9pStytcWHOjEEpRZ6l4XqRKWt%2FN4ILnKeM%3D
leedarmau
2023-04-26 19:49:07 +08:00
感觉是他们禁用了打印时的样式,另外提供一套打印时的样式。但是不知什么原因没有显示,所以空白了。
cuicuiv5
2023-04-26 19:49:56 +08:00
@aqqwiyth 这是为了加密吗?
charlieethan
2023-04-26 19:55:02 +08:00
用 singlefile 插件照样保存为 HTML ,但保存后的文件非常大,例如 OP 贴出来的这个 GB/T 32960.2-2016 ,保存后文件高达 483M
yuyue001
2023-04-26 19:55:09 +08:00
@WindProtect @leedarmau @ewiglicht @cuicuiv5

感觉没必要啊。
国家标准,不就应该尽可能公开,尽可能方便大家阅读吗?
chnwillliu
2023-04-26 19:56:14 +08:00
@media print {
html, body {
display: none;
}
}
ck65
2023-04-26 19:57:47 +08:00
yuyue001
2023-04-26 20:01:34 +08:00
@ck65 谢谢
googlefans
2023-04-26 20:05:12 +08:00
这些都不是都可以公开下载的吗
lj2016
2023-04-26 20:14:30 +08:00
大部分标准都是收费的,国外的标准更是贵的要死。
要么去正规出版社买纸质版,要么去学兔兔之类的网站下载电子版
love51money
2023-04-26 22:35:18 +08:00
ASmartPig
2023-04-26 23:16:41 +08:00
可以另存为 mhtml 的单文件在本地打开
yhxx
2023-04-26 23:30:30 +08:00
有没有可能他搞的这么大只是因为做这个的人在网上只找到了这个 PDF 插件来实现,并没有想那么多
vace
2023-04-26 23:30:45 +08:00
1. 你为什么保存不了 PDF:
因为这个页面设置了好几处 print style ,比如 `@media print html, body {display: none;}`,也就是打印时关闭所有输出,Chrome 的话你打开 Rendering ,设置 Emulate Css media type = print ,就能预览到打印样式,随手改改,就能打印了(注意还要勾选浏览器的打印选项:包含背景图片)

2. 他们怎么做的:
其实也挺简单,每一页划分成 m 乘 n 的固定块,然后再把这些块打乱输出一张图片,显示时用 html 的 background-position 对每一块进行定位,这一步写个脚本就能完成了。相应的,拿到 html 结构和图片,提取出 position ,你写个脚本也能复原图片。

3. 为啥这么做:猜测的原因可能有: 防爬虫、付费卖文档、节约点点资源?(毕竟合并在一起压缩率更高,可以一次拿到很多页的数据,目前还过滤了纯白色块)
yolee599
2023-04-27 08:54:56 +08:00
标准是要收钱的,网上能下的多数是盗版!
c2const
2023-04-27 09:39:10 +08:00
只是想保存到本地,保存到单个网页就行了,mhtml 格式,本地文件可以直接打开。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/935727

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX