html文件怎么轉成PDF文件?有的招聘網上的簡歷導成DOC文件,不能直接使用,這樣造成很大的困擾,那么它還有一個格式,那就是html格式。將文件導出成html格式,然后再轉成PDF文件,這樣便可以直接使用了。平常在項目中也是很多這樣的需求,需要把內容轉成pdf文件。
下面我們來看下使用 iTextSharp實現HTML轉PDF的方法。
1、nuget 安裝iTextSharp。
using iTextSharp.text;
using iTextSharp.text.pdf;
2、將Html文檔轉換為pdf。
/// <summary>
/// 將Html文檔轉換為pdf
/// </summary>
/// <param name="htmlText"></param>
/// <returns></returns>
public byte[] ConvertHtmlTextToPDF(string htmlText)
{
if (string.IsOrEmpty(htmlText))
return ;
//避免當htmlText無任何html tag標簽的純文字時,轉PDF時會掛掉,所以一律加上<p>標簽
htmlText="<p>" + htmlText + "</p>";
using (var outputStream=new MemoryStream())
{
byte[] data=Encoding.UTF8.GetBytes(htmlText);
var msInput=new MemoryStream(data);
var doc=new Document();//pdf文檔,默認A4格式。
var writer=PdfWriter.GetInstance(doc, outputStream);
doc.Open();
//使用XMLWorkerHelper把Html parse到PDF
iTextSharp.tool.xml.XMLWorkerHelper.GetInstance().ParseXHtml(writer, doc, msInput, , Encoding.UTF8, new UnicodeFontFactory());
//指定默認縮放比例為100%
var pdfDest=new PdfDestination(PdfDestination.XYZ, 0, doc.PageSize.Height, 1f);
//將默認設置寫入pdf
var action=PdfAction.GotoLocalPage(1, pdfDest, writer);
writer.SetOpenAction(action);
doc.Close();
msInput.Close();
outputStream.Close();
return outputStream.ToArray();
}
}
3、Unicode 字體支持。
/// <summary>
/// Unicode 字體支持
/// </summary>
public class UnicodeFontFactory : FontFactoryImp
{
public override Font GetFont(string fontname, string encoding, bool embedded, float size, int style, BaseColor color, bool cached)
{
//使用微軟雅黑字體解決中文亂碼的問題,因為雅黑字體為字體集合所以需要使用,0來指定具體的字體。
//var chineseFontPath=Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Fonts), "msyh.ttc,0");
//宋體
//BaseFont baseFont=BaseFont.CreateFont(@"c:\Windows\Fonts\simsun.ttc,0", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);
//黑體
BaseFont baseFont=BaseFont.CreateFont(@"c:\Windows\Fonts\SIMHEI.ttf", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);
//var baseFont=BaseFont.CreateFont(chineseFontPath, BaseFont.IDENTITY_H, BaseFont.EMBEDDED);
return new Font(baseFont, size, style, color);
}
}
4、調用生成。
string content=temp.Content;
foreach (var dict in dicts)
{
content=content.Replace("{{" + dict.Key + "}}", dict.Value);
}
var path=_esignInfo.Value.ContractPath;
//if (entity.ContractType==ContractType.First)
//{
// path +="/" + appId + "/Agreements";
//}
entity.OriginalFileUrl=_pdfHelper.WritePdfFile(content, contractNo, path, "PDF");
bool isSucc=!String.IsOrEmpty(entity.OriginalFileUrl);
ngleSharp 是一個用于處理 HTML 和 XML 的 .NET 庫。它提供了一個強大的 DOM API,支持解析、修改和操作 HTML。下面是一個使用 AngleSharp 來解析 HTML 網頁元素的基本示例:
首先,你需要安裝 AngleSharp。你可以通過 NuGet 包管理器來安裝它。在 Visual Studio 中,打開“工具”菜單,選擇“NuGet 包管理器”,然后選擇“管理解決方案的 NuGet 包”。搜索 AngleSharp 并安裝它。
然后,創建一個 C# 控制臺應用程序,并使用以下代碼來解析 HTML 元素:
csharpusing System;
using System.Net.Http;
using System.Threading.Tasks;
using System.IO;
using AngleSharp; // 引入AngleSharp命名空間
class Program
{
static async Task Main(string[] args)
{
string url="http://example.com"; // 替換為你要抓取的網頁URL
string outputFile="output.txt"; // 輸出文件名
await DownloadWebPage(url, outputFile);
}
static async Task DownloadWebPage(string url, string outputFile)
{
HttpClient client=new HttpClient();
HttpResponseMessage response=await client.GetAsync(url);
response.EnsureSuccessStatusCode();
string html=await response.Content.ReadAsStringAsync();
// 創建AngleSharp的Document對象并加載HTML內容
var document=await AngleSharp.Parser.Default.ParseAsync(html);
// 獲取要提取的元素,例如標題、段落等。這里我們獲取所有的<p>標簽元素。
var paragraphs=document.QuerySelectorAll("p"); // 使用CSS選擇器來選擇元素
if (paragraphs !=null)
{
foreach (var para in paragraphs)
{
// 輸出每個段落的內容到控制臺或寫入文件
Console.WriteLine(para.InnerHtml); // 輸出到控制臺
// File.WriteAllText(outputFile, para.InnerHtml); // 寫入文件(如果需要)
}
}
}
}
在這個示例中,我們首先使用 HttpClient 從指定的 URL 下載 HTML 內容。然后,我們使用 AngleSharp 的 Parser 類來解析 HTML,并將結果存儲在一個 Document 對象中。通過 QuerySelectorAll 方法,我們可以選擇我們要提取的元素。在這個例子中,我們選擇了所有的 <p> 標簽元素,并輸出了它們的內部 HTML 到控制臺。如果你想將內容寫入文件,可以使用 File.WriteAllText 方法。
net體系
.net core
.net 類庫
asp.net mvc
asp.net webapi
asp.net core
EF
跨平臺和運行時解決方案(解決方案)
Katana:微軟基于OWIN規范實現的非IIS寄宿ASP.NET和MVC等。
MONO.NET:跨平臺的.NET運行環境,讓.NET跨平臺運行成為可能。
Unity3D:微軟大力支持的機遇C#和JavaScript的跨平臺游戲開發框架。
Cassini、IIS Express和Cassinidev:開源的ASP.NET執行環境。
IKVM.NET:基于.NET的JAVA虛擬機,讓JAVA運行在.NET之上。
Enterprise Library:微軟針對企業級應用開發的最佳實踐組件。
架構思想框架
PetShop:微軟ASP.NET寵物商店。 分層思想的代表
ABP: ASP.NET Boilerplate Project (ASP.NET樣板項目) 。 領域驅動思想代表
eShopOnContainers:微服務架構和Docker容器的一個簡單的.Net Core的應用。微服務思想代表
依賴注入IOC容器框架(解耦)
Unity:微軟patterns&practicest團隊開發的IOC依賴注入框架,支持AOP橫切關注點。
Spring.NET:依賴注入、面向方面編程(AOP)、數據訪問抽象,、以及ASP.NET集成。
Autofac:最流行的依賴注入和IOC框架,輕量且高性能,對項目代碼幾乎無任何侵入性。
Ninject:基于.NET輕量級開源的依賴注入IOC框架
數據訪問和ORM框架(數據訪問層,持久化層)
EF(ADO.NET Entity Framework):微軟基于ADO.NET開發的ORM框架。
Dapper:輕量級高性能基于EMIT生成的ORM框架。
EmitMapper:性能較高的ORM框架,運行時通過EMIT動態生成IL代碼,并非采用反射機制。
FluentData:開源的基于Fluent API的鏈式查詢ORM輕量級框架。
SqlMapper.cs:用于小項目的通用的C#數據庫訪問類。
SqlHelper.cs:用于小項目的通用的C#數據庫訪問類。
EnterpriseLibray:微軟企業庫,特點是快速開發,融合了微軟工程師多年的經驗。
Nhibernate:面向.NET環境的輕量級的ORM框架。
數據間格式轉換
Newtonsoft.Json:目前.NET開發中最流行的JSON序列化庫,為新版的WebApi庫提供基礎。
AutoMapper:流行的對象映射框架,可減少大量硬編碼,很小巧靈活,性能表現也可接受。
實體類和DataTable的轉換 :反射,表達式樹,emit三種中,三選一。
Redis和數據連接驅動框架
ServiceStack.Redis:
StackExchange.Redis:
csredis:
MySQL Connector:完全托管的 MySQL ADO.NET 數據庫提供程序、連接器
中間件與消息隊列
RabbitMQ.NET:AMQP 客戶端的 C# 實現
NServiceBus:.NET 平臺下最流行的服務總線
全文搜索和爬蟲框架
Lucene.net:流行高性能的全文索引庫,可用于為各類信息提供強大的搜索功能。
Elasticsearch.Net:操作ES
日志記錄框架
Log4Net.dll:輕量級的免費開源.NET日志記錄框架。
NLog:是一個簡單靈活的日志記錄類庫,性能比Log4Net高,使用和維護難度低。
任務計劃調度
Quartz.NET:開源的作業調度和自動任務框架。
辦公系列框架(文檔操作)
NPIO.dll:該項目是 .NET 版本的 POI 項目,原始的 Java 版本位于http://poi.apache.org/ 。
DocX:不需要安裝word軟件,通過C#操作word文件。
Open XML SDK:Open XML SDK 是一個開源庫,用于處理 Open XML 文檔
ITextSharp:iText 是一個PDF庫,用于創建、修改、檢查和維護 (PDF)格式的文檔
語法解析和模板引擎(Template Engine)
RazorEngine:基于微軟 Razor 解析器引擎的開源模板引擎。官網
Nustache:無邏輯模板的開源庫。官網
DotLiquid:Ruby Liquid 模板語言的 C# 移植版本
MarkdownSharp:C# 實現的開源 Markdown 處理器,在 Stack Overflow 中使用
JavaScript.NET和ClearScript(微軟出品):基于.NET開發的JavaScript引擎
ExCSS:C# 的 CSS3 解析器開發庫
HtmlAgilityPack:一個靈活的 HTML 解析器,可以對 DOM 進行讀寫,支持 XPATH 和 XSLT
通訊框架(網絡)
SignalR:ASP.NET 庫,開發者可以通過它在 web 應用程序中非常簡單地實現實時功能
Helios:一套高性能的Socket通信中間件
壓縮框架
SharpZipLib:一個 Zip、GZip、Tar 和 BZip2 的類庫,完全由 C# 編寫,面向 .NET 平臺
安全性框架
OAuth:超輕量級 OAuth 1.0a 簽名生成庫,C# 編寫
ASP.NET Identity:用于 ASP.NET 應用程序的新身份系統。
IdentityServer:可擴展的 OAuth2 和 OpenID 連接提供程序框架
HashLib:HashLib 包含了幾乎所有你見過的哈希算法,它幾乎支持所有東西并且非常容易使用
圖像處理框架
Paint.NET:基于.NET小巧靈活強大的圖形處理開源項目。
NGraphics:NGraphics 是一個 .NET 跨平臺矢量圖形渲染庫
DynamicImage:高性能開源圖片處理庫,用于 ASP.NET
人工智能與數學框架
Math.NET:強大的數學運算、微積分、解方程和科學運算。
Accord.NET:機器學習框架,包含了音頻和圖像處理的庫(計算機視覺、計算機聽覺、信號處理和統計)
移動互聯網和云計算
PushSharp:通過.NET向各種移動平臺推送消息。
mono for android:用.NET語言開發安卓應用:
MonoTouch:用.NET語言開發IOS應用。
PhoneGap和AppCan:跨平臺基于HTML5的移動開發平臺。
Cordova:PhoneGap貢獻給Apache后的開源項目,是驅動PhoneGap的核心引擎。
桌面程序框架
DevExpress:一個全球知名的桌面應用程序UI控件庫。
Prism:微軟開發的針對WPF和Silverlight的MVVM框架,通過功能模塊化的思想,來講復雜的業務功能和UI耦合性進行分離。
WPFToolkit 和 Fluent Ribbon Control Suite:開發類似于Office風格的Ribbon菜單。
測試(Testing)
Faker.Net:方便生成大批量測試數據的框架。
包管理
NuGet:.NET 包管理器。官網
MyGet:為 NuGet、NPM、Bower 和 VSIX 提供程序包倉庫宿主,同樣提供 CI 服務。
Paket:.NET 的一個包依賴管理器,支持 NuGet 包和 GitHub 倉庫。
編譯器和IDE框架
ILSpy:ILSpy 是一個開源的 .NET 程序集查看器和反編譯器
Visual Studio Code:非常棒的編輯器,來自微軟,基于 GitHub Atom
MSBuild也是一個MIT License的開源軟件,可以在Github上看到它的 倉庫 。
Visual Studio 插件
Resharper:Visual Studio 開發人員生產力工具
打包發布和自動構建持續集成和升級框架
Wix Toolset:強大的工具集,用于創建你自己的 Windows 安裝程序
Squirrel:Squirrel 即是一套工具也是一個類庫,可以無安全管理 Windows 桌面程序的安裝和更新
MSBuild:微軟構建引擎(MSBuild)是 .NET 和 Visual Studio 的構建平臺
Psake:基于 .NET 的自動化構建工具,使用 PowerShell 編寫
成品應用系統框架
Orchard:國外一個MVC開源的博客,內容管理CMS系統。
技術選型或技術預研
選型考慮三要素:功能性,性能,穩定性
功能性:滿足現在和可預期的未來
性能:考慮現在和未來,明白上限
穩定性:
團隊人員:
有很多優秀的可選,看團隊的熟練度
個人素質:
廣度決定能知道
深度決定知道好
不用并不代表不關注
選不好,會造成進退兩難,人馬疲憊
關于以后
不要讓以后,忽略了當下。
太多的以后可能讓你走不出當下。
真的有以后嗎。
想做好,少不了以后。
*請認真填寫需求信息,我們會在24小時內與您取得聯系。