在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/HTML5  HTML/ 一個很奇葩的需求,頁面切分,需要實現(xiàn)頁面像word一樣的動態(tài)切分,且插入頁眉頁腳

一個很奇葩的需求,頁面切分,需要實現(xiàn)頁面像word一樣的動態(tài)切分,且插入頁眉頁腳,我覺得太難了,是否能實現(xiàn)都不能確定

頁面切分,像word一樣排版。每頁固定寬高 990 * 1400,需要截斷并插入頁眉頁腳。
可能截斷分頁的地方有:

1. 段落剛還到頁面尾部,需要切分分頁。
2. table太長一頁展示不了,需要中間截斷。
3. ul表示的目錄中間的截斷。

圖片描述
圖片描述
圖片描述

求好的實現(xiàn)思路啊,奇葩的需求網(wǎng)上也是絕無僅有的。

回答
編輯回答
執(zhí)念

hmmm,可以計算當(dāng)前頁面需要的頁數(shù)n,搞n個iframe,每個iframe加載同樣的頁面,但是自動定位到不同的位置來模擬這個需求。。。
下面代碼可以在當(dāng)前頁的控制臺中執(zhí)行

(()=>{
    try{document.getElementById("print-view").remove();}catch(e){}
    
    var pageHeight = 400;
    var pageWidth = 1024;
    
    var content = document.body.innerHTML;
    var bgColor = document.body.style.backgroundColor;
    var printViewContainer = document.createElement("div");
    printViewContainer.id="print-view";
    printViewContainer.style=`width:${pageWidth}`;
    document.body.appendChild(printViewContainer);
    printViewContainer.innerHTML = content;
    
    var totalHeight = printViewContainer.clientHeight;
    var totalPages = Math.ceil(printViewContainer.clientHeight * 1.0 / pageHeight);
    printViewContainer.innerHTML = "";

    printViewContainer.style=`background-color:#4e4e4e;position:absolute;width:${pageWidth+80}px;padding:40px;box-shadow:0 0 4px black;left:50%;margin-left:-${pageWidth/2}px;margin-top:20px;margin-bottom:20px;top:40px;z-index:100;`;
    for(let i=0;i<totalPages;i++){
        let div = document.createElement("div");
        let innerContainer = document.createElement("iframe");
        div.style = `margin:20px 10px;border:1px solid #9e9e9e;box-shadow:0 2px 3px gray;position:relative;overflow:hidden;height:${pageHeight}px;background-color:${bgColor};width:${pageWidth}px;`;
        let offsetTop = i * pageHeight;
        innerContainer.width = pageWidth;
        innerContainer.height = pageHeight;
        innerContainer.src = window.location.href;
        innerContainer.style="border:none;";
        innerContainer.scrolling = "no";
        if(pageHeight * i + pageHeight > totalHeight){
            innerContainer.height = totalHeight - pageHeight * i;
        }
        innerContainer.onload = function(){
            innerContainer.contentWindow.scrollTo(0,pageHeight * i);
        };
        div.appendChild(innerContainer);
        printViewContainer.appendChild(div);
    }
})();
2018年8月26日 17:37
編輯回答
莓森

如果你要導(dǎo)出分頁的 PDF,倒可以參考我的這篇文章使用 Phantomjs 導(dǎo)出 PDF。如果你想實現(xiàn)自由在瀏覽器里這么做,可能還真有些麻煩。

2017年3月23日 05:12
編輯回答
兔囡囡

直接寫個word得了,或者把你們的內(nèi)容轉(zhuǎn)成word,直接在瀏覽器里查看

2018年1月12日 20:36
編輯回答
澐染

看著像pdf;
像pdf啊,word之類的東西,直接給個鏈接,鏈接到服務(wù)器地址,點擊鏈接或者直接window.open("Path"),在瀏覽器中打開另外一個窗口查看就可以了。
這時候,就需要后端來處理了,你就只負(fù)責(zé)拿鏈接,顯示就可以了。

2017年4月14日 23:24