Forgot password?
 Create new account
Author: hbghlyj

以任意的页面大小打印网页

[Copy link]

418

Threads

1628

Posts

110K

Credits

Credits
11891

Show all posts

abababa Posted at 2024-1-6 17:14:41
abababa 发表于 2024-1-6 15:55
就是用油猴的话,用下面的javascript
查了一下,发现一个叫sessionStorage的,可以解决跨页的问题,新的代码如下:
  1. // ==UserScript==
  2. // @name         New Userscript
  3. // @namespace    http://tampermonkey.net/
  4. // @require      https://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.0/jquery.min.js
  5. // @version      0.1
  6. // @description  try to take over the world!
  7. // @author       You
  8. // @match        https://kuing.cjhb.site/*
  9. // @grant        none
  10. // ==/UserScript==
  11. (function() {
  12.         'use strict';
  13.         $(document).ready(function(){
  14.                 $('body').click(function(event){
  15.                         var pid = $(event.target);
  16.                         pid = $(pid).attr('id').replace('postmessage_','');
  17.                         if(sessionStorage.getItem(tid) == null) {
  18.                                 sessionStorage.setItem(tid, '');
  19.                         }
  20.                         var set_str = sessionStorage.getItem(tid);
  21.                         set_str += pid+',';
  22.                         sessionStorage.setItem(tid, set_str);
  23.                 });
  24.                 $('#hd').click(function() {
  25.                         var keys = Object.keys(sessionStorage);
  26.                         for(var i = 0; i < keys.length; i++) {
  27.                                 var set_str = sessionStorage.getItem(keys[i]);
  28.                                 var set_str_split = set_str.split(',');
  29.                                 var set = new Set();
  30.                                 for(var j = 0; j < set_str_split.length; j++) {
  31.                                         set.add(set_str_split[j]);
  32.                                 }
  33.                                 var arr = Array.from(set);
  34.                                 arr.sort();
  35.                                 console.log("tid="+tid+",pids="+arr);
  36.                         }
  37.                 });
  38.         });
  39. })();
Copy the Code


操作还是像之前一样,点每个需要的帖子里的不加装饰的文字,然后什么也不用管,可以点下一页继续点,然后换其它帖子再点……最后点一下最顶上的那个背景图,就输出所有需要的主题tid和下面的pid了。

701

Threads

110K

Posts

910K

Credits

Credits
94167
QQ

Show all posts

kuing Posted at 2024-2-6 23:31:03
Last edited by kuing at 2024-2-6 23:37:00
abababa 发表于 2024-1-6 17:14
查了一下,发现一个叫sessionStorage的,可以解决跨页的问题,新的代码如下:
反正都得一个个帖子去浏览,我还是决定在浏览时就保存为 PDF,最后将所有 PDF 按分类来合并好了。
所以我还是先用 11# 那种方式,将帖子分界线弄成打印按钮,经过一些改进之后已经实现点击哪条分界线就到印到那里,并且之后的楼层会在打印时隐藏。(相关代码已放入 zdy3pc.js 里)
然后我再自己写了一个油猴,用于简化页面和折叠楼层等,见 kuing.cjhb.site/forum.php?mod=viewthread& … &page=1#pid57642
这样在浏览时保存 PDF 已经比较方便了。

3146

Threads

8493

Posts

610K

Credits

Credits
66158
QQ

Show all posts

 Author| hbghlyj Posted at 2024-2-7 02:51:09
有没有可能,把所有帖子放在一個很長的網頁,打印?這樣就不會發生字體重複的問题。
分頁可以用CSS的page-break-after

Comment

不现实,三百个帖子放一个长网页里,能不卡死吗?  Posted at 2024-2-7 14:46

3146

Threads

8493

Posts

610K

Credits

Credits
66158
QQ

Show all posts

 Author| hbghlyj Posted at 2024-2-7 02:55:27
pdf_print_service.js第103行:
  1.     // Insert a @page + size rule to make sure that the page size is correctly
  2.     // set. Note that we assume that all pages have the same size, because
  3.     // variable-size pages are not supported yet (e.g. in Chrome & Firefox).
  4.     // TODO(robwu): Use named pages when size calculation bugs get resolved
  5.     // (e.g. https://crbug.com/355116) AND when support for named pages is
  6.     // added (http://www.w3.org/TR/css3-page/#using-named-pages).
  7.     // In browsers where @page + size is not supported, the next stylesheet
  8.     // will be ignored and the user has to select the correct paper size in
  9.     // the UI if wanted.
  10.     this.pageStyleSheet = document.createElement("style");
  11.     this.pageStyleSheet.textContent = `@page { size: ${width}pt ${height}pt;}`;
  12.     body.append(this.pageStyleSheet);
Copy the Code

418

Threads

1628

Posts

110K

Credits

Credits
11891

Show all posts

abababa Posted at 2024-2-7 15:26:01
kuing 发表于 2024-2-6 23:31
反正都得一个个帖子去浏览,我还是决定在浏览时就保存为 PDF,最后将所有 PDF 按分类来合并好了。
所以我 ...
我的意思是平时几乎每天就浏览帖子,然后可以在帖子上做个按钮之类的,就像现在帖子底下有“评分”这样的按钮,能不能做一个“加入pdf”的按钮,只有版主能看到的。然后平时浏览时就把它点上,这样不就存到数据库里了吗,然后到出pdf的时候,直接从数据库里查点上的帖子,弄出来就行了,也不用赶在那一两天弄。
这只是个想法,具体的数据库什么的我也不会,只知道要用SQL语言弄。

701

Threads

110K

Posts

910K

Credits

Credits
94167
QQ

Show all posts

kuing Posted at 2024-2-7 15:51:48
abababa 发表于 2024-2-7 15:26
我的意思是平时几乎每天就浏览帖子,然后可以在帖子上做个按钮之类的,就像现在帖子底下有“评分”这样的 ...
哦,也是挺好的想法。
SQL 啥的我也不太会啦。
不过靠平时点的话,我很可能会有漏点(对自己没啥信心😅

3146

Threads

8493

Posts

610K

Credits

Credits
66158
QQ

Show all posts

 Author| hbghlyj Posted at 2024-2-7 16:06:28
hbghlyj 发表于 2024-2-6 18:51
有没有可能,把所有帖子放在一個很長的網頁,打印?這樣就不會發生字體重複的問题。
分頁可以用CSS的page-b ...
Firefox的PDF瀏覽器PDF.JS打開後本身就是一個很長的網頁,它將PDF內容繪製在canvas上,點擊打印時是在执行那個PrintService.js
既然PDF瀏覽器能加載很長的PDF 並打印,我覺得也可以打印很長的網頁🤔

3146

Threads

8493

Posts

610K

Credits

Credits
66158
QQ

Show all posts

 Author| hbghlyj Posted at 2024-2-7 16:13:00
如果使用那些免費在線HTML to PDF轉換器,應該不難實現。每次點擊按鈕時向免費在線HTML to PDF轉換器發送請求,把轉換結果保存即可🙂

418

Threads

1628

Posts

110K

Credits

Credits
11891

Show all posts

abababa Posted at 2024-2-7 16:41:59
hbghlyj 发表于 2024-2-7 16:13
如果使用那些免費在線HTML to PDF轉換器,應該不難實現。每次點擊按鈕時向免費在線HTML to PDF轉換器發送 ...
不是在线转换,你看我21楼的那个,我的本意就是平时在点击帖子时,就把那一串帖子的tid,pid什么的存到数据库里,只是怎么存到数据库里我不会,我只能做到先提取出来。
这样平时点完了,就把那个帖子存好了,然后做pdf文档时,可以从数据库里直接把那些文本读出来,导成tex格式,图片那种就用字符串替换,换成latex里导入图片的命令,最后编译tex就完成了。
因为每周、每月的新帖、新回复应该都有统计,所以只要每周或每月检查这些新的就行了,旧的在之前就应该已经点完了。

现在想一想,其实帖子只有打印和不打印两种,所以应该是做成一个单选框的形式最好,对应在数据库里应该是存0或1吧,最后把值是1的,在某个时间段的帖子找出来应该就行了。

3146

Threads

8493

Posts

610K

Credits

Credits
66158
QQ

Show all posts

 Author| hbghlyj Posted at 2024-2-7 19:04:16
Last edited by hbghlyj at 2024-2-7 21:27:00
abababa 发表于 2024-2-7 08:41
不是在线转换,你看我21楼的那个,我的本意就是平时在点击帖子时,就把那一串帖子的tid,pid什么的存到数 ...
完全同意!因此我正在研究如何把本站的主字體Tahoma導入TeX
Winfonts – Use fonts distributed with Windows XP包含Tahoma
kuing.cjhb.site/forum.php?mod=viewthread&tid=11910#lastpost

手机版Mobile version|Leisure Math Forum

2025-4-20 21:59 GMT+8

Powered by Discuz!

× Quick Reply To Top Return to the list