@media print
스타일이있는 HTML 은 PDFreactor 도구를 통해 렌더링 되어 PDF 파일을 생성합니다.
HTML 파일의 페이지 중 하나에 html 테이블이 있습니다. 테이블의 행 수는 동적이며 Mustache Java를 사용하여 삽입 되므로 여러 페이지를 통과 할 수 있습니다. 테이블이 반복되면서 자동으로 분리됩니다 <thead>
.
이제 도움이 필요한 요구 사항 은 페이지가 자동으로 나눌 때 계속 텍스트를 삽입 하는 것입니다.
이 작업을 수행하는 방법을 아십니까?
이에 대한 한 가지 해결책은 "계속 ..."이라는 텍스트가 포함 된 페이지 끝 바로 앞에 추가 테이블 행을 동적으로 삽입하는 것입니다.
PDFreactor에는 레이아웃 중에 DOM 수정을 허용하고 내부 레이아웃 데이터에 액세스 할 수있는 매우 강력한 JavaScript 엔진이 있으므로 정확히 수행하는 다음 스크립트를 사용할 수 있습니다.
var CONTINUED_TEXT = "continued...";
var currentPage = 0;
// iterate over tables
var tables = document.getElementsByTagName("table");
for (var i = 0; i < tables.length; i++) {
var table = tables[i];
// determine number of columns
var cells = table.firstElementChild.querySelectorAll("tr:first-child td, tr:first-child th");
var colspan = cells.length;
for (var i = 0; i < cells.length; i++) {
var cellColspan = parseInt(cells[i].getAttribute("colspan"));
if (cellColspan) {
colspan += cellColspan - 1;
}
}
// iterate over rows
var rows = table.querySelectorAll("tbody tr");
for (var j = 0; j < rows.length; j++) {
var row = rows[j];
var bd = ro.layout.getBoxDescriptions(row);
if (bd) {
// check if a page break occurs
if (bd[0].pageIndex > currentPage) {
currentPage = bd[0].pageIndex;
if (j > 0) {
var previousRow = rows[j - 1];
// create a new row
var continueRow = document.createElement("tr");
var continueCell = document.createElement("td");
continueCell.setAttribute("colspan", colspan);
continueCell.textContent = CONTINUED_TEXT;
continueRow.className = "continueRow";
continueRow.appendChild(continueCell);
previousRow.parentNode.insertBefore(continueRow, previousRow);
}
}
}
}
}
따라서 이것은 기본적으로 테이블의 모든 행을 반복하고 PDFreactor의 레이아웃 정보를 쿼리하여 페이지 나누기가 발생하는지 확인합니다. 그런 다음 DOM을 조작하여 나누기 바로 전에 "계속 ..."텍스트가있는 새 테이블 행을 동적으로 삽입합니다.
이 스크립트를 PDFreactor에 추가하려면 API 메서드를 사용하십시오.
pdfReactor.addUserScript ( "", "url / to / script.js", false);
문서에 직접 스크립트를 추가 할 수도 있습니다. 이 경우 JavaScript 모드가 다음과 같이 활성화되어 있는지 확인하십시오.
pdfReactor.setJavaScriptMode (PDFreactor.JAVASCRIPT_MODE_ENABLED);
CSS만으로는 불가능하다고 생각합니다. 도움이 되었기를 바랍니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다