代码之家  ›  专栏  ›  技术社区  ›  m.qayyum

读取chrome的ctrl+p数据

  •  0
  • m.qayyum  · 技术社区  · 6 年前

    chrome扩展是否可以读取ctrl+p数据并将其保存为pdf或html而不显示打印屏幕?

    0 回复  |  直到 6 年前
        1
  •  8
  •   Maytham Fahmi    6 年前

    您可以使用JavaScript和任何可以保存pdf文档的免费html-to-pdf生成器来解决这个问题。

    1. 禁用和覆盖 +
    2. 当在步骤1中重写时,调用任何你想要的函数,比如Html到Pdf生成器,它可以保存文档并保存。

    就这样。现在代码看起来怎么样?

    所以在代码中添加CDN

    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jspdf/1.3.4/jspdf.min.js"></script>
    

    //Override ctrl+p and excute another function
    $(document).bind("keyup keydown", function(e){
      if(e.ctrlKey && e.keyCode == 80){
        Print(); 
        e.preventDefault();
      }
    });
    

    创建一个调用pdfGenerator函数或多个其他函数的打印函数:

    //Print My Way
    function Print(){
      console.log("for testing to see if this is called");
      pdfGenerator()
    }
    
    //Use any other print method, in this case I print/save html to pdf as downloadable
    function pdfGenerator(){
      var doc = new jsPDF();
      doc.fromHTML($('body').get(0), 15, 15, {
        'width': 170, 
      });
      // instead of Test.pdf you can make give the name of the page.
      doc.save('Test.pdf');
    }
    

    就是这样。如果你需要它只与Chrome一起工作,那么你需要检测浏览器类型 answer .

    要查看所有这些示例,请参见完整代码:

    <!doctype html>
    
    <html lang="en">
    <head>
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
        <script src="https://cdnjs.cloudflare.com/ajax/libs/jspdf/1.3.4/jspdf.min.js"></script>
    </head>
    
    <body>
      <p>This is my page and ctrl+p will prevent print screen but print this page as downloadable pdf</p>
    
    <script>
      //Override ctrl+p and excute another function
      $(document).bind("keyup keydown", function(e){
        if(e.ctrlKey && e.keyCode == 80){
          Print(); 
          e.preventDefault();
        }
      });
    
      //Print My Way
      function Print(){
        pdfGenerator()
        //additional function do something else.
      }
    
      //Use any other print method, in this case I print/save html to pdf as downloadable
      function pdfGenerator(){
        var doc = new jsPDF();
        doc.fromHTML($('body').get(0), 15, 15, {
          'width': 170, 
        });
        doc.save('Test.pdf');
      }
    </script>
    
    </body>
    </html>
    

    资源:

    演示 enter image description here

        2
  •  1
  •   shadow2020    6 年前

    要阅读剪贴板上的内容,这是可行的。

    async function getClipboardContents() {
      try {
        const text = await navigator.clipboard.readText();
        console.log('Pasted content: ', text);
      } catch (err) {
        console.error('Failed to read clipboard contents: ', err);
      }
    }
    

    为了防止CTRL+P把这个放进你的头标签里

    <link rel="alternate" media="print" href="alternativeUrlForPrint.ext" />
    

    使用L2i库来捕获控制台中的内容,它将捕获您使用上述代码放在那里的任何内容。然后你只要下载一个函数就可以了。

    l2i.download();
    

    最后,你可以把这些都放到TamperMonkey中,使它成为一个扩展。