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