【问题标题】:Electron print to pdf selection only仅电子打印到 pdf 选择
【发布时间】:2021-03-24 23:31:26
【问题描述】:
我需要在电子中导出为 PDF,但不是整个页面,而只是一个部分(HTML 节点会很棒)。
整个页面都可以正常工作。
我在文档中看到了一个选项:printSelectionOnly:
printSelectionOnly Boolean (可选) - 是否打印选择
仅限。
Electron docs
但我不知道它是否正确。
我该如何选择?会不会是 HTML 节点?
提前致谢。
更新
printSelectionOnly 选项是只选择窗口中的焦点内容以打印/导出为 PDF。
这回答了我的问题。
【问题讨论】:
标签:
javascript
pdf
electron
【解决方案1】:
printSelectionOnly 选项仅打印页面中已选择的内容。
他们所说的“仅选择”是指页面中当前以蓝色突出显示并且您可以使用 ctrl+c 复制的所有元素。
Image of selected text
要使其成为 HTML 节点,您需要创建一个范围对象。然后,使用范围对象选择节点。这将允许您只打印页面的一个节点。
function selectDiv() {
selectElementById("frame");
}
function selectChildDiv() {
selectElementById("childDiv");
}
function selectElementById(id) {
let element = document.getElementById(id);
// Create the range object
let range = new Range();
// Select the node using the range object
range.setStart(element, 0);
range.setEndAfter(element, 0);
// Apply the range
document.getSelection().removeAllRanges();
document.getSelection().addRange(range);
// This is where you would call the printToPDF
}
button, #frame {
margin: 15px 0;
}
div {
border: 1px solid black;
box-shadow: 2px 2px 4px fuchsia;
padding: 5px;
}
i {
position: relative;
}
i::after {
content: "I can not be selected";
position: absolute;
bottom: 100%; right: 0%;
font-style: normal;
font-size: small;
}
<button onclick="selectDiv()">Select parent div</button>
<button onclick="selectChildDiv()">Select child div</button>
<p>Element before div</p>
<div id="frame">
Inner Text
<p>Element inside div</p>
<i>Note : Unselectable elements like pseudo elements won't be selected.</i>
<div id="childDiv">Div inside div</div>
</div>
<p>Element after div</p>