Чтение данных Chrome ctrl + p - PullRequest
11 голосов
/ 15 марта 2019

Можно ли с расширением chrome читать данные ctrl + p и сохранять их в формате pdf или html без отображения экрана печати?

Ответы [ 2 ]

7 голосов
/ 30 марта 2019

Вы можете решить эту проблему с помощью JavaScript и любого бесплатного генератора html to pdf, который может сохранить документ в формате PDF.

Вот как я решил это поэтапно:

  1. Отключить и переопределить *Функция 1006 * ctrl + p , поэтому она не отображает экран печати. ​​
  2. При переопределении на шаге 1 вызовите любую функцию, такую ​​как Html, для генератора PDF, которая может сохранить документ исохранить.

Вот и все.Теперь, как выглядит код?

В этом решении я использовал генератор jQuery и jsPdf.

Поэтому добавьте cdns в ваш код

<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>

Здесь после вставки следующий код jQueryЧтобы отключить и переопределить функцию печати:

//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, вам необходимо определить тип браузера, следуя этому ответу .

Чтобы увидеть весь этот пример, вот полный код:

<!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

0 голосов
/ 05 апреля 2019

Чтобы прочитать, что находится в буфере обмена, это работает.

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, чтобы сделать его расширением.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...