Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537
是編程樂趣,一個10年.Net開發(fā)經(jīng)驗老程序員,點擊右上方“關(guān)注”,每天為你分享開源項目和編程知識。
推薦一個可以將Html頁面轉(zhuǎn)為PDF的開源項目。
01
項目簡介
這是一個基于.Net開發(fā)的開源項目,本質(zhì)是用 Webkit 引擎將 HTML 頁面轉(zhuǎn)換為 PDF,可以用在控制臺、 Web 應(yīng)用程序和 Web API中。
02
使用示例
1、創(chuàng)建轉(zhuǎn)化器
//同步轉(zhuǎn)化器
var converter=new BasicConverter(new PdfTools());
//異步轉(zhuǎn)化器
var converter=new SynchronizedConverter(new PdfTools());
在多線程程序和 Web 服務(wù)器中可以使用異步轉(zhuǎn)換器,避免轉(zhuǎn)換任務(wù)阻塞其他線程。
2、定義文檔格式
var doc=new HtmlToPdfDocument()
{
GlobalSettings={
ColorMode=ColorMode.Color,
Orientation=Orientation.Landscape,
PaperSize=PaperKind.A4Plus,
},
Objects={
new ObjectSettings() {
PagesCount=true,
HtmlContent=@"<h1>標(biāo)題1</h1>
內(nèi)容內(nèi)容內(nèi)容內(nèi)容內(nèi)容內(nèi)容內(nèi)容內(nèi)容內(nèi)容內(nèi)容",
WebSettings={ DefaultEncoding="utf-8" },
HeaderSettings={ FontSize=9, Right="Page [page] of [toPage]", Line=true, Spacing=2.812 }
}
}
}
3、轉(zhuǎn)換
byte[] pdf=converter.Convert(doc);
if (!Directory.Exists("Files"))
{
Directory.CreateDirectory("Files");
}
using (FileStream stream=new FileStream(@"Files\" + DateTime.UtcNow.Ticks.ToString() + ".pdf", FileMode.Create))
{
stream.Write(pdf, 0, pdf.Length);
}
效果如下:
03
項目地址
https://github.com/rdvojmoc/DinkToPdf
- End -
推薦閱讀
一個用于操作Excel文件的.NET開源庫
基于ASP.NET MVC開發(fā)的、開源的個人博客系統(tǒng)
推薦一個Star 1.3K報表.Net開源項目
.Net開發(fā)的跨平臺Word模板引擎
基于.NetCore開源的Windows的GIF錄屏工具
SP.NET 是一個使用 HTML、CSS、JavaScript 和服務(wù)器腳本創(chuàng)建網(wǎng)頁和網(wǎng)站的開發(fā)框架。
ASP.NET 支持三種不同的開發(fā)模式:
Web Pages(Web 頁面)、MVC(Model View Controller 模型-視圖-控制器)、Web Forms(Web 窗體):
Web Pages | MVC | Web Forms |
從何入手?
多數(shù)開發(fā)人員學(xué)習(xí)一個新技術(shù),是從查看運行實例開始的。
通過"運行實例"輕松學(xué)習(xí)
我們的"運行實例"工具讓 Web Pages 變得更簡單易學(xué)。
它在運行實例的同時顯示 ASP.NET 代碼和 HTML 輸出。
點擊"運行實例"按鈕來看看它是如何工作的:
Web Pages 實例
<html>
<body>
<h1>Hello Web Pages</h1>
<p>The time is @DateTime.Now</p>
</body>
</html>
運行實例 ?
什么是 Web Pages?
Web Pages 是三種創(chuàng)建 ASP.NET 網(wǎng)站和 Web 應(yīng)用程序的編程模式中的一種。
其他兩種編程模式是 Web Forms 和 MVC(Model View Controller 模型-視圖-控制器)。
Web Pages 是開發(fā) ASP.NET 網(wǎng)頁最簡單的開發(fā)模式。它提供了一種簡單的方式來將 HTML、CSS、JavaScript 和服務(wù)器腳本結(jié)合起來:
容易學(xué)習(xí),容易理解,容易使用
圍繞著單一的網(wǎng)頁創(chuàng)建
與 PHP 和經(jīng)典 ASP 相似
Visual Basic 或者 C# 的服務(wù)器腳本
全 HTML、CSS 和 JavaScript 控制
Web Pages 內(nèi)置了數(shù)據(jù)庫、視頻、圖形、社交媒體和其他更多的 Web Helpers,因此很容易擴展。
Web Pages
如果您剛接觸 ASP.NET ,建議從 Web Pages 開始學(xué)習(xí)。
在我的 Web Pages 中,您將學(xué)習(xí)到如何使用 VB(Visual Basic) 或者 C#(C sharp) 最新的 Razor 服務(wù)器標(biāo)記語法將 HTML、CSS、JavaScript 和服務(wù)器代碼結(jié)合起來。
您也可以學(xué)習(xí)如何使用具有可編程的 Web Helpers(包括數(shù)據(jù)庫、視頻、圖形、社交媒體等等)來擴展您的網(wǎng)頁。
Web Pages 實例
通過實例學(xué)習(xí)!
由于 ASP.NET 代碼是在服務(wù)器上執(zhí)行的,您不能在您的瀏覽器中查看代碼。您只能看到普通的 HTML 頁面輸出。
每個實例都會把隱藏的 ASP.NET 代碼顯示出來,這將讓您更容易地理解它是如何工作的。
Web Pages 實例
Web Pages 參考手冊
在最后,您將看到一套完整的 ASP.NET 參考手冊,介紹了對象、組件、屬性和方法。
Web Pages 參考手冊
使用 WebMatrix
我們使用了 WebMatrix 。
WebMatrix 是一個簡單但功能強大的,由微軟專門為 Web Pages 量身定做的,免費的 ASP.NET 開發(fā)工具。
WebMatrix 包含:
Web Pages 實例和模板
一種 Web 服務(wù)器語言(VB 或者 C# 的 Razor 服務(wù)器標(biāo)記語法)
一種 Web 服務(wù)器(IIS Express)
一種數(shù)據(jù)庫服務(wù)器(SQL Server Compact)
一個完整的 Web 開發(fā)框架(ASP.NET)
通過使用 WebMatrix ,您可以從一個空的網(wǎng)站和一個空白頁面開始開發(fā),或者您也可以使用"Web 應(yīng)用程序庫"中的開源應(yīng)用程序進(jìn)行二次開發(fā)。PHP 和 ASP.NET 應(yīng)用程序很多都是開源的,比如 Umbraco、DotNetNuke、Drupal、Joomla、WordPress 等等。WebMatrix 也有內(nèi)置安全性、搜索引擎優(yōu)化和網(wǎng)絡(luò)出版工具。
使用 WebMatrix 開發(fā)的技術(shù)和代碼可以無縫地轉(zhuǎn)化為完全專業(yè)化的 ASP.NET 應(yīng)用程序。
如果您想嘗試使用 WebMatrix ,請點擊下面的鏈接進(jìn)行安裝:
http://www.microsoft.com/web/gallery/install.aspx?appid=WebMatrix
需編程,零成本!只需挑選一個主題,經(jīng)過配置,加入內(nèi)容即可。
作者 | Stephen Vinouze
譯者 | 彎月,責(zé)編 | 郭芮
頭圖 | CSDN 下載自東方IC
出品 | CSDN(ID:CSDNnews)
以下為譯文:
創(chuàng)建一個網(wǎng)站的工作量不容小覷。即便你擁有編程背景,也有可能在網(wǎng)絡(luò)上迷失方向,究竟從何處下手呢?
我可以在此承諾,讀完本文,你的收獲包括:
一個免費的優(yōu)雅網(wǎng)站,甚至無需托管。
一個評論框,讓讀者與你互動。
一個郵件訂閱列表,用于通知用戶你新發(fā)布的內(nèi)容。
使用分析工具來跟蹤讀者的行為。
以及其他高級的主題。
首先給你看一下我最近構(gòu)建的網(wǎng)站(https://www.stephenvinouze.com/),很酷吧?
我花了大量時間整理和研究有關(guān)靜態(tài)網(wǎng)站生成器的文章。本文匯總了我獲取的所有信息,希望能為你呈現(xiàn)一份完整的指南。
下面,我們開始吧!
前提條件
剛才我曾說構(gòu)建新網(wǎng)站不需要花費1分錢,這要感謝GitHub Pages(https://pages.github.com/)。
你只需創(chuàng)建一個GitHub賬號,即可免費托管你的網(wǎng)站。版本管理與部署的工作可以全權(quán)委托給Github。非常方便!
你甚至不需要懂得HTML或CSS,盡管了解這些更好。GitHub Pages使用Jekyll將Markdown文件轉(zhuǎn)換成HTML,所以你只需要關(guān)注內(nèi)容即可。
所以前提條件是:
擁有GitHub賬號。
了解Git的基本知識。不需要是專家,甚至可以直接在GitHub的Web界面上操作。
了解怎樣書寫Markdown,通過官方的速查表(https://github.com/adam-p/markdown-here/wiki/Markdown-Cheatsheet)分分鐘就能學(xué)會。
如果這些都沒問題,那么我們就來看看最激動人心的部分吧!
選擇主題
這是本文最重要的部分!你可以慢慢選擇最適合需要的模板。
你可以找到一大堆免費的主題。這些主題都有詳盡的文檔,適用于各種情況,不論你想建立個人博客,還是建立個人主頁。當(dāng)然你也可以花錢選擇付費主題。
例如,我的博客選擇了Mediumish主題。感謝WowThemes免費提供了這個優(yōu)秀的主題。
瀏覽這些主題,點擊“Live Demo”按鈕可以看到實時的預(yù)覽。找到你想要的那個!
部署網(wǎng)站
假設(shè)你已經(jīng)建好了GitHub賬號。仔細(xì)看看GitHub Pages的文檔就會知道(https://pages.github.com/),你應(yīng)該建立一個Git倉庫,取名為your_username.github.io。
我們跳過這些設(shè)置的步驟。畢竟,我們選擇主題的目的就是為了跳過這些設(shè)置步驟。你可不想在設(shè)置上花費一整天。
根據(jù)你選擇的模板的Git倉庫建立分叉。模板頁面上應(yīng)該有一個鏈接,點擊后就能創(chuàng)建一個復(fù)制的Git倉庫,你可以在這個倉庫中寫入內(nèi)容。
分叉之后,你需要將這個倉庫的名字改成your_username.github.io。點擊“Settings”,然后重命名倉庫:
試試看!你的網(wǎng)站應(yīng)該已經(jīng)可以使用了!在瀏覽器中打開一個新的頁面,輸入URL:http://your_username.github.io/ (將your_username替換為你的用戶名)。
如果還有疑問,可以比較一下你和我的代碼庫。
https://github.com/StephenVinouze/stephenvinouze.github.io
準(zhǔn)備自己的版本
GitHub會從master分支部署網(wǎng)站。記住,推送到master上的任何修改都會導(dǎo)致網(wǎng)站重新部署。
所以在開始之前,我建議你先創(chuàng)建一個develop分支。在將develop合并到master之前,所有的改變都不會影響網(wǎng)站的內(nèi)容。
使用develop分支,你可以嘗試任何東西而不用擔(dān)心把網(wǎng)站搞壞。
測試改動
你肯定想看看develop分支的改動會對網(wǎng)站產(chǎn)生什么影響。我們可以在本地部署。打開控制臺,在你克隆git倉庫的地方輸入下列命令:
$ bundle exec jekyll serve -- watch
然后用瀏覽器打開這個地址:http://localhost:4000/
你可以一直保留這個終端窗口,網(wǎng)站就會在你自己的機器上一直運行,直到你關(guān)閉為止。
配置網(wǎng)站
現(xiàn)在你的網(wǎng)站還只是一個空殼,我們來添加一些內(nèi)容。
注意:我建議把這篇文章當(dāng)作一個指南。并非所有主題的配置都一樣。如果你選的主題和我選的不一樣,那么我在文章里寫的并不一定適合你。請仔細(xì)閱讀主題本身的文檔。
首先,我們來看看_config.yml文件,這里有許多神奇的配置。有幾個參數(shù)需要按照自己的需要更新。
你可以自行配置一些東西,例如:
聯(lián)系信息
頭像
社交網(wǎng)絡(luò)鏈接
重啟Jekyll進(jìn)程,然后刷新頁面,就能看到修改的效果。
需要提醒你,在改變_config.yml文件后,必須重新啟動Jekyll才能看到效果。對于其他文件的改動則只需要刷新頁面即可。
發(fā)布文章
現(xiàn)在可以將模板上的文章替換為你自己的文章了。
在開始之前,要理解Jekyll的命名規(guī)范。所有文章必須:
保存在_posts文件夾下
命名為yyyy-mm-dd-name-of-your-post.md格式
用Markdown語言編寫(即擴展名.md的含義)
試試看!在_posts目錄下用適當(dāng)?shù)拿謩?chuàng)建一個文件。然后,刷新瀏覽器就能看到你的文章顯示在網(wǎng)站上。
“如果我的有些文章已經(jīng)發(fā)表在Medium上,想轉(zhuǎn)換成Markdown怎么辦?”
有幾個解決方案。我推薦使用這個十分好用的轉(zhuǎn)換器(https://medium-to-markdown.now.sh/)。
需要提醒的是,它無法處理Gist,所以你需要手工提取Gist。但并不復(fù)雜,只需右鍵點擊Medium中的Gist然后將其中包含的<script>標(biāo)簽中的鏈接提取出來即可。
與讀者互動
許多主題都支持Disqus(https://disqus.com/)。這個服務(wù)可以在你的網(wǎng)頁上添加一個評論區(qū)。配置方法如下:
創(chuàng)建一個Disqus賬號,可以先選擇免費的套餐。
用網(wǎng)站名作為唯一的ID,輸入網(wǎng)站的URL。
將_config.yml中的Disqus值替換成你的Disqus網(wǎng)站名。
下面的截圖中可以看到我的網(wǎng)站Disqus配置。在我的_config.yml文件中,我將Disqus值設(shè)置為stephenvinouze:
你也許注意到我的URL并不是https://stephenvinouze.github.io。我稍后會解釋為什么。現(xiàn)在你應(yīng)該使用你的GitHub URL。
還有,你應(yīng)該注意Disqus永遠(yuǎn)不會在你的本地工作,因為你上面指定的是正式網(wǎng)站的地址。
請記住,你現(xiàn)在修改的還是develop分支。如果你已經(jīng)提交并推送了你已經(jīng)完成的修改(你應(yīng)該這么做),你的網(wǎng)站并不會被重新部署。如果想檢查Disqus是否正常工作,就必須將develop合并到master。然后可以訪問正式網(wǎng)站的URL(網(wǎng)站部署可能需要一些時間)。
你應(yīng)該能看到下面的評論區(qū):
留住訪問者
網(wǎng)站的第一要務(wù)就是存留率。你在與整個互聯(lián)網(wǎng)競爭,讓你的聲音能被全世界聽見。怎樣才能讓別人訪問你的網(wǎng)站?或者說,為什么他們會留在你的網(wǎng)站?
也許你聽說過SEO。不幸的是,我對于這個話題并不熟悉。不過你能找到許多這方面的文章。有一些模板據(jù)說是SEO優(yōu)化過的。不過我不會過于依賴這些模板。
除了SEO之外,你還可以邀請訪問者繼續(xù)關(guān)注未來的文章。有幾種機制可以達(dá)到這一點。一種方法叫做Mailchimp(https://us18.admin.mailchimp.com/)。就像Disqus一樣,你可以嵌入一個HTML表單,這樣你在發(fā)布新文章的時候可以通知用戶。許多主題已經(jīng)包含了Mailchimp。很方便吧?
不過,Mailchimp的配置并不是太直觀。我花了很多時間嘗試搞明白他們的儀表板怎么用。
我的主題要求我添加一個來自Mailchimp的訂閱列表鏈接。我假設(shè)你也遇到了同樣的要求,所以我將帶領(lǐng)你配置一下。
就像Disqus一樣,首先需要創(chuàng)建一個賬號,選擇免費套餐,然后回答一些問題。
選擇“Audience”。右側(cè)面板有一個“Manage Audience”。打開它,然后點擊“Signup forms”。
選擇第一個叫做“Form builder”的項目。這里你可以收到訂閱表單。用戶點擊網(wǎng)站的“訂閱”按鈕時就會看到這個頁面。你可以進(jìn)行一些定制。
Mailchimp可以讓你修改表單的布局,以及你希望用戶填寫的字段。如果你想把用戶嚇跑,就保持表單盡可能簡潔。一個電子郵件字段就足夠了。
要把表單連接到網(wǎng)站上,只需復(fù)制“Signup form URL”中顯示的短鏈接。在瀏覽器中打開,看看表單的實際樣子。你可以將完整的URL復(fù)制到你的項目中,完成這個配置。
如果你還想深入,可以定制一下其他表單。在同一個網(wǎng)頁上,找到頂端的“Signup form”面板。這個下拉列表列出了所有訪問者通過郵件列表與你交流時能夠看到的表單。
創(chuàng)意的工作就交給你自己了。到這里為止,你的郵件列表訂閱應(yīng)該可以工作了。別忘了將修改合并到master分支來應(yīng)用這些修改。
跟蹤用戶
跟蹤是用戶看不到的一部分工作,但你絕不能忽視它。
Google Analytics可以幫你分析用戶的行為。你可以了解用戶如何訪問你的網(wǎng)站,哪篇文章的效果最好。
絕大多數(shù)模板都集成了Google Analytics來跟蹤網(wǎng)頁瀏覽。如果你的模板沒有,可以參考這篇文章:
https://desiredpersona.com/google-analytics-jekyll/
你需要指定一個Google Analytics ID。也許這看起來有些無聊,但我們需要重復(fù)在Disqus和Mailchimp上進(jìn)行過的操作。你會被重定向到這個頁面,該頁面上可以找到TrackingID。在下面的截圖上可以看出,我的是UA-166933112-1。將其復(fù)制到你的_config.yml文件中,就搞定了。
同樣,別忘了將修改合并到master。重新部署后,嘗試瀏覽幾篇文章。你應(yīng)該能在Google Analytics的實時儀表板中看到點擊次數(shù)的增加。
福利:自定義域名
到這里為止,你的網(wǎng)站就建好了。
你的網(wǎng)站的地址為http://your_username.github.io/。但是如果能有一個更友好的域名該多好!
GitHub Pages可以讓你指定自定義域名。對于我的網(wǎng)站來說,所有訪問http://stephenvinouze.github.io/的都會被重定向到https://www.stephenvinouze.com/。
盡管我承諾這個網(wǎng)站是免費的,但這一步例外。你需要購買一個域名。
如果你不想花錢, 則可以跳過這一步。但是,擁有自己的域名可以讓訪問者更容易找到你。這是你的網(wǎng)站的品牌。
如果你想做這一步,你需要一個DNS供應(yīng)商。我選擇了Google Domains,因為它:
很容易配置
可靠
便宜(每年只需十幾歐元)
購買域名之后,你需要將自定義域名關(guān)聯(lián)到你的GitHub賬號上。在本文開頭提到的編輯Git倉庫的同一個頁面上,向下滾動直到你看到這一節(jié):
用你購買的域名填寫“Custom domain”字段。我推薦勾選Enforce HTTPS。
保存這些設(shè)置,然后進(jìn)入Google Domain的控制臺。在“DNS”小節(jié)中,用你的記錄替換自定義記錄。可以參考這篇文章(https://medium.com/@hossainkhan/using-custom-domain-for-github-pages-86b303d3918a)。
搞定了!試試看用新的URL訪問網(wǎng)站吧。
注意新購買的域名可能需要最多一天時間才能訪問。我的花了大概一個小時。
總結(jié)
恭喜,你成功了!
通過GitHub Pages可以如此輕松地構(gòu)建網(wǎng)站,我對此非常驚訝。
但是,我們不要忘記社區(qū)為我們開發(fā)了這些預(yù)配置的精良模板。為了感謝他們的辛勤工作,請在你的網(wǎng)站內(nèi)注明模板出處,尤其是當(dāng)遇到你非常喜歡的免費主題時,這也是支持他們努力的象征。
原文:https://medium.com/better-programming/how-to-swiftly-launch-a-free-website-with-github-pages-9be6441fce61
本文為 CSDN 翻譯,轉(zhuǎn)載請注明來源出處。
?劉強東賣光碟,周鴻祎“電腦算命”,馬云賣鮮花,盤點 IT 大佬擺過的地攤
?從地攤看云計算:規(guī)模產(chǎn)業(yè)歷程大揭秘
?頭條和百度“大打出手”時,微信搜索去哪兒了?
?怒肝 8 個月源碼,我成為了 Spring 開源貢獻(xiàn)者
?干貨 | 基于SRS直播平臺的監(jiān)控系統(tǒng)之實現(xiàn)思路與過程
?挖礦仍然有利可圖嗎?
*請認(rèn)真填寫需求信息,我們會在24小時內(nèi)與您取得聯(lián)系。