小米 WiFi 訊號延伸器 Pro 將於 1/12 10:00 在台開賣,售價 365 元_包裝設計

※自行創業缺乏曝光? 網頁設計幫您第一時間規劃公司的形象門面

網動廣告出品的網頁設計,採用精簡與質感的CSS語法,提升企業的專業形象與簡約舒適的瀏覽體驗,讓瀏覽者第一眼就愛上她。

在今(11)日稍早,小米台灣宣布將在明(12)日上午 10 點在台開賣「小米 WiFi 訊號延伸器 Pro」,雖然這次不是推出新款路由器,但距離上一次已經多年沒有在台灣販售新款網路設備產品,能推出無線訊號延伸器對於需要加強家中 WiFi 訊號較弱的區域,有這款平價的訊號延伸器強化 WiFi 訊號覆蓋,仍是值得考慮的產品。

▲圖片來源:小米台灣

小米 WiFi 訊號延伸器 Pro 將於 1/12 10:00 在台開賣,售價 365 元

小米 WiFi 訊號延伸器 Pro 作為幫助路由器提升 WiFi 覆蓋範圍用途,搭載 2×2 天線、傳輸速率達 300Mbps ,能提供更穩定的訊號傳輸和 Wi-Fi 訊號覆蓋增強的效果。

▲圖片來源:小米台灣

當家中廁所、陽台、臥室等處訊號太弱時,用戶可依據使用情境搭配多個小米 WiFi 訊號延伸器 Pro ,擺放在主路由器和訊號覆蓋較弱的區域之間,即可有效提升 WiFi 訊號的覆蓋範圍。

▲圖片來源:小米台灣

小米 WiFi 訊號延伸器 Pro 設定也相當簡單,只需將放大器放置在靠近路由器的位置,通電後等待黃燈閃爍,接著用米家 App 根據指示操作即可完成配對,只需三個步驟就能完成與主流路由器的連接:

▲圖片來源:小米台灣

小米 WiFi 訊號延伸器 Pro 最高可支援 64 台設備同時連接,訊號連接成功後便能讓家中各個角落都有更穩定、流暢的網路使用體驗。

▲圖片來源:小米台灣

當遇到網路問題也能立即藉由 App 推播提醒,協助檢查當前訊號連接狀態和強度,並根據檢查狀態調整擺放位置,以保持 WiFi 延伸最佳效果。供電方式採用插座進行供電,只要第一次設定成功後就無需再次連接。

▲圖片來源:小米台灣

▲圖片來源:小米台灣

銷售資訊方面,小米 WiFi 訊號延伸器 Pro 將於明(12)日 10:00 在台灣開賣,建議售價為新台幣 365 元:

▲圖片來源:小米台灣 Xiaomi Taiwan(Facebook)

南投搬家公司費用需注意的眉眉角角,別等搬了再說!

上新台中搬家公司提供您一套專業有效率且人性化的辦公室搬遷、公司行號搬家及工廠遷廠的搬家服務

小米 WiFi 訊號延伸器 Pro:小米台灣官網(點我前往)
(2020/1/12 10:00 開賣)

消息來源:小米台灣|小米台灣 Xiaomi Taiwan(Facebook)

延伸閱讀:
小米11 Lite 通過 FCC 認證,相關規格提前曝光!

Redmi K40 Pro 最新渲染圖曝光:可能是最便宜的 S888 旗艦 5G 手機之一

您也許會喜歡:

【推爆】終身$0月租 打電話只要1元/分

立達合法徵信社-讓您安心的選擇

※產品缺大量曝光嗎?你需要的是一流包裝設計!

窩窩觸角包含自媒體、自有平台及其他國家營銷業務等,多角化經營並具有國際觀的永續理念。

雖然只要8萬起,這些國產車的高逼格超出你想象!_包裝設計

※自行創業缺乏曝光? 網頁設計幫您第一時間規劃公司的形象門面

網動廣告出品的網頁設計,採用精簡與質感的CSS語法,提升企業的專業形象與簡約舒適的瀏覽體驗,讓瀏覽者第一眼就愛上她。

58-11。98萬廣汽乘用車 傳祺GA3S視界售價:6。98-11。98萬總結:今天所推薦的這幾款車型都是這幾年非常熱銷的自主優質車型,帝豪GL應該是帝豪的升級版,是吉利汽車向上的實力車型。傳祺GA3S視界則擁有非常時尚年輕的造型,同時底盤調校非常出色。

在目前自主廠商不斷提高汽車品質的過程中,國人對自主品牌的支持也提高了不少,這個也跟自主品牌加強了自身的宣傳有關。同時合資品牌前些年在10萬元這個區間已經沒有太多的優勢,特別是其除了之前耐用性這個優勢之外,

※產品缺大量曝光嗎?你需要的是一流包裝設計!

窩窩觸角包含自媒體、自有平台及其他國家營銷業務等,多角化經營並具有國際觀的永續理念。

無論是性價比還是配置都全面落入下風,因此目前很多消費者在購置第一輛汽車時都會考慮自主品牌優質車型。

吉利汽車 帝豪GL

售價:7.88-11.38萬

長安汽車 逸動(三廂汽油版)

售價:8.29-9.59萬

東風裕隆 銳5

售價:8.58-11.98萬

廣汽乘用車 傳祺GA3S視界

售價:6.98-11.98萬

總結:今天所推薦的這幾款車型都是這幾年非常熱銷的自主優質車型,帝豪GL應該是帝豪的升級版,是吉利汽車向上的實力車型。傳祺GA3S視界則擁有非常時尚年輕的造型,同時底盤調校非常出色;銳5則充滿個性但動力非常出色,也是非常值得購買的車型。最後的逸動雖然車型有些落後,但之前卻是一直熱銷的車型,擁有非常不錯口碑。本站聲明:網站內容來源於http://www.auto6s.com/,如有侵權,請聯繫我們,我們將及時處理

南投搬家公司費用需注意的眉眉角角,別等搬了再說!

上新台中搬家公司提供您一套專業有效率且人性化的辦公室搬遷、公司行號搬家及工廠遷廠的搬家服務

學者:再生能源是貧窮國家度過疫病大流行和氣候危機的利器_包裝設計

※自行創業缺乏曝光? 網頁設計幫您第一時間規劃公司的形象門面

網動廣告出品的網頁設計,採用精簡與質感的CSS語法,提升企業的專業形象與簡約舒適的瀏覽體驗,讓瀏覽者第一眼就愛上她。

環境資訊中心綜合外電;姜唯 編譯;林大利 審校

本站聲明:網站內容來源環境資訊中心https://e-info.org.tw/,如有侵權,請聯繫我們,我們將及時處理

南投搬家公司費用需注意的眉眉角角,別等搬了再說!

上新台中搬家公司提供您一套專業有效率且人性化的辦公室搬遷、公司行號搬家及工廠遷廠的搬家服務

帶你走入虛擬社交新世界:XRSPACE MANOVA 開箱_包裝設計

南投搬家公司費用需注意的眉眉角角,別等搬了再說!

上新台中搬家公司提供您一套專業有效率且人性化的辦公室搬遷、公司行號搬家及工廠遷廠的搬家服務

為大家介紹全新 VR 虛擬社交平台 XRSPACE MANOVA 開箱,相信很多人都看過前年的電影「一級玩家」,電影中的世界除了描繪了 VR 遊戲的各種可能性以外,其實還有一個很大的重點就是社群,其實VR設備如 HTC VIVE或 OCULUS之類的產品早就已經發表很久了,在應用與遊戲方面的內容也越來越多,但是卻一直沒有「社群」的概念,大家每天戴上 VR 設備如果只是玩遊戲的話,其實很容易膩。也缺乏互動的感覺,而在疫情肆虐的當下,其實很多人與人的交流都被迫中斷;尤其是與國外友人、同事遠距離或跨國的交流也越來越困難,傳統的視訊通話也不一定能完全滿足人們在社交、工作、商務等各方面的需求,此時 VR 就是一個蠻不錯的選擇,不管對方在天涯海角,都能在同一個虛擬空間中一同交流互動。

XRSPACE MANOVA 開箱

開箱,最外層先提醒要安裝 XRSPACE APP(支援 iPhone 與 Android),裡面放置了 XRSPACE MANOVA 攜行盒:

XRSPACE MANOVA 攜行盒體積不小,而且設計的相當有質感,也方便使用者隨身攜帶:

所有配件包括了 XRSPACE MANOVA HMD、手把、電池、說明書、USB 連接線、旅充與手帶:

硬體部分 XRSPACE MANOVA 搭載 Qualcomm Snapdragon 845處理器、6GB RAM、64GB ROM,支援 802.11 a/b/g/n/ac,也有 5G 高速聯網版本,在正前方配置了三顆鏡頭,分別為支援 6DoF 定位與手勢追蹤的兩顆 MONO 鏡頭,與一顆用於掃描空間的 RGB 鏡頭,鏡頭 FOV 分別為水平 127.2度、垂直79.5度,為了追蹤手勢命令前方鏡頭面板稍微向下:

上方則配置充電用的 TYPE-C 連接埠、散熱孔與實體按鍵,上方頭帶長度可自由調整,由於設計得當,470公克的重量戴起來並不會感到吃力:

實體按鍵部分配置有電源鍵、確認鍵與音量鍵:

下方則是有一組 3.5mm的耳機孔,XRSPACE MANOVA 內建擴音喇叭,但如果想要更好的沉浸在影音世界中可以連接自己的耳機搭配使用:

※產品缺大量曝光嗎?你需要的是一流包裝設計!

窩窩觸角包含自媒體、自有平台及其他國家營銷業務等,多角化經營並具有國際觀的永續理念。

在鏡頭部分,則採用了1440×1440(單眼)超高解析度顯示器及90Hz螢幕更新率鏡頭,解析度為 702DPI,四周採用親膚棉打造,而且配戴眼鏡的朋友也可以無壓力直接戴著使用:

XRSPACE MANOVA 是一款標準的「VR 一體機」,所以不需要連接電腦、也沒有線材,直接就能使用,除了使用控制器操控以外,也可以透過手勢直接使用:

講了這麼多,相信大家可能沒法理解 XRSPACE MANOVA 所帶來的虛擬體驗吧?的確如果只有圖文真的無法詳細說明,所以詳細功能與介紹阿達也拍了影片作介紹,大家直接看影片就會瞭解 XRSPACE 想要打造的 VR 虛擬社交平台是長怎樣與如何運作,另外如果想親身體驗 XRSPACE的魅力,強力建議大家去中華電信門市體驗看看,也有租賃方案一週才350元,相當便宜,覺得喜歡再買也不遲:

 

XRSPACE MANOVA 銷售管道(電腦王阿達讀者九折折扣代碼:KOCPC) 

中華電信購買

中華電信租賃方案(七天只要350元)

 

結語

老實說我個人覺得 XRSPACE MANOVA 是一款相當有想法的 VR 一體機設備,它的最終目標就是想要打造一個與全世界連結在一起的虛擬 VR 社交平台,阿達在體驗的過程中也遇到幾個外國人來打招呼聊天,是相當有趣的經驗。不過目前台灣使用人數還不算多,外國人大都出現在晚上,XRSPACE 的概念就是要越多人玩越好玩,我也建議官方除了社群互動以外,也可以加入更多的影音服務,如Netflix(超大螢幕看起來會超爽)、YouTube 360 頻道等等,這樣會更有趣,強力建議大家可以先去中華電信門市體驗看看,如果想試試可租回家玩一週也只要350元,覺得好玩再帶回家!

您也許會喜歡:

【推爆】終身$0月租 打電話只要1元/分

立達合法徵信社-讓您安心的選擇

※自行創業缺乏曝光? 網頁設計幫您第一時間規劃公司的形象門面

網動廣告出品的網頁設計,採用精簡與質感的CSS語法,提升企業的專業形象與簡約舒適的瀏覽體驗,讓瀏覽者第一眼就愛上她。

男性愉悅黑科技 德國 ARCWAVE Ion 氣流式震動飛機杯嘖嘖上架_包裝設計

南投搬家公司費用需注意的眉眉角角,別等搬了再說!

上新台中搬家公司提供您一套專業有效率且人性化的辦公室搬遷、公司行號搬家及工廠遷廠的搬家服務

德國ARCWAVE 是由世界頂尖工程師團隊所開發的男性愉悅用品品牌,其使命在重新賦予男性性高潮的創新體驗。完全不同於市面上的傳統飛機杯,是全球第一支為男性設計、結合專利Pleasure Air 空氣吸啜技術的《Ion 氣流式震動飛機杯》。 可說是男性愉悅用品界的新黑科技!

德國 ARCWAVE Ion 氣流式震動飛機杯嘖嘖上架

ARCWAVEIon 氣流式震動飛機杯》將於嘖嘖平台進行獨家預購活動,全新上市早鳥募集,只要填寫問卷,分享您的看法與期待,可在預購前享專屬早鳥優惠通知,並有機會抽中《美國Wet潤滑液89ml三入禮》 (價值1,347),入手最佳時機就是這波預購!快填問卷:https://www.surveycake.com/s/rdW9d 

※產品缺大量曝光嗎?你需要的是一流包裝設計!

窩窩觸角包含自媒體、自有平台及其他國家營銷業務等,多角化經營並具有國際觀的永續理念。

facebook粉絲專頁 / YouTube頻道

  • facebook粉絲專頁【ARCWAVE Taiwanhttps://www.facebook.com/arcwave.Taiwan 
  • YouTubeARCWAVE Taiwan https://www.youtube.com/channel/UCYlZ5wTNuPIWFS07KIpeMTA 

您也許會喜歡:

【推爆】終身$0月租 打電話只要1元/分

立達合法徵信社-讓您安心的選擇

※自行創業缺乏曝光? 網頁設計幫您第一時間規劃公司的形象門面

網動廣告出品的網頁設計,採用精簡與質感的CSS語法,提升企業的專業形象與簡約舒適的瀏覽體驗,讓瀏覽者第一眼就愛上她。

疫情打擊生計 肯亞髮型設計師垃圾場回收假髮_包裝設計

南投搬家公司費用需注意的眉眉角角,別等搬了再說!

上新台中搬家公司提供您一套專業有效率且人性化的辦公室搬遷、公司行號搬家及工廠遷廠的搬家服務

摘錄自2020年8月4日自由時報報導

一位肯亞的髮型設計師萬佳(Julia Wanja),在首都奈羅比的垃圾場裡那些可以清洗、再次販賣給顧客的假髮。

根據《路透》報導,萬佳原本的生意受到武漢肺炎(COVID-19)疫情影響,這讓萬佳及她的三個孩子的生計成了問題。萬佳透過清理和轉售垃圾場的二手假髮增加收入,早從2008年開始,她就發現到人們對二手假髮的需求增加。有位萬佳的顧客表示,「新假髮比二手假髮貴,人們沒有那麼多錢」,他認為只要假髮被清洗乾淨了,大家不會在意假髮怎麼來的。

※自行創業缺乏曝光? 網頁設計幫您第一時間規劃公司的形象門面

網動廣告出品的網頁設計,採用精簡與質感的CSS語法,提升企業的專業形象與簡約舒適的瀏覽體驗,讓瀏覽者第一眼就愛上她。

拾荒者進入垃圾場都必須符合帶口罩的規定,一位與萬佳一起分類垃圾的拾荒者吉薩加(Denis Githaiga)表示,「我們禁止任何人不帶口罩進入這裡」;官方的垃圾車將家庭與商業製造的廢物傾倒於垃圾場中,而可能受到病毒感染的醫療用品則會直接被焚化。

污染治理
循環經濟
國際新聞
肯亞
疫情下的食衣住行
廢棄物
資源再利用

本站聲明:網站內容來源環境資訊中心https://e-info.org.tw/,如有侵權,請聯繫我們,我們將及時處理

※產品缺大量曝光嗎?你需要的是一流包裝設計!

窩窩觸角包含自媒體、自有平台及其他國家營銷業務等,多角化經營並具有國際觀的永續理念。

外媒公布最佳 5 大分類 CPU 處理器推薦名單(全能、遊戲、生產力等)_包裝設計

南投搬家公司費用需注意的眉眉角角,別等搬了再說!

上新台中搬家公司提供您一套專業有效率且人性化的辦公室搬遷、公司行號搬家及工廠遷廠的搬家服務

升級 CPU 處理器時,雖然價格越貴效能絕對是越好,但並不是每個人都預算無上限,而且需求也不一樣,有些人主要是為了玩遊戲、也有些人生產力居多,甚至是想要找各方面表現都不錯的處理器。為此,近日知名硬體外媒就公布目前最佳 CPU 處理器名單,從全能、遊戲、頂級、到生產力都有,應該可以提供你不錯參考。

最佳 5 大分類 CPU 處理器推薦名單

下方是外媒 TECHSPOT 公布的前 5 名最佳 CPU 處理器名單,另外他們也提醒,對於不急的人來說,其實可以先等等,因為三月 Intel 很可能會推出第 11 代 Rocket Lake 處理器,到時排名有可能會變動。

最佳全能 CPU 處理器

  • 獲選的是「Ryzen 5 3600 或 Core i5-10400F」

TECHSPOT 表示,Ryzen 5 3600 會是最佳選擇,但如果你不喜歡 AMD CPU,則可以考慮 i5-10400F,這兩顆的品質與價格都非常不錯,因此可以大幅降低組裝成本。除此之外,幾個月前 Ryzen 5 3600  還是 Amazon 銷售排名第一,至今仍然相當暢銷。

最佳遊戲 CPU 處理器

  • 獲選的是「i9-10900K、10700K 或 Ryzen 9 5900X」

對於追求最佳遊戲效能 CPU 的人,則可以把範圍縮小到 Ryzen 7 5800X、Ryzen 9 5900X 與 5950X,或Core i7-10700K 與 Core i9-10900K,這幾顆的遊戲效能都差不多,不過多數遊戲都不需要超過 8 核心,因此最有價值的選擇會是 Ryzen 7 5800X 或 i7-10700K。

另外有些人可能會想說,Ryzen 7 5800X 並沒有獲選,為什麼他們推薦?這是因為 Ryzen 9 5900X 就技術來說更有價值,但如果只是為了玩遊戲,選 5900X 似乎有點浪費錢。

最佳頂級桌上型 CPU 處理器

  • 獲選的是「AMD Ryzen Threadripper 3990X」

這不讓人意外,TECHSPOT 稱 AMD Ryzen Threadripper 3990X 是一個野獸,高達 64 核心、128 執行緒的規格,效能不容懷疑,但價格當然也非常不便宜。

如果你覺得這顆太貴,Threadripper 3970X 或 3960X 也是不錯,近一年的時間他們都用 3960X 處理器當作主要遊戲、影片編輯的處理器,體驗一直都很棒。

※產品缺大量曝光嗎?你需要的是一流包裝設計!

窩窩觸角包含自媒體、自有平台及其他國家營銷業務等,多角化經營並具有國際觀的永續理念。

最佳生產力 CPU 處理器

  • 獲選的是「AMD Ryzen 9 5900X 或 5950X」

想要有最佳生產力的用戶,Ryzen 9 5900X 或 5950X 絕對是最佳選擇,價格分別為 550 美元與 800 美元,不過長期都處於缺貨狀態,因此無法等待的人,替代方案可改上一代的 3900X / 3950X 或 i9-10900K。

最佳預算內 CPU 處理器

  • 獲選的是「Intel i3-10100」

過去 TECHSPOT  都推薦 Ryzen 3 3300X,但自從 2020 年中之後就買不到,都沒補貨,因此才改推 Intel 這顆 i3-10100,遊戲效能跟比較貴的 Ryzen 5 1600 AF 相當,而且長期都能買到,這點比 AMD 出色。

另外有多一點預算,想要有效能不差內顯的處理器,Ryzen 5 3400G 仍然是最佳選擇。

結論

從以上名單可以明顯看出,就生產力來說,TECHSPOT 大多都推薦 AMD 處理器,畢竟核心與執行緒數量較多,但遊戲部分就 Intel 稍微強一點。所有推薦處理器 TECHSPOT 都有進行實測報告,有興趣閱讀的人,可以點我至 TECHSPOT 網站查看。

資料來源:TECHSPOT

國外零售商洩漏 Intel 第 11 代 Rocket Lake-S 處理器的售價,i9-11900K 價格比上一代便宜一些

您也許會喜歡:

【推爆】終身$0月租 打電話只要1元/分

立達合法徵信社-讓您安心的選擇

※自行創業缺乏曝光? 網頁設計幫您第一時間規劃公司的形象門面

網動廣告出品的網頁設計,採用精簡與質感的CSS語法,提升企業的專業形象與簡約舒適的瀏覽體驗,讓瀏覽者第一眼就愛上她。

Asp.net MVC Razor視圖模版動態渲染PDF,Razor模版生成靜態Html_包裝設計

南投搬家公司費用需注意的眉眉角角,別等搬了再說!

上新台中搬家公司提供您一套專業有效率且人性化的辦公室搬遷、公司行號搬家及工廠遷廠的搬家服務

1.前言

 

    上一篇文章我開源了輪子,Asp.net Core 3.1 Razor視圖模版動態渲染PDF,然後,很多小夥伴有很多私信找我了。那麼我下面就簡單的給大家說一下,關於小夥伴問的這些問題。

  • 我項目的电子簽章部分代碼可否開源?

  答:我項目电子簽章也是使用第三方的电子簽章,电子簽章並不是自己實現的,項目裏面的电子簽章代碼無非也是對接第三方的接口。這部分代碼開源出去也沒有什麼意義。我們是使用数字廣東的方案,如果您也是使用該数字簽章,可以私下溝通我看看能不能幫助您。

  • 电子簽章實現難不難,怎麼實現自己的电子簽章?

  答:电子簽章要實現,估計不是太難,按照我的理解,當然我沒有具體深入研究(如果這裏我有妄自菲薄的意思,請諒解,畢竟我能力有限,只是按照我的理解來分析),我個人覺得电子簽章應該就是利用数字證書給PDF簽名,然後加密保護文檔,然後校驗文檔的真偽,就要考慮怎麼驗證這個文檔沒有被刪改,是當初我們簽章的這個文檔,而且這個簽名不能被偽造。個人覺得不是很複雜,但是,电子簽章的法律有效性卻不是這麼簡單的。按照國家法律規定,利用的簽名平台應該有資質的,國家認可的第三方簽章平台,也就是說,私人自己製作的簽章,打起官司來,很難得到法律支持。

  • 項目為什麼CSS樣式不起效?

  答:你是否使用了外鏈的CSS樣式,因為渲染Razor視圖是在後台渲染,無法找到外鏈的文件路徑,就使用不了外鏈的CSS樣式,內嵌和內聯CSS樣式都沒啥問題的。

  • 用word或者excel模版他不香嗎?為什麼要搞個這個東西?

  答:無非是多一個方案,具體你使用什麼完全是你自己說了算,你覺得其他方案好就用,你覺得本方案能幫助你就用,不好就不用,我又不收你半毛線,還是想說的是,你其他的方案,能有用CSS那麼容易做出來漂亮的表單效果嗎?

  • 圖片支持嗎?

  答:圖片要轉Base64編碼,不支持外連接圖片。

  • 前端預覽PDF用什麼插件?

  答:我目前不用插件,新一代瀏覽器都支持PDF直接預覽,直接就能渲染成PDF呈現,當然你也可以自己集成PDF.JS.我大概看了下,集成也很方便。我之所以不集成,是考慮到我的項目有可能使用IE低版本的情況,PDF.JS可能不支持。所以乾脆直接把PDF流推送給瀏覽器,瀏覽器要是能預覽,就直接呈現,不能預覽就下載。

  • 項目支持net Framework嗎?為啥報錯?

  答:這個問題問的有點多,所以本文後續就以這個再說一下本輪子在net45下的使用。還是那句話,有不對的,歡迎您指正,覺得對你有用的就用,無用的就直接忽視,我又不收你半毛線。

  • 可以用本項目生成靜態Html嗎?容易被搜索引擎抓取。

  答:可以,後面演示

 

  2.依賴項目

  <PackageReference Include=”TuesPechkin” Version=”2.1.1″ />
  <PackageReference Include=”TuesPechkin.Wkhtmltox.Win32″ Version=”0.12.2.1″ />
  <PackageReference Include=”RazorEngine” Version=”3.9.3″ />
  <PackageReference Include=”System.ComponentModel.Annotations” Version=”4.5.0″ />
  <PackageReference Include=”Microsoft.AspNet.Mvc” Version=”5.2.3″ />
  <PackageReference Include=”Nito.AsyncEx” Version=”4.0.1″ />
  <PackageReference Include=”Newtonsoft.Json” Version=”12.0.3″ />
  <Reference Include=”Nito.AsyncEx.Concurrent” Version=”4.0.1″ />
  <Reference Include=”Nito.AsyncEx.Enlightenment” Version=”4.0.1″ />

 

     3.核心代碼

    TuesPechkin插件,首先說一下這個TuesPechkin插件,他其實是利用TuesPechkin.Wkhtmltox進程來轉換的。這個插件使用還是要小心的,使用不當可能有線程安全問題,會使得當前工作進程掛起。在IIS下面使用也要注意使用32位的插件。具體使用請看作者的說明:https://github.com/tuespetre/TuesPechkin/blob/develop/README.md

 

 

 

 插件初始化代碼:

 

  private static readonly IConverter PdfConverter = new ThreadSafeConverter(new RemotingToolset<PdfToolset>(
            new Win32EmbeddedDeployment(
                new TempFolderDeployment())));

  

 切記IIS和多線程一定要靜態單例。使用

 Win32EmbeddedDeployment

ThreadSafeConverter
這兩個類。其他的可能讓你進程掛起的成為可能。
還要用到遠程工具集的PDF工具集。


Razor 轉Html代碼,主要有兩種方式:


第一種使用RazorEngine來轉換:這個主要是傳遞Razor模版進去,轉換。

   protected string RunCompileRazorTemplate(object model,string razorTemplateStr)
        {
            if(string.IsNullOrWhiteSpace(razorTemplateStr)) throw new ArgumentException("Razor模版不能為空"); var htmlString= Engine.Razor.RunCompile(razorTemplateStr, razorTemplateStr.GetHashCode().ToString(), null, model); return htmlString; }

 

第二種使用ViewEngine。這個主要是自動查找Asp.net MVC裏面的View下面的Razor,目前我們項目就是使用這個。

 

var viewName = context.RouteData.Values["action"].ToString();
            var result = ViewEngines.Engines.FindView(context, viewName, null); IExportPdfByHtmlTemplate exportPdfByHtmlTemplate = new PdfByHtmlTemplateExporter (); #endif if (result.View == null) throw new ArgumentException($"名稱為:{viewName}的視圖不存在,請檢查!"); context.HttpContext.Response.ContentType = "application/pdf"; //context.HttpContext.Response.Headers.Add("Content-Disposition", "attachment; filename=test.pdf"); var html = ""; using (var stringWriter = new StringWriter()) { #if !NET45 var viewDictionary = new ViewDataDictionary(new EmptyModelMetadataProvider(), new ModelStateDictionary()) { Model = Value }; var viewContext = new ViewContext(context, result.View, viewDictionary, new TempDataDictionary(context.HttpContext, tempDataProvider), stringWriter, new HtmlHelperOptions()); await result.View.RenderAsync(viewContext); #else var viewDictionary = new ViewDataDictionary(new ModelStateDictionary()) { Model = Value }; var viewContext = new ViewContext(context, result.View, viewDictionary, context.Controller.TempData, stringWriter); result.View.Render(viewContext, stringWriter); result.ViewEngine.ReleaseView(context, result.View); #endif html = stringWriter.ToString(); }

 

推送PDF流給客戶端,預覽PDF主要代碼

 

          context.HttpContext.Response.ContentType = "application/pdf";
    context.HttpContext.Response.AddHeader("Content-Length", buff.Length.ToString());
            context.HttpContext.Response.AddHeader("Content-Disposition", "filename=电子簽章PDF-"+DateTime.Now.ToString()+".pdf");
            context.HttpContext.Response.BinaryWrite(buff);
            context.HttpContext.Response.Flush();
            context.HttpContext.Response.Close();
            context.HttpContext.Response.End();

  

 這裏要注意三個地方,不然一定會踩坑。

Content-Length要設置,不然谷歌瀏覽器可能無法下載預覽的PDF。
Content-Disposition不能要attachment,否則可能直接下載不是預覽。
ContentType 要設置"application/pdf"


Razor轉靜態Html

還有一部分人問我怎麼利用本插件Razor模版動態生成靜態Html,這樣容易被百度爬蟲錄取。
其實這部分核心代碼就是幾句代碼,非常簡單。本項目直接用下面接口即可生成html字符轉,自行保存就可以了。

 public interface IHtmlByRazorTemplateExporter
    {
        Task<string> ExportHtmlByRazorTemplateAsync<T>(T data, string htmlTemplate) where T : class;
        string ExportHtmlByRazorTemplate<T>(T data, string htmlTemplate) where T : class;
    }

  

核心:

 

   protected string RunCompileRazorTemplate(object model,string razorTemplateStr)
        {
            if(string.IsNullOrWhiteSpace(razorTemplateStr)) throw new ArgumentException("Razor模版不能為空"); var htmlString= Engine.Razor.RunCompile(razorTemplateStr, razorTemplateStr.GetHashCode().ToString(), null, model); return htmlString; }

 

※自行創業缺乏曝光? 網頁設計幫您第一時間規劃公司的形象門面

網動廣告出品的網頁設計,採用精簡與質感的CSS語法,提升企業的專業形象與簡約舒適的瀏覽體驗,讓瀏覽者第一眼就愛上她。

  4.使用方式

  •  目前本項目已經打包成nuget,並上傳,使用可以直接項目右鍵->管理NuGet程序包,查找,然後下載安裝。

 

  •  也可以使用命令安裝。install-package JESAI.HtmlTemplate.Pdf.net45

 

  • 或者直接fork本倉庫自己打包,並根據自己情況修改使用。

 

自定打包可以修改項目目標框架。項目右鍵->屬性->應用程序,目標框架,修改

 

 

 

如發現不能修改,可以,項目->右鍵->編輯項目文件

 

 

 

然後編譯,就可以使用了。

 

具體使用

方式一:

 

 

 方式二:

 

 

 

 

Razor視圖模版代碼:

<!DOCTYPE html>

<html lang="en" xmlns="http://www.w3.org/1999/xhtml">

<head>
    <meta charset="utf-8" />
    <title></title>
</head>

<body>
    <table border="1" style="width:800px;height:500px;">
        <tr>
            <td>姓名</td>
            <td>@Model.Name</td>
            <td>性別</td>
            <td>@Model.Sex</td>
        </tr>
        <tr>
            <td>年齡</td>
            <td>@Model.Age</td>
            <td>班級</td>
            <td>@Model.Class</td>
        </tr>
        <tr>
            <td>住址</td>
            <td>@Model.Address</td>
            <td>電話</td>
            <td>@Model.Tel</td>
        </tr>
        <tr>
            <td clospan="2">住址</td>
            <td>@Model.Des</td>
        </tr>
    </table>
</body>
</html>

 

 

 

  5.運行效果

 

 

 

  6.項目代碼

 代碼託管:https://gitee.com/Jesai/JESAI.HtmlTemplate.Pdf

本站聲明:網站內容來源於博客園,如有侵權,請聯繫我們,我們將及時處理

※產品缺大量曝光嗎?你需要的是一流包裝設計!

窩窩觸角包含自媒體、自有平台及其他國家營銷業務等,多角化經營並具有國際觀的永續理念。

猛虎咬死三人 印度放棄野放_包裝設計

※自行創業缺乏曝光? 網頁設計幫您第一時間規劃公司的形象門面

網動廣告出品的網頁設計,採用精簡與質感的CSS語法,提升企業的專業形象與簡約舒適的瀏覽體驗,讓瀏覽者第一眼就愛上她。

摘錄自2020年6月8日中央社報導

印度一隻咬死三個人的老虎,餘生都將被關起來,當局今(7日)表示,讓這隻老虎四處漫遊「實在太危險」。

馬德雅省首席野生動物管理員曼達爾(S.K. Mandal)告訴法新社:「我們給了牠幾次機會,希望能野放牠,但牠總是闖入人類居住地。」

過去10年,人口13億的印度一再看到人類與動物間發生致命衝突。根據政府統計,2014年到2019年間有近225人遭老虎攻擊喪命。同時有數據顯示,2012年到2018年間,有超過200隻老虎因人類盜獵或架設電網而喪命。

南投搬家公司費用需注意的眉眉角角,別等搬了再說!

上新台中搬家公司提供您一套專業有效率且人性化的辦公室搬遷、公司行號搬家及工廠遷廠的搬家服務

世界上70%的老虎在印度棲息。政府去年表示,境內老虎數量從2006年1411隻的史上最低紀錄,增加到2018年2967隻。

※ 本文與 行政院農業委員會 林務局   合作刊登

國際新聞
印度
老虎
人與動物衝突事件簿
處變不驚──與野生動物相遇

本站聲明:網站內容來源環境資訊中心https://e-info.org.tw/,如有侵權,請聯繫我們,我們將及時處理

※產品缺大量曝光嗎?你需要的是一流包裝設計!

窩窩觸角包含自媒體、自有平台及其他國家營銷業務等,多角化經營並具有國際觀的永續理念。

C#中的TemplateMethod模式_包裝設計

南投搬家公司費用需注意的眉眉角角,別等搬了再說!

上新台中搬家公司提供您一套專業有效率且人性化的辦公室搬遷、公司行號搬家及工廠遷廠的搬家服務

一個真實的故事

大學的時候就開過一門課程,講設計模式,可是大學生沒什麼編程實踐經驗,在大學裏面聽設計模式的感覺,就像聽天書。聽着都有道理,可是完全領會不到其中的奧妙,大抵原因就在於沒有走過彎路,沒有吃過設計不當的虧。古人云,“操千曲而後曉聲,觀千劍而後識器”,誠不欺我。
 
博主在之前的某個項目中,設計出了一些工具類,像屬性窗口,錯誤提示窗口,還有一個窗口管理類管理它們,當時我實現工具保存時候的代碼是這樣的:

    class WindowManager
    {
        private List<ITool> _Tools = new List<ITool>();        

        public void AddTool(ITool tool)
        {
            _Tools.Add(tool);
        }

        public void SaveAllTools()
        {
            foreach(var tool in _Tools)
            {
                tool.Save();
            }
        }
    }

    interface ITool
    {
        bool BeforeSave();
        void Save();
        void AfterSave();
    }

    class PropertyWindow : ITool
    {
        public bool BeforeSave()
        {
            //do something specific here
            return true;
        }

        public void Save()
        {
            if (BeforeSave())
            {
                //do save
                AfterSave();
            }
        }

        public void AfterSave()
        {

        }
    }

    class ErrorLis : ITool
    {
        public bool BeforeSave()
        {
            //do something specific here
            return true;
        }

        public void Save()
        {
            if (BeforeSave())
            {
                //do save
                AfterSave();
            }
        }

        public void AfterSave()
        {

        }
    }

當時博主對這段代碼還挺滿意,完全沒有看出這兒有什麼問題,覺得這簡直寫的太OO了,有類,有接口,有針對接口編程,至於新加的工具類,也不會影響原來的代碼,簡直太符合開閉原則了。老鐵,沒毛病!
 
好日子就這麼繼續下去,每當需要新添加一個工具,我就新加一個類,在類裏面實現Save的邏輯,直到有一天,添加了一個ResourceControl

    class ResourceControl : ITool
    {
        public bool BeforeSave()
        {
            //do something specific here
            return true;
        }

        public void Save()
        {
            if (!BeforeSave())
            {
                //do save
                AfterSave();
            }
        }

        public void AfterSave()
        {

        }
    }

 
在它的save裏面,我把if(BeforeSave())寫成了if(!BeforeSave())。。。
於是,我又額外花了一些時間來找到這個問題,修改它並在下次添加新類的時候戰戰兢兢提醒自己不要犯這種低級的錯誤。那麼,我們有沒有好的辦法來解決這個問題呢?

問題分析

其實就算每次添加新類的時候我們都能仔細的小心避免維護相同的邏輯,這段代碼的設計也還是有可以改進的地方,比如,BeforeSave和AfterSave在這裏作為接口ITool的一部分而公開,意味着客戶代碼可以自由的調用BeforeSave和AfterSave,然而這很可能並不是代碼作者的本意,畢竟,不調用Save而單獨調用BeforeSave和AfterSave有什麼意義呢?讓客戶能夠看到更多不必要的方法,增加了客戶錯誤使用接口的可能性,不是么?
 
綜上所述,我們需要解決的問題如下:

※產品缺大量曝光嗎?你需要的是一流包裝設計!

窩窩觸角包含自媒體、自有平台及其他國家營銷業務等,多角化經營並具有國際觀的永續理念。

  • 抽象出Save, BeforeSave和AfterSave的邏輯關係,在一個地方固定下來,確保新增加的類所實現的這三個方法,都能自動具有這種邏輯關係。
  • 對客戶代碼隱藏不必要的接口。
     
    這種場景下面,我們需要用到設計模式中的TemplateMethod(模版方法)模式。
     

TemplateMethod模式

在WIKI上面,TemplateMethod模式的定義如下,
In software engineering, the template method pattern is a behavioral design pattern that defines the program skeleton of an algorithm in an operation, deferring some steps to subclasses. It lets one redefine certain steps of an algorithm without changing the algorithm’s structure.

大概意思就是,模版方法模式是一種行為類設計模式,允許軟件在更高的層次定義程序骨架,但是可以在子類推遲實現某些步驟。
 
類圖如下:

這完全符合我們的需求,讓我們試着修改我們的代碼。
 

使用TemplateMethod重新實現的代碼

    class WindowManager
    {
        private List<AbstractTool> _Tools = new List<AbstractTool>();        

        public void AddTool(AbstractTool tool)
        {
            _Tools.Add(tool);
        }

        public void SaveAllTools()
        {
            foreach(var tool in _Tools)
            {
                tool.Save();
            }
        }
    }

    abstract class AbstractTool
    {
        protected abstract bool BeforeSave();
        protected abstract void DoSave();
        protected abstract void AfterSave();
        public void Save()
        {
            if(!BeforeSave())
            {
                DoSave();
                AfterSave();
            }

        }        
    }

    class PropertyWindow : AbstractTool
    {
        protected override bool BeforeSave()
        {
            //do something specific here
            return true;
        }

        protected override void DoSave()
        {
            
        }

        protected override void AfterSave()
        {

        }
    }

    class ErrorLis : AbstractTool
    {
        protected override bool BeforeSave()
        {
            //do something specific here
            return true;
        }

        protected override void DoSave()
        {

        }

        protected override void AfterSave()
        {

        }
    }

從上面我們可以看到,我們用一個抽象類AbstractTool代替之前的ITool接口,抽象類和接口的一個區別就是,抽象類可以在其中嵌入某些邏輯,所以我們在Save這個公共的非虛方法中,完全實現了我們的BeforeSave和AfterSave邏輯,僅僅留下了BeforeSave,AfterSave和DoSave給子類覆蓋。這樣我們得到的好處是:

  • 抽象類只公開了一個Save方法,所以客戶代碼不用擔心會調用其他錯誤的方法。
  • 抽象類完全固定了Save邏輯,先調用BeforeSave檢查,之後執行DoSave進行具體的Save事項,最後進行AfterSave行為。子類只需要重新依據子類的需求覆蓋這三個虛方法即可。新添加的工具類,只要覆蓋這三個虛方法,至於虛方法之間的邏輯,抽象類已經固定,不用擔心。

結論

“紙上得來終覺淺,絕知此事要躬行”,祖宗的話,不會錯的,如果沒有一定的編程實踐和總結,是沒有辦法領悟設計模式的,博主也是通過之前那個例子才領悟到TemplateMethod模式的妙用。希望大家多多編程,早日領悟。

本站聲明:網站內容來源於博客園,如有侵權,請聯繫我們,我們將及時處理

※自行創業缺乏曝光? 網頁設計幫您第一時間規劃公司的形象門面

網動廣告出品的網頁設計,採用精簡與質感的CSS語法,提升企業的專業形象與簡約舒適的瀏覽體驗,讓瀏覽者第一眼就愛上她。