整合營銷服務商

          電腦端+手機端+微信端=數據同步管理

          免費咨詢熱線:

          C#使用iTextSharp操作PDF文件

          C#使用iTextSharp操作PDF文件

          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系統。

          技術選型或技術預研

          選型考慮三要素:功能性,性能,穩定性

          功能性:滿足現在和可預期的未來

          性能:考慮現在和未來,明白上限

          穩定性

          • 1.主流,團隊中詢問大家用過的多不
          • 2.坑少,資料多,千錘百煉
          • 3.不要讓本已滿負荷的小小團隊,再去趟雷,你和你的技術團隊有那個實力嗎第一個吃螃蟹。

          如果有多個優秀待選?

          團隊人員:

          有很多優秀的可選,看團隊的熟練度

          個人素質:

          廣度決定能知道

          深度決定知道好

          不用并不代表不關注

          選不好,會造成進退兩難,人馬疲憊

          關于以后

          不要讓以后,忽略了當下。

          太多的以后可能讓你走不出當下。

          真的有以后嗎。

          想做好,少不了以后。


          主站蜘蛛池模板: 久久伊人精品一区二区三区| 国产精品久久无码一区二区三区网 | 亚洲电影唐人社一区二区| 无码播放一区二区三区| 久久一区二区精品| 无码精品久久一区二区三区 | 亚洲中文字幕在线无码一区二区 | 成人精品一区二区三区电影| 久久se精品一区精品二区| 变态拳头交视频一区二区| 一区二区三区在线视频播放| 精品一区二区三区在线视频观看| 蜜桃AV抽搐高潮一区二区| 精品国产AV一区二区三区| 91精品国产一区二区三区左线 | 丰满人妻一区二区三区视频| 国产伦精品一区二区三区在线观看| 国产精品第一区揄拍| 日韩国产免费一区二区三区| 韩国美女vip福利一区| 日本视频一区在线观看免费| 无码国产精品一区二区免费| 久久久无码精品人妻一区| 国模无码一区二区三区| 日韩精品一区二区三区中文3d | 亚洲一区二区三区乱码在线欧洲| 亚洲国产视频一区| 海角国精产品一区一区三区糖心 | 国产一区二区三区91| 无码人妻久久久一区二区三区| 日韩国产精品无码一区二区三区 | 国产精品视频一区国模私拍 | 亚洲国产一区二区三区青草影视| 无码精品国产一区二区三区免费| 文中字幕一区二区三区视频播放 | 国产欧美色一区二区三区| 国产拳头交一区二区| 熟女性饥渴一区二区三区| 激情亚洲一区国产精品| 国产大秀视频一区二区三区| 精品国产不卡一区二区三区|