像这种网站前端是怎么实现的?看起来是 PDF,不能保存,也不能打印。 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
yuyue001
V2EX    程序员

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

  •  
  •   yuyue001 2023-04-26 19:36:42 +08:00 4526 次点击
    这是一个创建于 902 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

    23 条回复    2024-05-16 14:47:55 +08:00
    aqqwiyth
        1
    aqqwiyth  
       2023-04-26 19:42:27 +08:00
    看看网络请求就知道 雪碧图 前端再拼接成可读的
    yuyue001
        2
    yuyue001  
    OP
       2023-04-26 19:47:12 +08:00
    @aqqwiyth 但是为什么不能打印保存成 PDF 格式?
    WindProtect
        3
    WindProtect  
       2023-04-26 19:47:56 +08:00
    看了下,是用 png 做背景图然后拼的。
    leedarmau
        4
    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
        5
    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
        6
    leedarmau  
       2023-04-26 19:49:07 +08:00
    感觉是他们禁用了打印时的样式,另外提供一套打印时的样式。但是不知什么原因没有显示,所以空白了。
    cuicuiv5
        7
    cuicuiv5  
       2023-04-26 19:49:56 +08:00
    @aqqwiyth 这是为了加密吗?
    charlieethan
        8
    charlieethan  
       2023-04-26 19:55:02 +08:00
    用 singlefile 插件照样保存为 HTML ,但保存后的文件非常大,例如 OP 贴出来的这个 GB/T 32960.2-2016 ,保存后文件高达 483M
    yuyue001
        9
    yuyue001  
    OP
       2023-04-26 19:55:09 +08:00
    @WindProtect @leedarmau @ewiglicht @cuicuiv5

    感觉没必要啊。
    国家标准,不就应该尽可能公开,尽可能方便大家阅读吗?
    chnwillliu
        10
    chnwillliu  
       2023-04-26 19:56:14 +08:00
    @media print {
    html, body {
    display: none;
    }
    }
    mogita
        11
    mogita  
       2023-04-26 19:57:47 +08:00
    yuyue001
        12
    yuyue001  
    OP
       2023-04-26 20:01:34 +08:00   1
    @ck65 谢谢
    googlefans
        13
    googlefans  
       2023-04-26 20:05:12 +08:00
    这些都不是都可以公开下载的吗
    lj2016
        14
    lj2016  
       2023-04-26 20:14:30 +08:00
    大部分标准都是收费的,国外的标准更是贵的要死。
    要么去正规出版社买纸质版,要么去学兔兔之类的网站下载电子版
    ASmartPig
        16
    ASmartPig  
       2023-04-26 23:16:41 +08:00
    可以另存为 mhtml 的单文件在本地打开
    yhxx
        17
    yhxx  
       2023-04-26 23:30:30 +08:00
    有没有可能他搞的这么大只是因为做这个的人在网上只找到了这个 PDF 插件来实现,并没有想那么多
    vace
        18
    vace  
       2023-04-26 23:30:45 +08:00   4
    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
        19
    yolee599  
       2023-04-27 08:54:56 +08:00 via Android
    标准是要收钱的,网上能下的多数是盗版!
    c2const
        20
    c2const  
       2023-04-27 09:39:10 +08:00
    只是想保存到本地,保存到单个网页就行了,mhtml 格式,本地文件可以直接打开。
    EeveeRibbon
        21
    EeveeRibbon  
       2023-04-27 10:21:47 +08:00   2
    laLuna
        22
    laLuna  
       2023-04-27 16:58:56 +08:00 via iPhone
    大部分标准可以免费公开下载的,个别标准用到了国外的专利,不允许下载,只能买纸质的
    LYwyc2
        23
    LYwyc2  
       2024-05-16 14:47:55 +08:00
    @qiaofanxing 万分感谢
    关于     帮助文档     自助推广系统     博客   API     FAQ     Solana     898 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 28ms UTC 21:28 PVG 05:28 LAX 14:28 JFK 17:28
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86