簡體   English   中英

打印,但需要圖像名稱

[英]printing but need image name

我正在嘗試打印帶有多個幀的單個tiff文件。 但是,如果我使用javascript(window.print()),則會得到整個網頁的打印內容,而不僅僅是tiff圖像。

因此,我環顧了StackOverflow,發現了一些示例代碼。 我試圖實現它,但是問題是該代碼適用於絕對圖像URL:-如“ C:\\ img.jpeg”

我想知道是否有人可以向我展示如何將imgFax.ImageUrl轉換為實際的圖像名稱? (否則,我得到一個錯誤:-“ System.Drawing.Image img中的”路徑中的非法字符“ <--- = System.Drawing.Image.FromFile(imgFax.ImageUrl);代碼)

如果有人可以給我看一些示例代碼,那就太好了! 謝謝。

protected void PrintAll_Click(object sender, EventArgs e) 
{ 
  // number of frames 
  int number = _FaxPages.Count; 


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

     //string _Frame = Page.Request["Frame"]; 

     // current frame 
     _PageIndex = i; 

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



     PrintDocument pd = new PrintDocument(); 

     pd.PrintPage += PrintPage; 
     pd.Print();   

 }      

}

private void PrintPage(object o, PrintPageEventArgs e) 
{ 
   System.Drawing.Image img = System.Drawing.Image.FromFile(imgFax.ImageUrl); 
   Point loc = new Point(100, 100); 
   e.Graphics.DrawImage(img, loc); 
} 

我不確定您是否可以通過PrintDocument在ASP中進行任何打印。 這是所有服務器端代碼,而打印將在- 以及由客戶端的瀏覽器完成。 我認為您將必須通過JavaScript來執行此操作,但不打印整個頁面-您將不得不創建另一個僅顯示要打印內容的頁面,然后將用戶重定向到該較小的頁面(例如,彈出窗口),然后通過javascript自動打印。 我不是100%確信,但是我使用的所有銀行網站似乎都遵循這一點,這在一般情況下很普遍。

例如,這是使用這種確切方法的文章: http : //www.dotnetcurry.com/ShowArticle.aspx?ID=92

只要記住您的小“打印頁面”實際上應該顯示您要打印的內容即可:)

關於打印圖像的另一個不錯的鏈接: http : //forums.asp.net/post/3369436.aspx

你可以在單一的TIFF圖像分割成單獨的文件,這表現在這里 ,那么你可以為每個圖像的唯一網址:

static String[] SplitFile(String file_name)
{
    System.Drawing.Image imageFile = System.Drawing.Image.FromFile(file_name);
    System.Drawing.Imaging.FrameDimension frameDimensions = new System.Drawing.Imaging.FrameDimension(imageFile.FrameDimensionsList[0]);
    int NumberOfFrames = imageFile.GetFrameCount(frameDimensions);
    string[] paths = new string[NumberOfFrames];
    for (int intFrame = 0; intFrame < NumberOfFrames; ++intFrame)
    {
        imageFile.SelectActiveFrame(frameDimensions, intFrame);
        Bitmap bmp = new Bitmap(imageFile);
        paths[intFrame] = System.IO.Path.GetDirectoryName(Application.ExecutablePath) + @"\" + intFrame.ToString() + ".tif";
        bmp.Save(paths[intFrame], System.Drawing.Imaging.ImageFormat.Tiff);
        bmp.Dispose();
    }
    imageFile.Dispose();
    return paths;
}

恩,好吧。。我知道我已經回答了一些問題,但是我注意到您已將該問題標記為粗體。所以在這里是:您不能,沒有辦法。

您指向該圖片的網址只是一個互聯網鏈接。 它可能指向圖像,網站或一些二進制數據。 遠程Web服務器讀取URL參數並決定如何處理。 根本沒有文件名。 網頁“ ShowFax.ashx”及其參數的唯一URL。

某些網頁可能會為您返回一個特殊的標題,內容處置/附件,並且有時在該標題中可能會為您提供文件名。 這就是“下載”網頁向瀏覽器提供信息的方式,因此它可以向用戶顯示“文件另存為...”窗口。 但是,事實可能並非如此。 您正在通過簡單的URL讀取圖像的aspx控件中顯示圖像。 它全部由控件自動執行,因此,您甚至沒有機會窺視標頭-當然,除非您手動發送請求,捕獲流,窺視,將其重定向回控件等,否則恕我直言。簡單的打印任務,那僅僅是個開始!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM