SurePrintCsdn

try to print to pdf of CSDN!

Dovrai installare un'estensione come Tampermonkey, Greasemonkey o Violentmonkey per installare questo script.

Dovrai installare un'estensione come Tampermonkey o Violentmonkey per installare questo script.

Dovrai installare un'estensione come Tampermonkey o Violentmonkey per installare questo script.

Dovrai installare un'estensione come Tampermonkey o Userscripts per installare questo script.

Dovrai installare un'estensione come ad esempio Tampermonkey per installare questo script.

Dovrai installare un gestore di script utente per installare questo script.

(Ho già un gestore di script utente, lasciamelo installare!)

Dovrai installare un'estensione come ad esempio Stylus per installare questo stile.

Dovrai installare un'estensione come ad esempio Stylus per installare questo stile.

Dovrai installare un'estensione come ad esempio Stylus per installare questo stile.

Dovrai installare un'estensione per la gestione degli stili utente per installare questo stile.

Dovrai installare un'estensione per la gestione degli stili utente per installare questo stile.

Dovrai installare un'estensione per la gestione degli stili utente per installare questo stile.

(Ho già un gestore di stile utente, lasciamelo installare!)

// ==UserScript==
// @name         SurePrintCsdn
// @namespace    http://surewong.com/SurePrint
// @version      0.3
// @description  try to print to pdf of CSDN!
// @author       SureWong
// @license      AGPL License
// @match        https://*.csdn.net/*
// @icon         data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==
// @grant        none
// ==/UserScript==

/* jshint esversion: 11 */
(function() {
    'use strict';

    // Your code here...
    var surePrintBtn = document.createElement('button');
    surePrintBtn.innerHTML = "准备打印pdf";
    surePrintBtn.className = "sure-print-pdf";

    surePrintBtn.onclick = function (e) {
      document.querySelector("#side")?.remove();
      document.querySelector("#comment_title, #comment_list, #comment_bar, #comment_form, .announce, #ad_cen, #ad_bot")?.remove();
      document.querySelector(".nav_top_2011, #header, #navigator")?.remove();
      document.querySelector(".p4course_target, .comment-box, .recommend-box, #csdn-toolbar, #tool-box")?.remove();
      document.querySelector("aside")?.remove();
      document.querySelector("#toolbarBox")?.remove();
      document.querySelector(".tool-box")?.remove();
      document.querySelector(".more-toolbox-new")?.remove();
      document.querySelector(".csdn-side-toolbar")?.remove();
      document.querySelector(".more-toolbox")?.remove();
      document.querySelector(".template-box")?.remove();
      document.querySelector(".bottom-pub-footer")?.remove();
      document.querySelector(".pre-numbering")?.remove();
      document.querySelector("main").setAttribute('style', 'display: content;');
      document.querySelector("main").setAttribute('style', 'float: left;');

      // 打开代码折叠
      var elements = document.querySelectorAll('.set-code-hide');
      elements.forEach(function(element) {
      element.className = element.className.replace('set-code-hide', 'set-code-show');
      });

      var styleElements = document.getElementsByTagName("style");
      for(var i = 0; i < styleElements.length; i++) {
          if(styleElements[i].textContent.includes(".print_watermark") || styleElements[i].textContent.includes("@page")) {
              styleElements[i].parentNode.removeChild(styleElements[i]);
          }
      }


      // 新增代码:为打印增加@page属性
      var printStyle = document.createElement('style');
      var printStyleContent =`
    @media print {
        @page {
            margin-top:80px;
            margin-bottom: 80px;
            size: portrait; /* 纵向打印 */
        }
        .main_father > #mainBox {
            width: 100%;
            margin-left:200px;
            margin-right:200px;
            padding:0px;
        }
        .blog-content-box {
            width: 85%;
        }
        body, article {
            width: 80%;
        }
        
        
        /* 防止文字溢出打印区域 */
        p, h1, h2, h3, h4, h5, h6 {
          overflow-wrap: break-word;
          word-wrap: break-word;
          -ms-word-break: break-all;
          word-break: break-word;
        }
        h1, h2, h3 {
            page-break-after: avoid; /* 避免标题后直接分页 */
        }
        tr {
            page-break-inside: avoid; /* 确保表格行不会跨页打断 */
        }
     }`;
      printStyle.innerHTML = printStyleContent;
      document.head.appendChild(printStyle);

    };

    var body = document.body;
    var style = document.createElement('style');
    style.id = "sure-print-pdf";
    var css = `.sure-print-pdf{
      position: fixed;
      bottom: 5%;
      right: 1%;
      width: 70px;
      height: 70px;
      background: #add8e640;
      color: cornflowerblue;
      border-radius: 50%;
      font-size: 10px;
      z-index: 999;
      cursor: pointer;
      font-size: 10px;
      overflow: hidden;
    }`;
    if (style.styleSheet) {
      style.styleSheet.cssText = css;
    } else {
      style.appendChild(document.createTextNode(css));
    }
    body.appendChild(surePrintBtn);
    body.appendChild(style);
})();