2012-09-25 34 views
2

我正在使用C#,Microsoft Visual Studio,asp.net進行打印。僅打印映像,嵌入到ASP.NET頁面

目標:我試圖在傳真文檔中打印所有頁面。

格式:傳真文檔作爲一個帶有多頁的單個.tiff文件接收。

需要做什麼: - 我需要迭代.tiff圖像中的每個頁面並將它們全部打印出來。

// This function will iterate all pages, one at a time. // 

protected void PrintAll_Click(object sender, EventArgs e) 
{ 
    // counts number of pages in the fax document.// 
    int number = _FaxPages.Count; 

    // for loop to iterate through each page. // 
    for (int i = 0; i < number; i++) 
    { 
     string _FaxId = Page.Request["FaxId"]; 

     _PageIndex = i; 

     imgFax.ImageUrl = "ShowFax.ashx?n=" + _FaxId + "&f=" + _PageIndex + "&mw=750"; 

     PrintAll.Attributes.Add("onclick", "return printing()");    
    } 
} 

,並在我的Java腳本我有:

function printing() { window.print(); } 

現在的問題是:

  1. 該功能只打印一頁(TIFF文件的最後頁) ....它會打印整個窗口,而不僅僅是整個網頁瀏覽器窗口中的嵌入式.tiff圖像。

    任何有關如何打印.tiff嵌入式圖像而不是整個Web瀏覽器窗口的想法。

  2. 雖然我的循環遍歷頁面。只有在循環遍歷所有頁面並停在最後一頁(比如第6/6頁)之後,打印函數纔會被調用。然後它只打印最後一頁(連同瀏覽器窗口中的其餘內容)。這不是我想要發生的......我不想在瀏覽器窗口上打印所有多餘的材料,例如按鈕,鏈接等......我只想從瀏覽器窗口中嵌入.tiff圖像。

+0

你有兩個不同的問題。只打印圖像並打印所有圖像。打印只是圖像可以通過CSS來處理。谷歌「CSS媒體打印」,你會發現很多關於這方面的信息。 – Kevin

+0

我對「兩個不同的問題,」假設你的意思是......我有兩個步驟來解決這個問題: - (步驟1)印刷只是圖像 (步驟2)印刷(說所有的6頁)圖像文件。 – Philo

+0

正確。至於第二個,你可以爲每個頁面創建一個img標籤,而不是爲每個頁面改變url。 – Kevin

回答

1

在將頁面發送到客戶端之前,您當前的代碼將遍歷服務器端的所有頁面並更新圖像URL。這意味着ImageUrl將永遠是您的最後一頁。

對於打印的所有圖像,有多種解決方案:

  • 編輯您的ShowFax.ashx,添加一個選項,以使在一次的傳真頁,並把這個圖像URL。
  • 在運行時爲每個頁面添加一個新的Image元素到父容器。
  • 讓javascript函數printing()做一個回傳,增加頁面索引和圖片上的URL並重復代碼。
  • 創建整個循環客戶端。

對於只打印出的圖像,隱藏與CSS樣式表的其他元素,並添加media="print"這樣的:

<link rel="stylesheet" type="text/css" media="print" href="print.css" />