|
|
using System;
|
|
|
using System.Collections.Generic;
|
|
|
using System.Linq;
|
|
|
using System.Web;
|
|
|
using TradeManageNew.LabelWebReference;
|
|
|
using System.Net;
|
|
|
using System.Drawing;
|
|
|
using System.Drawing.Drawing2D;
|
|
|
using System.IO;
|
|
|
|
|
|
namespace TradeManageNew
|
|
|
{
|
|
|
public class UpsLabel
|
|
|
{
|
|
|
|
|
|
public static string AccessLicenseNumber = "";
|
|
|
public static string Username = "";
|
|
|
public static string Password = "";
|
|
|
public static string ShipperNumber = "";
|
|
|
public string GetLabel(string trackcode,out string error)
|
|
|
{
|
|
|
|
|
|
try
|
|
|
{
|
|
|
LBRecovery lb_recovery = new LBRecovery();
|
|
|
LabelRecoveryRequest label_recovery_request = new LabelRecoveryRequest();
|
|
|
UPSSecurity upss = new UPSSecurity();
|
|
|
UPSSecurityServiceAccessToken upssSvcAccessToken = new UPSSecurityServiceAccessToken();
|
|
|
upssSvcAccessToken.AccessLicenseNumber = AccessLicenseNumber;// "5D83BCCDEFB9A5D5";
|
|
|
|
|
|
upss.ServiceAccessToken = upssSvcAccessToken;
|
|
|
UPSSecurityUsernameToken upssUsrNameToken = new UPSSecurityUsernameToken();
|
|
|
|
|
|
upssUsrNameToken.Username = Username;// "Karmasfar";
|
|
|
upssUsrNameToken.Password = Password;// "Km28862820";
|
|
|
|
|
|
upss.UsernameToken = upssUsrNameToken;
|
|
|
lb_recovery.UPSSecurityValue = upss;
|
|
|
RequestType request = new RequestType();
|
|
|
label_recovery_request.Request = request;
|
|
|
|
|
|
label_recovery_request.TrackingNumber = trackcode;// "1ZRE8474YW96563012";
|
|
|
lb_recovery.Url = "https://onlinetools.ups.com/webservices/LBRecovery";
|
|
|
ServicePointManager.SecurityProtocol = (SecurityProtocolType)3072;
|
|
|
LabelRecoveryResponse label_recovery_response = lb_recovery.ProcessLabelRecovery(label_recovery_request);
|
|
|
var md = label_recovery_response.Items[0];
|
|
|
|
|
|
// Base64StringToImage(label_recovery_response.Items[0]);
|
|
|
LabelResultsType umd = (LabelResultsType)label_recovery_response.Items[0];
|
|
|
//image.LabelImage
|
|
|
string LabelPath = AppDomain.CurrentDomain.BaseDirectory + "attached/ups/";// @"F:\褚明杰\fedex\ShipService_v2014_cs\cs\ShipWebServiceClient\Express\International\ShipWebServiceClient\bin\Release\pdf\";
|
|
|
Random rd = new Random();
|
|
|
String LabelFileName = LabelPath + DateTime.Now.ToString("yyyyMMddHHmmssfff")+rd.Next(100,999).ToString() + ".png";
|
|
|
String LabelFileName2 = LabelPath + trackcode + ".png";
|
|
|
Base64StringToImage(umd.LabelImage.GraphicImage, LabelFileName);
|
|
|
|
|
|
using (FileStream file = new FileStream(LabelFileName, FileMode.Open))
|
|
|
{
|
|
|
Image img = Image.FromStream(file);
|
|
|
|
|
|
UpsLabel obj3 = new UpsLabel();
|
|
|
var img2 = obj3.RotateImg(img, 90);
|
|
|
img2.Save(LabelFileName2);
|
|
|
|
|
|
|
|
|
}
|
|
|
// Console.WriteLine("Image Base64:\n " + image.GraphicImage);
|
|
|
error = "";
|
|
|
return "ok";
|
|
|
// Console.ReadKey();
|
|
|
}
|
|
|
catch (System.Web.Services.Protocols.SoapException ex)
|
|
|
{
|
|
|
//Console.WriteLine("");
|
|
|
//Console.WriteLine("---------LBRecovery Web Service returns error----------------");
|
|
|
//Console.WriteLine("---------\"Hard\" is user error \"Transient\" is system error----------------");
|
|
|
//Console.WriteLine("SoapException Message= " + ex.Message);
|
|
|
//Console.WriteLine("");
|
|
|
//Console.WriteLine("SoapException Category:Code:Message= " + ex.Detail.LastChild.InnerText);
|
|
|
//Console.WriteLine("");
|
|
|
//Console.WriteLine("SoapException XML String for all= " + ex.Detail.LastChild.OuterXml);
|
|
|
//Console.WriteLine("");
|
|
|
//Console.WriteLine("SoapException StackTrace= " + ex.StackTrace);
|
|
|
//Console.WriteLine("-------------------------");
|
|
|
//Console.WriteLine("");
|
|
|
error = "SoapException Message= " + ex.Message + "SoapException Category:Code:Message= " + ex.Detail.LastChild.InnerText+"SoapException XML String for all= " + ex.Detail.LastChild.OuterXml;
|
|
|
return "";
|
|
|
}
|
|
|
catch (Exception ex)
|
|
|
{
|
|
|
//Console.WriteLine("");
|
|
|
//Console.WriteLine("-------------------------");
|
|
|
//Console.WriteLine(" General Exception= " + ex.Message);
|
|
|
//Console.WriteLine(" General Exception-StackTrace= " + ex.StackTrace);
|
|
|
//Console.WriteLine("-------------------------");
|
|
|
error = "General Exception= " + ex.Message + "General Exception-StackTrace= " + ex.StackTrace;
|
|
|
return "";
|
|
|
}
|
|
|
|
|
|
|
|
|
}
|
|
|
public class UPSModel
|
|
|
{
|
|
|
public Object LabelImage { get; set; }
|
|
|
public string TrackingNumber { get; set; }
|
|
|
}
|
|
|
public class LabelImage
|
|
|
{
|
|
|
|
|
|
|
|
|
public string GraphicImage { get; set; }
|
|
|
|
|
|
}
|
|
|
/// <summary>
|
|
|
/// 把base64字符串转化为图片,传入base64字符串
|
|
|
/// </summary>
|
|
|
/// <param name="strbase64"></param>
|
|
|
/// <returns></returns>
|
|
|
public static void Base64StringToImage(string strbase64,string path)
|
|
|
{
|
|
|
try
|
|
|
{
|
|
|
|
|
|
strbase64 = strbase64.Replace(' ', '+');
|
|
|
System.IO.MemoryStream stream = new System.IO.MemoryStream(Convert.FromBase64String(strbase64));
|
|
|
System.IO.FileStream fs = new System.IO.FileStream(path, System.IO.FileMode.OpenOrCreate, System.IO.FileAccess.Write);
|
|
|
byte[] b = stream.ToArray();
|
|
|
//byte[] b = stream.GetBuffer();
|
|
|
fs.Write(b, 0, b.Length);
|
|
|
fs.Close();
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
catch (Exception ex)
|
|
|
{
|
|
|
|
|
|
}
|
|
|
}
|
|
|
/// <summary>
|
|
|
/// 根据角度旋转图标
|
|
|
/// </summary>
|
|
|
/// <param name="img"></param>
|
|
|
public Image RotateImg(Image img, float angle)
|
|
|
{
|
|
|
//通过Png图片设置图片透明,修改旋转图片变黑问题。
|
|
|
int width = img.Width;
|
|
|
int height = img.Height;
|
|
|
//角度
|
|
|
Matrix mtrx = new Matrix();
|
|
|
mtrx.RotateAt(angle, new PointF((width / 2), (height / 2)), MatrixOrder.Append);
|
|
|
//得到旋转后的矩形
|
|
|
GraphicsPath path = new GraphicsPath();
|
|
|
path.AddRectangle(new RectangleF(0f, 0f, width, height));
|
|
|
RectangleF rct = path.GetBounds(mtrx);
|
|
|
//生成目标位图
|
|
|
Bitmap devImage = new Bitmap((int)(rct.Width), (int)(rct.Height));
|
|
|
Graphics g = Graphics.FromImage(devImage);
|
|
|
g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.Bilinear;
|
|
|
g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
|
|
|
//计算偏移量
|
|
|
Point Offset = new Point((int)(rct.Width - width) / 2, (int)(rct.Height - height) / 2);
|
|
|
//构造图像显示区域:让图像的中心与窗口的中心点一致
|
|
|
Rectangle rect = new Rectangle(Offset.X, Offset.Y, (int)width, (int)height);
|
|
|
Point center = new Point((int)(rect.X + rect.Width / 2), (int)(rect.Y + rect.Height / 2));
|
|
|
g.TranslateTransform(center.X, center.Y);
|
|
|
g.RotateTransform(angle);
|
|
|
//恢复图像在水平和垂直方向的平移
|
|
|
g.TranslateTransform(-center.X, -center.Y);
|
|
|
g.DrawImage(img, rect);
|
|
|
//重至绘图的所有变换
|
|
|
g.ResetTransform();
|
|
|
g.Save();
|
|
|
g.Dispose();
|
|
|
path.Dispose();
|
|
|
return devImage;
|
|
|
}
|
|
|
/// <summary>
|
|
|
/// 第二种方法
|
|
|
/// </summary>
|
|
|
/// <param name="b"></param>
|
|
|
/// <param name="angle"></param>
|
|
|
/// <returns></returns>
|
|
|
public Image RotateImg2(Image b, float angle)
|
|
|
{
|
|
|
angle = angle % 360; //弧度转换
|
|
|
double radian = angle * Math.PI / 180.0;
|
|
|
double cos = Math.Cos(radian);
|
|
|
double sin = Math.Sin(radian);
|
|
|
//原图的宽和高
|
|
|
int w = b.Width;
|
|
|
int h = b.Height;
|
|
|
int W = (int)(Math.Max(Math.Abs(w * cos - h * sin), Math.Abs(w * cos + h * sin)));
|
|
|
int H = (int)(Math.Max(Math.Abs(w * sin - h * cos), Math.Abs(w * sin + h * cos)));
|
|
|
//目标位图
|
|
|
Image dsImage = new Bitmap(W, H);
|
|
|
System.Drawing.Graphics g = System.Drawing.Graphics.FromImage(dsImage);
|
|
|
g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.Bilinear;
|
|
|
g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
|
|
|
//计算偏移量
|
|
|
Point Offset = new Point((W - w) / 2, (H - h) / 2);
|
|
|
//构造图像显示区域:让图像的中心与窗口的中心点一致
|
|
|
Rectangle rect = new Rectangle(Offset.X, Offset.Y, w, h);
|
|
|
Point center = new Point(rect.X + rect.Width / 2, rect.Y + rect.Height / 2);
|
|
|
g.TranslateTransform(center.X, center.Y);
|
|
|
g.RotateTransform(360 - angle);
|
|
|
//恢复图像在水平和垂直方向的平移
|
|
|
g.TranslateTransform(-center.X, -center.Y);
|
|
|
g.DrawImage(b, rect);
|
|
|
//重至绘图的所有变换
|
|
|
g.ResetTransform();
|
|
|
g.Save();
|
|
|
g.Dispose();
|
|
|
//dsImage.Save("yuancd.jpg", System.Drawing.Imaging.ImageFormat.Jpeg);
|
|
|
return dsImage;
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
} |