1. 程式人生 > >WEB套打程式開發 (lodop使用)

WEB套打程式開發 (lodop使用)

WEB套打可選方案不多,理想的更少,利用免費控制元件Lodop+JavaScript實現精確套打,算是較為經典的選擇。這種方案其實比較簡單,利用一個htm檔案就可以實現模板設計過程,幾乎是“空手套”式的開發,但理解這幾個步驟還是需要點時間,下面一步步詳細演示說明:

第一步:建立一個空白的模板設計檔案

把以下超文字程式碼複製到一個本地htm檔案中:

手把手教你WEB套打程式開發
本文模擬EMS特快專遞單的程式開發,檔案起名為printEMS.htm,權且稱它為模板設計檔案。

第二步:用瀏覽器開啟該檔案

    在本地資料夾中雙擊該檔案就可以開啟,但在進入設計之前,你的機器需要安裝Lodop,如果還沒安裝過,

請在如下地址下載安裝檔案(解壓rar後執行那個exe檔案,Lodop是一個1M左右的小檔案):

第三步:準備設計

    成功安裝Lodop之後再次開啟模板設計檔案printEMS.htm,點選其中“模板設計”連結,就彈出如下空白的列印設計視窗:手把手教你WEB套打程式開發

   為了儘快定位模板中的資料位置,你需要做一張票據掃描圖作為背景,當然沒有掃描圖也能完成,只是需要多摸索幾次,費點時間而已。

   下面是我做的EMS掃描圖,你把該圖另存成一個jpg檔案,以便我們一起完成後面的演示步驟。

手把手教你WEB套打程式開發

第四步:裝載背景圖並調整圖片大小

在列印設計視窗,點下圖所示的“裝載背景圖...”選單,調入以上儲存的EMS圖片檔案。

手把手教你WEB套打程式開發

   裝載背景圖後,點上圖所示的“調整背景圖...”選單,彈出下圖“背景圖調整”視窗,設定其中的圖片寬度為209mm,高度113mm會自動變化。

   這個寬度值是我測量實際票據得來的。如果掃描圖是按1:1比例獲得的,那麼調整背景圖這一步就免了,當然要做點這點很難,所以最好還是在這裡直接設定具體尺寸反倒簡單。手把手教你WEB套打程式開發

第五步:新增資料內容,開始列印測試

     點下圖所示“插入文字項”選單,新增列印內容,內容項可以拖拉或精細調整,基本對準之後,點選“預覽”按鈕(注意旁邊的“列印”按鈕是收費功能,紙上會有水印,而“預覽時的列印”按鈕是完全免費的,我們用後者)。

    把內容列印到薄一點的白紙上,然後在陽光下與真實票據透亮對比,以最左最上的某個內容為基準,其它內容遠近調整,如此反覆測試直到所有內容相互位置都對準。

    這一步先做到內容之間的相互位置

對準,等下一步處理整體位置。

手把手教你WEB套打程式開發

第六步:整體對準

    由於印表機左邊距或上邊距不一定是零或票據邊緣有誤差,所以儘管第五步打印出來的內容相互之間位置是準確的,但列印到真實票據上仍會整體偏離一些,需要進行整體位置調整。

   點選下圖紅圈所示的“紙釘”按鈕,“紙釘”彈起後,整個設計版面就可以上下左右調整了,然後按上一步的辦法列印測試,直到整體對準成功。為了避免浪費票據,列印時仍可用薄白紙測試,注意此時透光對照時,紙張的左邊沿和上邊沿要與票據對齊,通過觀察內容的位置來判斷是否整體對準。手把手教你WEB套打程式開發

第七步:生成列印模板的程式程式碼

    套打測試成功後,點選第五步圖中所示的“生成程式程式碼”選單,出現下圖結果,這些程式碼就是我們需要的模板程式程式碼,把他們複製出來,準備融合到你的頁面程式中使用。

手把手教你WEB套打程式開發

第八步:完成列印模板設計檔案

想不想知道WEB套打有啥感覺?好,我們先做一個靜態WEB頁面爽一下:把第七步生成的程式程式碼,

插入替換第一步的空白設計檔案CreatePrintPage函式內,變成如下內容:

手把手教你WEB套打程式開發
把以上內容複製到另外一個htm檔案printEMS_OK.htm中,雙擊開啟它,點其中的列印預覽,就可以實現簡單的WEB套打了。

   以上八步基本完成了模板設計,並實現靜態頁面套打,但要把模板程式碼融合到實際的WEB程式中,還需要做些工作。

第九步:模板程式程式碼的使用

把以上CreatePrintPage函式進行簡單改造,原函式如下:

function CreatePrintPage() {
    LODOP.PRINT_INITA(14,11,800,600,"套打EMS的模板");
    LODOP.ADD_PRINT_TEXT(95,95,75,20,"寄件人姓名");
    LODOP.ADD_PRINT_TEXT(123,148,194,20,"寄件人單位名稱");
    LODOP.ADD_PRINT_TEXT(158,101,238,35,"寄件人的詳細地址");
    LODOP.ADD_PRINT_TEXT(92,446,75,20,"收件人姓名");
    LODOP.ADD_PRINT_TEXT(122,496,208,20,"收件人單位名稱");
    LODOP.ADD_PRINT_TEXT(160,460,244,35,"收件人詳細地址");
    LODOP.ADD_PRINT_TEXT(289,47,178,22,"內件品名");
    LODOP.ADD_PRINT_TEXT(290,258,100,20,"內件數量");
    LODOP.ADD_PRINT_TEXT(92,245,100,20,"寄件人電話");
    LODOP.ADD_PRINT_TEXT(90,608,75,20,"收件人電話");
};

把其中的列印內容提出來做為變數引數,函式改成如下樣式:

function CreatePrintPage(strPName,strJJRXM,strJJRDW,strJJRDZ,strSJRXM,strSJRDW,strSJRDZ,strNJPM,strNJSL,strJJRDH,strSJRDH) {
    LODOP.PRINT_INITA(14,11,800,600,strPName);        //列印任務名
    LODOP.ADD_PRINT_TEXT(95,95,75,20,strJJRXM);       //寄件人姓名
    LODOP.ADD_PRINT_TEXT(123,148,194,20,strJJRDW);    //寄件人單位名稱
    LODOP.ADD_PRINT_TEXT(158,101,238,35,strJJRDZ);    //寄件人的詳細地址
    LODOP.ADD_PRINT_TEXT(92,446,75,20,strSJRXM);      //收件人姓名
    LODOP.ADD_PRINT_TEXT(122,496,208,20,strSJRDW);    //收件人單位名稱
    LODOP.ADD_PRINT_TEXT(160,460,244,35,strSJRDZ);    //收件人詳細地址
    LODOP.ADD_PRINT_TEXT(289,47,178,22,strNJPM);      //內件品名
    LODOP.ADD_PRINT_TEXT(290,258,100,20,strNJSL);     //內件數量
    LODOP.ADD_PRINT_TEXT(92,245,100,20,strJJRDH);     //寄件人電話
    LODOP.ADD_PRINT_TEXT(90,608,75,20,strSJRDH);      //收件人電話
};

這個改造後的JS函式還是很好理解的,無論寫入js檔案還是直接嵌在頁面內都簡單易用。

如果你改變了內容的字型、大小、粗斜體等格式,程式碼還會多一些,但總體來說比較簡潔。

第十步:設定紙張高度,實現連續套打

多數套打業務的票據是連續紙,需要精確地分頁,從而保證連續多頁列印不偏移,

為此以上程式碼還要在PRINT_INITA之後加一行SET_PRINT_PAGESIZE語句:

function CreatePrintPage() {
    LODOP.PRINT_INITA(14,11,800,600,"套打EMS的模板");

    LODOP.SET_PRINT_PAGESIZE(1,"209mm","113mm","");
//設定紙張高度
    LODOP.ADD_PRINT_TEXT(95,95,75,20,"寄件人姓名");
    LODOP.ADD_PRINT_TEXT(123,148,194,20,"寄件人單位名稱");
    LODOP.ADD_PRINT_TEXT(158,101,238,35,"寄件人的詳細地址");
    LODOP.ADD_PRINT_TEXT(92,446,75,20,"收件人姓名");
    LODOP.ADD_PRINT_TEXT(122,496,208,20,"收件人單位名稱");
    LODOP.ADD_PRINT_TEXT(160,460,244,35,"收件人詳細地址");
    LODOP.ADD_PRINT_TEXT(289,47,178,22,"內件品名");
    LODOP.ADD_PRINT_TEXT(290,258,100,20,"內件數量");
    LODOP.ADD_PRINT_TEXT(92,245,100,20,"寄件人電話");
    LODOP.ADD_PRINT_TEXT(90,608,75,20,"收件人電話");
};

   其中209mm這個紙寬引數意義不大,主要是113mm這個高度引數,它決定了每頁的走紙距離,對連續列印影響很大。這個值是我測量實際票據高度得來的,包含紙張之間的撕孔間隙。理想的測量方式,是若干頁連起來一起測量取其平均高。

   加入紙高控制後的列印預覽如下,你可以連續列印兩頁內容到同一張長一點的白紙上,測試對照一下看看。把以上加入SET_PRINT_PAGESIZE語句的程式碼複製進第三個htm檔案printEMS_OKM.htm試試。假如從第二頁開始,內容向下偏移,說明紙張高度設定比實際票據大,就減小113mm這個引數值,否則增大它,這個引數可以精確到0.1mm。

手把手教你WEB套打程式開發

第十一步:讓操作者自己調整位置

    以上十步實現的套打可以很精確,但都是以當前印表機為前提。如果你的列印程式要面對許多種型別的印表機,甚至一些未知的印表機型別,那麼“列印維護”功能會很有用處。你可以根據情況在程式中把該功能授權給最終操作者或現場技術維護人員,讓使用者自己來調整列印位置,以適應各種型別的印表機。

   列印維護的指令語句是PRINT_SETUP,進入包含該功能的線上檔案PrintEMS_OKMSetup.htm,先在列印維護中調整一下列印內容或整體位置,點“應用”按鈕。關閉瀏覽器後重新開啟,進入“列印預覽”,看看是否有關聯變化。下圖是列印維護介面,其中能看到“應用”按鈕和“恢復整體預設”按鈕的位置。


手把手教你WEB套打程式開發

注意: 如果你在電腦對列印紙張已經進行了設定,就不需要在程式中設定紙張大小,如下面兩句:LODOP.PRINT_INITA(14,11,800,600,"套打                    EMS的模板");LODOP.SET_PRINT_PAGESIZE(1,"209mm","113mm","");//設定紙張高度;如果你兩邊都進行設定就會出現列印紙張不符            合的問題,印表機會出現檢查錯誤,從而列印不了,具體設定根據你測試情況而定

本文參考如下資料:

轉載自:http://blog.sina.com.cn/s/blog_721e77e50100ng1o.html

相關推薦

WEB程式開發 (lodop使用)

WEB套打可選方案不多,理想的更少,利用免費控制元件Lodop+JavaScript實現精確套打,算是較為經典的選擇。這種方案其實比較簡單,利用一個htm檔案就可以實現模板設計過程,幾乎是“空手套”式的開發,但理解這幾個步驟還是需要點時間,下面一步步詳細演示說明: 第一步

Web列印控制元件Lodop實現證件

第一次接觸Lodop大概是在兩年前了,那時候研究Lodop主要是為了驗證它能不能實現列印時在不修改內容的前提下調整樣式,結果是ok的,如今又一次接觸它,是因為工作中需要使用它了,於是再一次碰面 第一

K3Cloud Python插件開發記錄

col not enc 打印 pre help cut execute 匯總 背景 費用報銷單分錄的報銷未付款金額,客戶需要打印出來一個匯總,不顯示單據體。 1,拖一個金額字段冗余在單據頭。 2,套打裏面吧這個字段設置到對應的打印位置。 3,掛插件 1 import

破界!Omi生態omi-mp釋出,用小程式開發生成Web

omi-mp 是什麼 Omi 框架是微信支付線研發部和 AlloyTeam 開源的通用 Web 元件化框架,基於 Web Components,用來開發 PC、手機瀏覽器或者微信、手Q webview 的 Web 頁面。自今年5月開源以來,該專案共獲得 Star 數 5000+,擁有貢獻者29人。經過

程式開發實踐總結 - WEB前端

從微信釋出小程式以來,各大公司紛紛跟進都想從微信這個流量池裡撈一杯羹。我司也不例外,我們整個前端團隊這半年來基本上都是在開發小程式。前前後後也開發了四五個小程式了。總覺得要留下點什麼,既是記錄那些年我們踩過的坑,也是希望大家別再掉坑。 那些年我們踩過的坑 css樣式不能引用本地圖片資源

服務計算——web程式開發與Go原始碼

原始碼:https://github.com/kotomineshiki/WebServerOfGo 處理 web 程式的輸入與輸出 要求: 支援靜態檔案服務 支援簡單 js 訪問 提交表單,並輸出一個表格 對 /unknown 給出開發中的提示,返回碼 5

web前端進化之路(一)——小程式開發

最近學習前端感覺很多知識學起來容易,但是很多知識點很容易忘記,想做一個工具來方便自己來學習,正好結合小程式,分享給大家。照顧初學者,可能講的比較細,理解哈。 準備工具 小程式一個 已申請(名稱是:we

基於Leaflet 的Web地圖客戶端應用程式開發框架

MarsGIS for Leaflet地圖框架 是火星科技研發的一個Web地圖開發平臺系統,是火星科技團隊成員多年GIS開發和Leaflet使用的技術沉澱。基於Leaflet和現代Web技術棧全新構建, 集成了領先的開源地相簿、視覺化庫,提供了全新的大資料視覺化、實時流資料視

基於 Cesium 的Web三維地球客戶端程式開發框架

MarsGIS for Cesium三維地球框架 是火星科技研發的一個Web三維地圖開發平臺系統,是火星科技團隊成員多年GIS開發和Cesium使用的技術沉澱。基於Cesium和現代Web技術棧全新構建, 集成了領先的開源地相簿、視覺化庫,提供了全新的大資料視覺化、實時流資料

觸控式螢幕網站開發系列(一)-ios web App應用程式(ios meta)

轉自 觸控式螢幕網站的開發其實現在來講比前幾年移動端網站開發好多了,觸控式螢幕裝置IOS、Android、BBOS6等系統自帶瀏覽器均為WEBKIT核心,這就說明PC上面尚未立行的HTML5 CSS3能夠運用在這裡,極大的減少了工作量和資料的缺乏。 這篇文章講述關於IO

Ubuntu 14.04 Web 程式開發(5)Ubuntu為Tomcat啟用80埠

Ubuntu為Tomcat啟用80埠 一、tomcat部署除錯 Update the package repository sudo apt-get update sudo apt-get upgrade --show-upgrades Ins

Web列印的解決方案之證件

由於以前未接觸過套打,一直覺得套打是一個比較神祕和麻煩的事情,因為印表機的位置總是需要調整的,你總不能硬編碼吧?但是如果位置可調,有需要直觀一些來處理,那就比較麻煩了。 在前面介紹過《》的一片文章中提到過那個列印控制元件Lodop,做起套打來感覺還是挺方便的,至少位置調

用Eclipse 開發Dynamic Web Project應用程式

轉載自:http://blog.csdn.net/blue_fire2008/article/details/7525557 簡介:本文僅簡單介紹基於Eclipse開發Dynamic Web Project應用下的JSP,Servlet及TOMCAT資料來源的配置和開發

LODOP結合針孔印表機實現多聯票據

專案中有個需求就是利用針孔印表機實現銷售票據的套打功能。 開始是利用@media print{ } 來控制的哪些元素需要列印,哪些不列印。但是發現調節位置的時候都用的是具體的px,大部分時間都花在了樣式控制上,並且不能相容所有解析度,最後整的頭疼眼花的,最後找了一款列印外掛

Unix 網路程式設計(四)- 典型TCP客服伺服器程式開發例項及基本接字API介紹

寫在開頭: 在上一節中我們學習了一些基礎的用來支援網路程式設計的API,包括“套接字的地址結構”、“位元組排序函式”等。這些API幾乎是所有的網路程式設計中都會使用的一些,對於我們正確的編寫網路程式有很大的作用。在本節中我們會介紹編寫一個基於TCP的套接字程式需要的一些AP

用 Lucene 加速 Web 搜尋應用程式開發

2006 年 9 月 06 日  在本篇文章中,你會學習到如何利用 Lucene 實現高階搜尋功能以及如何利用 Lucene 來建立 Web 搜尋應用程式。通過這些學習,你就可以利用 Lucene 來建立自己的搜尋應用程式。 架構概覽 通常一個 Web 搜尋引擎的架

lodop小結

     小編最近完成了一個“套打”的工作,做個總結,以備後續參考。一、套打是什麼       起初組長讓我做“工行信用卡套打”功能時,我還是比較懵的,什麼是套打,百度了一下,類似發票列印,把要列印的內容放到預留的空位上,執行列印。如圖,是我這次套打需要的模板:     二、

ONVIF協議網路攝像機(IPC)客戶端程式開發(4):使用gSOAP生成Web Services框架程式碼

1. 專欄導讀 本專欄第一篇文章「專欄開篇」列出了專欄的完整目錄,按目錄順序閱讀,有助於你的理解,專欄前面文章講過的知識點(或程式碼段),後面文章不會贅述。為了節省篇幅,突出重點,在文章中展示的示例程式碼僅僅是關鍵程式碼,你可以在「專欄開篇」中獲取完整程式碼。

Ubuntu 14.04 Web 程式開發(4)基於JQuery+Ajax+Json+Servlet實現PUT GET

本文使用JQuery實現PUT/GET例子。 啟動一個Servlet例項 到目前為止,也只是啟動了一個index.jsp,需要還沒有啟動一個servlet。要啟動一個servlet,需要在HelloWeb中新建一個類JsonAjaxServlet,並將其

js實現web上的word憑據

web上的word,當然離不開萬惡的dsoframer。 怎麼實現套打呢? -------------------------------- 1、word中畫好空憑證,(也可以用實際憑證圖片做背景) 2、在輸入的地方插入命名的域標記 3、呼叫附件的word的js的套打方法,:)示例中有套打按鈕。