ASP.NET Core中快速構(gòu)建PDF文檔的步驟分享第1/2頁
比如我們需要ASP.NET Core 中需要通過PDF來進行某些簡單的報表開發(fā),隨著這并不難,但還是會手忙腳亂的去搜索一些資料,那么恭喜您,這篇帖子會幫助到您,我們就不會再去浪費一些寶貴的時間。
在本文中我們將要使用DinkToPDF來處理我們在.NET Core Web 程序中進行構(gòu)建PDF文檔!就現(xiàn)在我們不多說,直接開始有趣的部分。
前言#
您可以通過創(chuàng)建PDF文檔在我的倉庫中,獲取源代碼,歡迎給個免費的Star...
現(xiàn)在我們創(chuàng)建一個.NET Core 3.0 項目,至于是mvc、Api、這些我并不在意。創(chuàng)建項目后直接Nuget安裝DinkToPDF。隨后您需要下載我的代碼倉庫中的“NativeLibrary”文件夾,在其中,我們將找到兩個文件32bit和64bit,因此我們需要為操作系統(tǒng)選擇合適的庫。我們將從64位文件夾中選擇文件。
最后,我們需要啟動該庫,并且IOC DinkToPDF。
public void ConfigureServices(IServiceCollection services)
{
var context = new CustomAssemblyLoadContext();
context.LoadUnmanagedLibrary(Path.Combine(Directory.GetCurrentDirectory(), "libwkhtmltox.dll"));
services.AddSingleton(typeof(IConverter), new SynchronizedConverter(new PdfTools()));
services.AddControllers();
}
建立實體#
在真實情況的項目中,我們可以從數(shù)據(jù)庫中收集數(shù)據(jù)或從其他API接收數(shù)據(jù)。但是為了簡單起見,我們將從本地存儲中收集PDF文檔的數(shù)據(jù)。隨后,我們將創(chuàng)建一個HTML模板并將其存儲在PDF文檔中。
public class Employee
{
public string Name { get; set; }
public string LastName { get; set; }
public int Age { get; set; }
public string Gender { get; set; }
}
再隨后,我們要創(chuàng)建一個新的文件夾Services和里面兩類文件 DataServices.cs 和 TemplateGenerator.cs 。完整的結(jié)構(gòu)應(yīng)如下所示:
public class DataServices
{
public static List<Employee> GetAllEmployess() =>
new List<Employee>
{
new Employee { Name="Hao Zi Zhang", LastName="Turner", Age=35, Gender="Male"},
new Employee { Name="Yu Chen", LastName="Markus", Age=22, Gender="Female"},
new Employee { Name="Jian Zhi Chu", LastName="Martins", Age=40, Gender="Male"},
new Employee { Name="ElderJames", LastName="Packner", Age=30, Gender="Female"},
new Employee { Name="BlaZui", LastName="Doe", Age=45, Gender="Male"}
};
}
其中添加服務(wù)中返回了某些數(shù)據(jù),用于模擬服務(wù)。我們要生成一個HTML模板,因此我們需要修改 TemplateGenerator.cs 文件:
public class TempleGenertor
{
public static string GetHTMLString()
{
var employees = DataServices.GetAllEmployess();
var sb = new StringBuilder();
sb.Append(@"
<html>
<head>
</head>
<body>
<div class='header'><h1>This is the generated PDF report!!!</h1></div>
<table align='center'>
<tr>
<th>Name</th>
<th>LastName</th>
<th>Age</th>
<th>Gender</th>
</tr>");
foreach (var emp in employees)
{
sb.AppendFormat(@"<tr>
<td>{0}</td>
<td>{1}</td>
<td>{2}</td>
<td>{3}</td>
</tr>", emp.Name, emp.LastName, emp.Age, emp.Gender);
}
sb.Append(@"
</table>
</body>
</html>");
return sb.ToString();
}
}
如果想要指定css樣式,則可以創(chuàng)建某些文件夾,隨后在API通過服務(wù)器路徑來抉擇配置。
.header {
text-align: center;
color: green;
padding-bottom: 35px;
}
table {
width: 80%;
border-collapse: collapse;
}
td, th {
border: 1px solid gray;
padding: 15px;
font-size: 22px;
text-align: center;
}
table th {
background-color: green;
color: white;
}
就是這樣,我們有用于HTML創(chuàng)建的HTML模板?,F(xiàn)在,我們可以繼續(xù)執(zhí)行Controller邏輯。
[Route("api/PdfCreator")]
[ApiController]
public class PdfCreatorController : ControllerBase
{
private IConverter _converter;
public PdfCreatorController(IConverter converter)
{
_converter = converter;
}
[HttpGet]
public IActionResult CreatePDF()
{
var globalSettings = new GlobalSettings
{
ColorMode = ColorMode.Color,
Orientation = Orientation.Portrait,
PaperSize = PaperKind.A4,
Margins = new MarginSettings { Top = 10 },
DocumentTitle = "PDF Report"
};
var objectSettings = new ObjectSettings
{
PagesCount = true,
HtmlContent = TempleGenertor.GetHTMLString(),
WebSettings = { DefaultEncoding = "utf-8", UserStyleSheet = Path.Combine(Directory.GetCurrentDirectory(), "assets", "style.css") },
HeaderSettings = { FontName = "Arial", FontSize = 9, Right = "Page
相關(guān)文章
ASP.NET中MVC從后臺控制器傳遞數(shù)據(jù)到前臺視圖的方式
這篇文章主要介紹了ASP.NET中MVC從后臺控制器傳遞數(shù)據(jù)到前臺視圖的方式,以實例形式較為詳細(xì)的分析了asp.net中MVC數(shù)據(jù)傳遞的具體實現(xiàn)方法,需要的朋友可以參考下2014-12-12
asp.net core下給網(wǎng)站做安全設(shè)置的方法詳解
這篇文章主要給大家介紹了關(guān)于asp.net core下給網(wǎng)站做安全設(shè)置的相關(guān)資料,文章通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2018-07-07
靜態(tài)gb2312編碼在項目傳值出現(xiàn)中文亂碼現(xiàn)象
參考的美工靜態(tài)頁面是gb2312格式的,當(dāng)此編碼拿到項目中后,utf-8編碼的系統(tǒng),加載頁面時,會出現(xiàn)樣式問題,比如不能正常居中等2013-06-06
一個比較通用的分頁控件,完整的設(shè)計時支持和比較流行的分頁模式(提供源碼下載)
本分頁控件還包含簡單屬性,復(fù)雜屬性,自定義視圖狀態(tài),分頁事件,創(chuàng)建控件,render控件,Attribute,設(shè)計時支持等比較齊全的自定義控件的元素,是個不錯學(xué)習(xí)自定義控件開發(fā)的例子2010-12-12
ASP.NET WebAPI2復(fù)雜請求跨域設(shè)置的方法介紹
這篇文章主要給大家介紹了關(guān)于ASP.NET WebAPI2復(fù)雜請求跨域設(shè)置的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者使用ASP.NET具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧2020-07-07
asp.net Request.ServerVariables[] 讀解
asp.net Request.ServerVariables[] 讀解,學(xué)習(xí).net的朋友可以參考下,方便獲取服務(wù)器的一些信息。2011-08-08

