利用 `CLSID:8856F961-340A-11D0-A96B-00C04FD705A2` 控制項,以 `ExecWB` 執行列印/預覽。
function printPage(preview) {
try {
var html = document.body.innerHTML;
var orig = html;
// 隱藏標記 {$printhide} → style='display:none'
while (html.indexOf("{$printhide}") >= 0) html = html.replace("{$printhide}", "style='display:none'");
if (html.indexOf('ID="PrintControl"') < 0)
html += '<OBJECT ID="PrintControl" WIDTH=0 HEIGHT=0 CLASSID="CLSID:8856F961-340A-11D0-A96B-00C04FD705A2"></OBJECT>';
document.body.innerHTML = html;
if (!preview) PrintControl.ExecWB(6, 1); // 直接列印
else PrintControl.ExecWB(7, 1); // 預覽
document.body.innerHTML = orig;
} catch (ex) { alert("列印腳本錯誤"); }
}
優點:免安裝、相容性好。
缺點:樣式控制弱、複雜報表難排版、無法套印憑證/表單。
官網:https://www.lodop.net/
下載:jb51 代碼庫
<object id="LODOP" classid="clsid:2105C259-1E0C-4534-8141-A753534CB4CA" width=0 height=0></object>
<script src="CheckActivX.js"></script> <!-- 官方提供的安裝檢測 -->
<script>
var LODOP = document.getElementById("LODOP");
CheckLodop(); // 檢測並提示安裝
</script>
function Preview() {
CreateLicenseData();
LODOP.SET_SHOW_MODE("PREVIEW_IN_BROWSE", 1);
LODOP.PREVIEW();
}
function Setup() { CreateLicenseData(); LODOP.PRINT_SETUP(); }
function Design() { CreateLicenseData(); LODOP.PRINT_DESIGN(); }
function CreateLicenseData() {
LODOP.PRINT_INIT("查詢報表");
LODOP.ADD_PRINT_HTM(20, 40, 610, 900, document.getElementById("content").innerHTML);
LODOP.PREVIEW();
}
function CreateLicenseData() {
LODOP.PRINT_INIT("申請處理單");
var css = "<link rel='stylesheet' href='https://site/style.css' /><style>table{border:1px solid #ccc}td{border:1px solid #ccc}</style>";
var html = css + "<body>" + document.getElementById("content").innerHTML + "</body>";
LODOP.ADD_PRINT_HTM(20, 40, 610, 900, html);
LODOP.PREVIEW();
}
| 方案 | 安裝需求 | 排版能力 | 套印/證件 | 適用場景 |
|---|---|---|---|---|
| WebBrowser ExecWB | 免安裝 | 基礎 | 不支援 | 簡單清單、行政文件 |
| LODOP | 需安裝 ActiveX/EXE | 專業 (精確座標、分頁、條碼、QR Code) | 完美支援 | 發票、憑證、標籤、複雜報表 |