在使用 ArcGIS JavaScript 進行開發的時候,雖然已經把 引用的 js 和 css 文件進行了離線部署,
但是有個問題,在調用的字體文件時,也就是調用 pbf 文件時,調用的仍然是在線的,而且速度很慢,
整個頁面加載的時間和加載 pbf 文件的時間差不多了,實在無法忍受,准備下載離線部署,網上搜了幾個
發現要么不支持中文,要么就是要分特別高。只能自己動手寫個程序下載了。
代碼很簡單,是 C# 的。
using System; using System.IO; using System.Net; namespace pbfDownload { class Program { static void Main(string[] args) { var regularUrl = "https://static.arcgis.com/fonts/arial-unicode-ms-regular/"; var boldUrl = "https://static.arcgis.com/fonts/arial-unicode-ms-bold/"; var regularFolder = @"D:\Fonts\regularFolder\"; //目錄要先手動建好,這里主要是下載,就不循環路徑自動建文件夾了。 var boldFolder = @"D:\Fonts\boldFolder\"; var NetURL = new string[2] { boldUrl, regularUrl }; var downFolder = new string[2] {boldFolder,regularFolder}; for (int u = 0; u < 2; u++) { var downurl = NetURL[u]; var downFold = downFolder[u]; for (int i = 0; i < 257; i++) { double si = i * 256; double ei = (i + 1) * 256 - 1; var fileName = si.ToString() + "-" + ei.ToString() + ".pbf"; var fileUrl = downurl + fileName; var fileDown = downFold + fileName; HttpDownloadFile(fileUrl, fileDown); } } } /// <summary> /// Http下載文件 /// </summary> public static void HttpDownloadFile(string url, string path) { try { // 設置參數 HttpWebRequest request = WebRequest.Create(url) as HttpWebRequest; //發送請求並獲取相應回應數據 HttpWebResponse response = request.GetResponse() as HttpWebResponse; //直到request.GetResponse()程序才開始向目標網頁發送Post請求 Stream responseStream = response.GetResponseStream(); //創建本地文件寫入流 Stream stream = new FileStream(path, FileMode.Create); byte[] bArr = new byte[1024]; int size = responseStream.Read(bArr, 0, (int)bArr.Length); while (size > 0) { stream.Write(bArr, 0, size); size = responseStream.Read(bArr, 0, (int)bArr.Length); } request.Abort(); response.Close(); responseStream.Close(); stream.Close(); Console.WriteLine("File:" + path); } catch(Exception ex) { Console.WriteLine("File:" + path); Console.WriteLine("Error:"+ ex.Message); } //return path; } } }