整合營銷服務(wù)商

          電腦端+手機(jī)端+微信端=數(shù)據(jù)同步管理

          免費咨詢熱線:

          基于Javascript編寫的開源Markdown和

          基于Javascript編寫的開源Markdown和HTML相互轉(zhuǎn)換器-showdown

          showdown是一個基于Javascript編寫的開源Markdown和HTML相互轉(zhuǎn)換器,showdown可以用在客戶端(瀏覽器)或者服務(wù)端(nodejs)。shodown還支持原始規(guī)范中未定義為opt-in特性的“額外”語法。默認(rèn)情況下不會啟用新的語法元素,需要使用者通過配置啟用它們!






          Github(MIT)

          https://github.com/showdownjs/showdown

          特點



          • 易于使用

          沒有硬依賴或特殊的安裝說明,只需下載(或使用CDN)并將其包含在您的文件中。

          • 功能齊全

          開箱即用,支持許多流行的Markdown風(fēng)格,如原生的、GFM、commonmark。其他特性,如表、元數(shù)據(jù)等,可以通過配置啟用。

          • 跨平臺

          在服務(wù)器端(nodejs)和客戶端(瀏覽器)中都可以使用

          • 可定制和可擴(kuò)展

          它很容易定制和擴(kuò)展,這意味著你可以添加新的語法或通過擴(kuò)展或配置修改它的行為

          • 兼容性好

          Showdown兼容新舊版本(如IE8+和nodejs0.12)。

          • 純Javascript

          用es5編寫,意味著你可以按原樣在項目中使用它,而不需要轉(zhuǎn)換。

          安裝使用

          可以使用bower或者npm安裝使用

          bower install showdown
          npm install showdown

          也可以直接使用cdn直接引入以便于直接使用,以下便是線上demo,可實現(xiàn)邊寫邊預(yù)覽


          總結(jié)

          showdown的優(yōu)勢就在于其強(qiáng)大的功能和其非常強(qiáng)的兼容性,而且使用也非常簡單,通過很少的配置就能實現(xiàn)很多豐富的功能!具體如何使用可參考官方文檔,官方文檔就是在一個實時預(yù)覽的編輯器中進(jìn)行展現(xiàn)的!

          .NET的SelectPdf Html到Pdf轉(zhuǎn)換器-社區(qū)版是.NET的SelectPdf庫中提供的功能強(qiáng)大的html到pdf轉(zhuǎn)換器的免費版本。
          轉(zhuǎn)換器提供了許多強(qiáng)大的選項(將任何網(wǎng)頁轉(zhuǎn)換為pdf,將任何html字符串轉(zhuǎn)換為pdf,html5 / css3 / javascript支持,頁眉和頁腳支持等),唯一的限制是它最多可以生成pdf文檔。5頁長。
          .NET的免費HTML至Pdf轉(zhuǎn)換器–社區(qū)版功能:最多生成5頁pdf文檔,將任何網(wǎng)頁轉(zhuǎn)換為pdf,將任何原始html字符串轉(zhuǎn)換為pdf,設(shè)置pdf頁面設(shè)置(頁面大小,頁面方向,頁面邊距) ,在轉(zhuǎn)換過程中調(diào)整內(nèi)容大小以適合pdf頁面,設(shè)置pdf文檔屬性,設(shè)置pdf查看器首選項,設(shè)置pdf安全性(密碼,權(quán)限),設(shè)置轉(zhuǎn)換延遲和網(wǎng)頁導(dǎo)航超時,自定義頁眉和頁腳,在頁眉中支持html和頁腳,自動和手動分頁符,在每個頁面上重復(fù)html表頭,支持@media類型屏幕和打印,支持內(nèi)部和外部鏈接,基于html元素自動生成書簽,支持HTTP標(biāo)頭,支持HTTP cookie,支持需要身份驗證的網(wǎng)頁,支持代理服務(wù)器,啟用/禁用javascript,修改顏色空間,多線程支持,HTML5 / CSS3支持,Web字體支持等等。


          代碼實現(xiàn)

          1、nuget 引用

          Install-Package Select.HtmlToPdf

          2、方法

          • using SelectPdf;using System.Collections.Specialized;using System.IO;using System.Web;
            namespace BQoolCommon.Helpers.File{ public class WebToPdf { public WebToPdf() { //SelectPdf.GlobalProperties.LicenseKey="your-license-key"; }
            /// <summary> /// 將 Html 轉(zhuǎn)成 PDF,並儲存成檔案 /// </summary> /// <param name="html">html</param> /// <param name="fileName">絕對路徑</param> public void SaveToFileByHtml(string html, string fileName) { var doc=SetPdfDocument(html); doc.Save(fileName); }
            /// <summary> /// 傳入 Url 轉(zhuǎn)成 PDF,並儲存成檔案 /// </summary> /// <param name="url">url</param> /// <param name="fileName">絕對路徑</param> /// <param name="httpCookies">Cookies</param> public void SaveToFileByUrl(string url, string fileName, NameValueCollection httpCookies) { var doc=SetPdfDocument(url, httpCookies); doc.Save(fileName); }
            /// <summary> /// 將 Html 轉(zhuǎn)成 PDF,並輸出成 byte[] 格式 /// </summary> /// <param name="html">html</param> /// <returns></returns> public byte[] GetFileByteByHtml(string html) { var doc=SetPdfDocument(html); return doc.Save(); }
            /// <summary> /// 傳入 Url 轉(zhuǎn)成 PDF,並輸出成 byte[] 格式 /// </summary> /// <param name="url">url</param> /// <param name="httpCookies">Cookies</param> /// <returns></returns> public byte[] GetFileByteByUrl(string url, NameValueCollection httpCookies) { var doc=SetPdfDocument(url, httpCookies); return doc.Save(); }
            /// <summary> /// 將 Html 轉(zhuǎn)成 PDF,並輸出成 Stream 格式 /// </summary> /// <param name="html">html</param> /// <returns></returns> public Stream GetFileStreamByHtml(string html) { var doc=SetPdfDocument(html); var pdfStream=new MemoryStream();
            doc.Save(pdfStream); pdfStream.Position=0;
            return pdfStream; }
            /// <summary> /// 傳入 Url 轉(zhuǎn)成 PDF,並輸出成 Stream 格式 /// </summary> /// <param name="html">html</param> /// <returns></returns> public Stream GetFileStreamByUrl(string url, NameValueCollection httpCookies) { var doc=SetPdfDocument(url, httpCookies); var pdfStream=new MemoryStream();
            doc.Save(pdfStream); pdfStream.Position=0;
            return pdfStream; }
            private PdfDocument SetPdfDocument(string html) { var converter=new HtmlToPdf();
            converter.Options.WebPageWidth=1200; html=HttpUtility.HtmlDecode(html);
            return converter.ConvertHtmlString(html); }
            private PdfDocument SetPdfDocument(string url, NameValueCollection httpCookies) { var converter=new HtmlToPdf(); converter.Options.WebPageWidth=1200;
            if (httpCookies != && httpCookies.Count !=0) { converter.Options.HttpCookies.Add(httpCookies); }
            return converter.ConvertUrl(url); }
            }}

            3、調(diào)用

            • /// <summary> /// 下載pdf /// </summary> public void Downpdf(string data) { var stream=new BQoolCommon.Helpers.File.WebToPdf().GetFileStreamByHtml(Gethtml(data)); Response.Clear(); //二進(jìn)制流數(shù)據(jù)(如常見的文件下載) Response.ContentType="application/octet-stream"; //通知瀏覽器下載文件而不是打開 Response.AddHeader("Content-Disposition", "attachment; filename=" + HttpUtility.UrlEncode("Profit and Loss Statement.pdf", System.Text.Encoding.UTF8)); var bytes=StreamToBytes(stream); Response.BinaryWrite(bytes); Response.Flush(); stream.Close(); stream.Dispose();
              Response.End(); }

              那么如何獲取指定頁面的html 呢 傳入對應(yīng)的model 獲得指定動態(tài)的html

              • private string Gethtml(string data) { string str="";
                str=this.ControllerContext.RenderViewToString("ProfitDetails", data);
                return str; }
                • using BQoolCommon.Helpers.Format;using Newtonsoft.Json;using OrdersManager.Models.ViewModel.Report;using System;using System.Collections.Generic;using System.IO;using System.Linq;using System.Web;using System.Web.Mvc;
                  namespace OrdersManager.Web.Infrastructure{ public static class HelperExtensions { public static string RenderViewToString(this ControllerContext context, string viewName, string data) { if (string.IsOrEmpty(viewName)) viewName=context.RouteData.GetRequiredString("action");
                  context.Controller.ViewData.Model=JsonConvert.DeserializeObject<ProfitDetailsmodel>(StringTools.Base64Decode(StringTools.Base64Decode(data)));
                  using (var sw=new StringWriter()) { ViewEngineResult viewResult=ViewEngines.Engines.FindPartialView(context, viewName); var viewContext=new ViewContext(context, viewResult.View, context.Controller.ViewData, context.Controller.TempData, sw); try { viewResult.View.Render(viewContext, sw); } catch (Exception ex) { throw; }
                  return sw.GetStringBuilder().ToString(); } } }}

                  參考文檔

                  https://www.nuget.org/packages/Select.HtmlToPdf/

          大家知道HTML格式嗎?我們通常上網(wǎng)瀏覽的網(wǎng)頁就是HTML格式。而PDF格式是我們常用的一種文件格式,在不同的設(shè)備上打開,既不會影響到PDF內(nèi)容的排版,也不容易被修改。在工作中,有時為了查看PDF文件在網(wǎng)頁狀態(tài)下的排版,以及對內(nèi)容進(jìn)行編輯修改,我們需要將PDF轉(zhuǎn)成HTML。可能有些小伙伴們不知道如何轉(zhuǎn)換。別著急,今天這期PDF轉(zhuǎn)HTML轉(zhuǎn)換器推薦,給大家做一下詳細(xì)介紹。

          轉(zhuǎn)換方法一:借助“萬能文字識別軟件”完成轉(zhuǎn)換

          安利指數(shù):★★★★☆

          安利理由:功能豐富,支持多種格式進(jìn)行轉(zhuǎn)換

          這款軟件主打文字識別功能,它能夠準(zhǔn)確識別圖片、視頻、音頻中的文字內(nèi)容,并將它們轉(zhuǎn)換成文字。不止這些,它還能實現(xiàn)全能翻譯、AI修復(fù)照片、PDF轉(zhuǎn)換處理等操作。

          像PDF轉(zhuǎn)成HTML就可以使用這款軟件完成。它的轉(zhuǎn)換速度很快,如果文件數(shù)量較多也不用擔(dān)心,我們可以將文件批量上傳,大大提高我們的效率。

          轉(zhuǎn)換流程:

          步驟一:打開軟件,找到【PDF轉(zhuǎn)換處理】,選擇【PDF轉(zhuǎn)HTML】按鈕。

          步驟二:將需要轉(zhuǎn)換的PDF文件直接拖拽進(jìn)軟件。

          步驟三:點擊【開始轉(zhuǎn)換】,轉(zhuǎn)換后的HTML文件默認(rèn)保存到電腦桌面。轉(zhuǎn)換成功后,可以點擊查看。

          告訴大家一個好消息,我們除了可以在電腦上操作,也可以在手機(jī)下載它的APP進(jìn)行使用哦。如果遇到需要進(jìn)行翻譯、掃描、PDF轉(zhuǎn)換處理等情況,也可以使用APP來操作,非常方便!

          轉(zhuǎn)換方法二:借助“WPS”完成轉(zhuǎn)換

          安利指數(shù):★★★☆☆

          安利理由:支持文檔表格編輯處理

          WPS作為我們經(jīng)常使用的辦公軟件,擁有對word,PPT等文檔進(jìn)行編輯的能力,那你知道它還能實現(xiàn)PDF轉(zhuǎn)HTML的操作嗎?

          轉(zhuǎn)換流程:

          首先打開WPS軟件,新建文檔。然后將PDF文件的內(nèi)容復(fù)制到word文檔后保存。保存的格式選擇【單一網(wǎng)頁文件】即可。

          以上就是今天的PDF轉(zhuǎn)HTML轉(zhuǎn)換器推薦。看完這篇文章,大家知道如何轉(zhuǎn)換了嗎?有需要的小伙伴,趕快收藏起來吧!


          主站蜘蛛池模板: 国产精品无码一区二区三区毛片| 亚洲色欲一区二区三区在线观看| 精品视频在线观看一区二区| 99国产精品一区二区| 3D动漫精品一区二区三区| 中文字幕一区二区视频| 国产精品一区不卡| 亚洲性色精品一区二区在线 | 国产日韩精品一区二区在线观看| 亚洲AV无码一区二区二三区软件| 亚洲一区二区高清| 国产伦精品一区二区三区无广告| 精品午夜福利无人区乱码一区| 亚洲国产成人一区二区精品区| 国内精品无码一区二区三区| 无码精品久久一区二区三区| 波多野结衣中文一区二区免费| 成人无码精品一区二区三区| 性色AV一区二区三区无码| 国产精品视频一区国模私拍| 无码中文字幕人妻在线一区二区三区| 无码乱人伦一区二区亚洲| 农村乱人伦一区二区| 麻豆一区二区在我观看| 亚洲一区二区三区不卡在线播放| 日韩在线不卡免费视频一区| 无码人妻一区二区三区在线视频| 久久久久成人精品一区二区| 国产福利一区二区三区视频在线| 97se色综合一区二区二区| 伊人久久一区二区三区无码| 国精产品999一区二区三区有限| 无码中文字幕乱码一区| 国产日韩精品一区二区三区| 亚洲国产高清在线一区二区三区| 岛国精品一区免费视频在线观看| 亚洲一区二区三区在线观看精品中文| 国产精品美女一区二区视频 | 精品久久综合一区二区| 国产伦一区二区三区免费| 香蕉视频一区二区三区|