[英]Need help printing on a <td> 2 eval functions for an asp.net image object
[英]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.