V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
yuyue001
V2EX  ›  程序员

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

  •  
  •   yuyue001 · 356 天前 · 3507 次点击
    这是一个创建于 356 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

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

    感觉没必要啊。
    国家标准,不就应该尽可能公开,尽可能方便大家阅读吗?
    chnwillliu
        10
    chnwillliu  
       356 天前
    @media print {
    html, body {
    display: none;
    }
    }
    ck65
        11
    ck65  
       356 天前
    yuyue001
        12
    yuyue001  
    OP
       356 天前   ❤️ 1
    @ck65 谢谢
    googlefans
        13
    googlefans  
       356 天前
    这些都不是都可以公开下载的吗
    lj2016
        14
    lj2016  
       356 天前
    大部分标准都是收费的,国外的标准更是贵的要死。
    要么去正规出版社买纸质版,要么去学兔兔之类的网站下载电子版
    ASmartPig
        16
    ASmartPig  
       355 天前
    可以另存为 mhtml 的单文件在本地打开
    yhxx
        17
    yhxx  
       355 天前
    有没有可能他搞的这么大只是因为做这个的人在网上只找到了这个 PDF 插件来实现,并没有想那么多
    vace
        18
    vace  
       355 天前   ❤️ 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  
       355 天前 via Android
    标准是要收钱的,网上能下的多数是盗版!
    c2const
        20
    c2const  
       355 天前
    只是想保存到本地,保存到单个网页就行了,mhtml 格式,本地文件可以直接打开。
    qiaofanxing
        21
    qiaofanxing  
       355 天前   ❤️ 1
    laLuna
        22
    laLuna  
       355 天前 via iPhone
    大部分标准可以免费公开下载的,个别标准用到了国外的专利,不允许下载,只能买纸质的
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3133 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 14:38 · PVG 22:38 · LAX 07:38 · JFK 10:38
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.