2009-10-02 25 views
1

我有一些小圖像,每個都有一個「打印大圖」鏈接。如何創建觸發文件打印的鏈接?

例如:

<img src="thumb.jpg"> 
<a href="#">Print Larger Image</a> 

當用戶點擊「打印大圖」的鏈接,我的目標是引發「big.jpg」的打印。

這怎麼辦?

編輯:安東尼對我有正確的解決方案。我修改了他的代碼以獲得工作。下面是完整的,工作代碼

<style> 
@media screen { 
.printimage { 
    display: none; 
} 
} 

@media print { 
body * { 
    display: none; 
} 
.printimage { 
    display: block; 
} 
} 

</style> 

<a id="bigimage" href="#">Print Big Image</a> 

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script> 
<script> 
$(document).ready(function(){ 

    $("#bigimage").click(function() { 
      $("body").append("<img src='http://sstatic.net/so/img/logo.png' class='printimage' >"); 
      window.print(); 
    }); 

}); 

</script> 
+0

打印單元的顯示,對不對? – KB22 2009-10-02 12:00:32

+0

如果是這樣,這將是幾分鐘前問題的重複。 – pavium 2009-10-02 12:02:44

+0

通過打印,我不是說要顯示。這是我的目標:當用戶點擊「打印」鏈接時,他保持在同一頁面上,並且瀏覽器的「打印」對話框出現。接下來,用戶可以點擊「OK」按鈕開始打印文件「big.jpg」。 – edt 2009-10-02 12:07:48

回答

1

這將是非常奇怪的,真棒,但你可以做的一件事是:

print large image鏈接是否觸發了一個JavaScript函數,該函數用一類「printable_image」將較大的圖像插入到DOM中。

然後,您的CSS規則設置了@screen@print規則,該規則隱藏了瀏覽器中的圖像,但隱藏了所有內容,但隱藏了打印輸出的圖像。

然後調用已經提到的window.print()函數。 唯一的問題是,如果用戶只是想打印屏幕,用戶不會看到任何東西,所以你必須添加@print規則和js來避免這種情況。

的HTML:

<img src="thumb.jpg"> 
<a href="#" id="bigimage">Print Larger Image</a> 

的JS(jQuery中):

$function() { 
    $("#bigimage").click(function() { 
      $(body).amend("<img src='bigimage.png' class="printimage" />"); 
    }); 
}); 

的CSS:

@media screen { 
.printimage { 
    display: none; 
} 
} 

@media print { 
body * { 
    display: none; 
} 
.printimage { 
    display: block; 
} 
} 
+0

很好的解決方案,但這聽起來對我來說太多工作;)非常有創意。另外總有一種可能性,即用戶關閉了javascript。 。 。 。 – andrewWinn 2009-10-02 12:29:05

+0

如果他們關閉了js,那麼沒有任何給定的解決方案會工作,親密。 – Anthony 2009-10-02 12:33:58

+0

爲真。你可以指示用戶右鍵單擊並打開圖像:) – andrewWinn 2009-10-02 14:19:37

0
<img src="thumb.jpg" alt="Alternative text" /> 
<a href="big.jpg">Print Larger Image</a> 

這是很基本的HTML,任何不需要JS/PHP或。

1

window.print()將在javascript中執行此操作,但只會打印當前頁面。如果您試圖將img啓動到新選項卡並運行打印命令,則必須組合一些命令。

3
<a href="javascript:window.Print(); return false;">Print Larger Image</a> 

這將打印當前頁面,但是添加到JoostK的回答,重定向到圖像:

<a href="page.php?image=big.jpg">Print Larger Image</a> 

然後在page.php文件,加載圖像,然後在身體onload事件,調用window.print();

編輯:

爲了讓用戶留在同一頁上,我不認爲這是可能的,但你可以做的是:

<a href="page.php?image=big.jpg" target="_blank">Print Larger Image</a> 

然後調用window.print();你後可以調用window.close();(這可能會彈出一個對話框,指出瀏覽器想要關閉當前窗口是好的,或沿着這些線)

+0

我希望用戶在點擊「打印」按鈕後留在同一頁面上。有沒有辦法讓AJAX發生? – edt 2009-10-02 12:21:09

0

您可以創建一個這樣的鏈接打印當前頁面...

<a href="JavaScript:window.print();">Print this page</a> 

,或者自動打印,只要它加載一個頁面,你可以做這樣的事情......

<body onload="window.print();">