使用 CSS 将 pre 元素保存为 PDF

IT技术 javascript jquery html css pdf
2021-02-20 21:34:45

我做了一个语法荧光笔,我想要一个保存为 PDF 的选项。我看过这个 SO question,但下载它不会保留 CSS 样式,这破坏了下载突出显示文件的意义。有没有办法pre在保持 CSS 的同时将我的元素保存为 PDF?

HTML:

<pre id='output'> (highlighted portion) </pre>
<button id='save'>Save as PDF</button>

JS:

$('#save').click(function(){
  //this is what I need help with
});

您可能已经注意到,如果这很重要的话,我正在使用 jQuery。

1个回答

尝试打开 new window, append pre html, style,如果有的话pre,到 new window document.body, call .focus().print()on new window选择系统打印对话框,选择“打印到文件”

$("#save").click(function() {
  var text = $("#output")[0].outerHTML;
  // `styles`: `style` element; 
  // or `String` "<style>.light{color:#0af;}</style>" ;
  // alternatively , add `style` attribute to `pre` element directly,
  // e.g., `<pre style="color:#0af;">`
  var styles = $("style")[0].outerHTML;
  var popup = window.open("", "popup");
  // append `text`:`pre` element `styles`:`style` element
  // at `popup` `document.body`
  popup.document.body.innerHTML = text + styles;
  popup.focus();
  popup.print();
});

jsfiddle http://jsfiddle.net/tn04Ldka/2/

@Cyoce 查看更新的帖子。可以将style元素从初始文档添加popup文档;stylepre元素添加属性或者,创建String "<style>.light{color:#0af;}</style>"应呈现为htmlat popup,并应用于pre.light元素。
2021-04-17 21:34:45
谢谢,但不保留 CSS。这个答案是否有允许使用 CSS 的补充,或者这是否需要不同的方法?提琴手
2021-05-01 21:34:45