1. 太倉公共資源里如何列印回執
咨詢記錄 · 回答於2021-05-11
2. 如何實現HTML的列印和預覽
如何實現HTML的列印和預覽
HTML的列印和預覽向來是個難題,但自從IE5.5推出後,情況大有改觀。你可以利用其「列印模板」功能,實現自己的預覽窗口和控制列印。「列印模板」的使用方法請參考MSDN Library中的Web Development > Programming and Reusing the Browser > Print Templates目錄下的文章。從微軟的網站上還可以下載到一個不錯的例子,示例如何一步步由淺入深地使用Print Template
你會發現,要自己實現一個功能完善的列印模板也並非易事。IE瀏覽器本身帶的列印模板做得還不錯,能否在它的基礎上加上自己的定製功能呢?答案是肯定的,至少從技術上看是這樣(不考慮版權問題)。下面就介紹這偷懶的招。
用Visual Studio打開x:Program FilesInternet ExplorerMUI804SHDOCLC.DLL,會看到其資源目錄。其中HTML/PREVIEW.DLG就是IE所帶的列印模板了。把它export(導出)出來,把文件擴展名改成HTM,打開看看,是不是特刺激?PREVIEW.DLG用到了幾個圖片文件,在2110目錄下,別忘了導出。(註:我的環境是Windows XP Professional英文版+SP1a,IE是6.0sp1。)
IE默認的模版中,頁眉頁腳均只支持純文字。下面以定製HTML頁眉為例,看看如何定製自己的列印模板。思路是:用自己的頁眉內容換掉原有的內容,並修改其頁眉高度和頁邊距使之和新的頁眉相對應。
第一步,定義頁眉。在要使用此模版預覽列印的HTML文件中加入一個id為Header的div標記,括起HTML頁眉內容,並制定以英寸為單位的頁眉的高度和寬度,其中寬度應該和模版相符。例:
<div style="DISPLAY:none; WIDTH:6.5in; HEIGHT:0.78in">
...(HTML頁眉內容)
</div>
第二步,聲明變數。在模版前面變數聲明部分加上兩個變數聲明:
var g_htmlHeader = "";//用於保存頁眉內容
var g_nHeaerHeight = 0;//頁眉的高度
第三步,取得頁眉。在函數OnLoadBody()中的「Printer.footer = dialogArguments.__IE_FooterString」語句之後加入這段代碼:
oPageHeader = dialogArguments.__IE_BrowseDocument.all.item("Header", 0);
if (null != oPageHeader)
{
g_htmlHeader = oPageHeader.innerHTML;
g_nHeaerHeight = oPageHeader.style.posHeight;
}
第四步,指定頁邊距和頁眉高度。在上面的代碼下面緊接著加入:
//指定頁邊距。其中40可以自己改,單位是百分之一英寸。
Printer.marginTop = 40 + (g_nHeaerHeight * 100);
Printer.marginBottom = 40;
Printer.marginLeft = 40;
Printer.marginRight = 40;
在函數EnsureDocuments()中,
/*注釋掉以下代碼
if (header)
{
tmp = upTop + (27 / 100);
if (tmp > top)
top = tmp;
}
if (footer)
{
tmp = upBottom + (27 / 100);
if (tmp > bottom)
bottom = tmp;
}
*/
//緊接著加上:
tmp = upTop + g_nHeaerHeight;
if (tmp > top)
top = tmp;
//下面隔幾行,注釋掉:oRule.style.top = upTop + "in";
第五步,指定頁眉內容。在函數CPrintDoc_AddPage()中,在「HeadFoot.page = HeadFoot.pageTotal;」語句之後加入:
//這兩行用於設置頁碼,你在頁眉可以通過加入「[P]」和「[p]」分別代表總頁數和當前頁數。
g_htmlHeader = g_htmlHeader.replace("[P]", "<span ></span>");
var pageHeader = g_htmlHeader.replace("[p]", HeadFoot.pageTotal);
//下面隔3行,注釋掉:
//~oPage.children("header").innerHTML = HeadFoot.HtmlHead;
//~oPage.children("footer").innerHTML = HeadFoot.HtmlFoot;
//下面隔幾行,把「newHTM += HeadFoot.HtmlHead;」改為:
newHTM += pageHeader ;
//然後注釋掉(不要頁腳):newHTM += HeadFoot.HtmlFoot;
至此,一個支持自定義HTML頁眉的新模版就定製完成了。是不是覺得特爽?如果覺得它給你省下了兩周的時間,就趕緊到「希望之光」網站上,花你2天的工資,資助一個小孩上學吧。
定製好的列印模板怎麼用呢?請看以下代碼:
var
vaIn, vaOut: OleVariant;
CmdTarget : IOleCommandTarget;
MyHandle : THandle;
begin
vaIn := 'c:\Preview.htm'
//預覽方法1:WebBrowser1.ControlInterface.ExecWB(OLECMDID_PRINTPREVIEW, OLECMDEXECOPT_PROMPTUSER, vaIn, vaOut);
//下面是方法2:
if WebBrowser1.Document <> nil then
begin
WebBrowser1.Document.QueryInterface(IOleCommandTarget, CmdTarget);
if CmdTarget <> nil then
begin
try
CmdTarget.Exec( PGuid(nil), OLECMDID_PRINTPREVIEW, OLECMDEXECOPT_PROMPTUSER, vaIn, vaOut);
finally
CmdTarget._Release;
end;
end
else
begin
ShowMessage('IE不支持該功能,請升級至IE5.5以上。');
end;
end;
end;
方法1簡潔,但是如果WebBroswer不支持列印預覽的話就會出錯。第二種方法可能更好一些。
在列印預覽時,預覽窗口的尺寸大小總是和WebBrowser所在的Form的一樣,而且沒法最大化。更麻煩的是,如果你的表單是嵌入到了別的表單的組件上顯示的,例如,Form1.Parent := Form2.Panel1,即Form1顯示在Form2中Panel1所佔據的位置,那麼預覽窗口就變得很小了,不拉大根本沒法看。解決辦法如下,在預覽的代碼後面加上以下代碼,使預覽窗口最大化:
Handle:=FindWindow('Internet Explorer_TridentDlgFrame', '列印預覽');
if 0 <> MyHandle then
begin
ShowWindow(MyHandle , SW_MAXIMIZE);
end;
如果不預覽而是直接列印,則把OLECMDID_PRINTPREVIEW換成OLECMDID_PRINT就可以了。
如果要在Web應用中使用列印模板,可以通過ActiveX來實現調用。
註:列印模板需要安裝Internet Explorer 5.5以上版本,本文其它功能需要安裝Internet Explorer4.0以上版本。
3. 人力資源網頁的子頁列印不出來
可能是人力資源網頁的子頁不支持列印,可能是網頁需要更新,將網頁更新後再嘗試列印,檢查列印機是否正確開啟了,列印機正確啟動後才能進行工作。
人力資源信息可以分為企業內部信息和外部環境信息兩大類。
力資源信息化是指基於互聯網的、高度自動化的人力資源管理工作,囊括了最核心的人力資源工作流程,如招聘、薪酬管理、培訓等。從廣義上說,人力資源信息化是基於電子商務理念的所有電子化人力資源管理工作,包括利用公司內部網及其它電子手段,如員工呼叫中心等的人力資源管理工作。
4. 如何列印網站上的信息
知道論文題目之類的信息,可以在知網搜索欄內搜一下,找到後,在瀏覽器的文件選項內有列印選項的選擇,一般都可以列印。
5. 學習資源庫裡面的內容怎麼列印出來,因為內容無法復制,請求大家幫忙,多謝了
去列印店裡讓他們列印。