使用FastReport .Net 1分鐘學會如何用.NET Core在Raspberry PI上制作PDF
報表生成器FastReport .NET是適用于.NET Core 3,ASP.NET,MVC和Windows窗體的全功能報告庫。使用FastReport .NET,您可以創(chuàng)建獨立于應用程序的.NET報告。
近日,F(xiàn)astReport .Net升級到v2020.3版,在此版本中,添加了瑞士QR碼,允許配置打印機托盤以打印報告的最后一頁,不再支持.NET Framework 2.0,同時修復了多個Bug問題,感興趣的朋友可點擊下方按鈕下載最新版。
Raspberry PI是帶有ARM處理器的微型單板計算機。該微型計算機通常用作教育平臺或用于嵌入式解決方案的開發(fā)。
在實驗中,使用了帶有1GB RAM的Raspberry PI 3B板和安裝了帶有桌面操作系統(tǒng)的Linux Raspbian Buster。
盡管它很小,使用的是一臺功能強大的計算機。嘗試在其上安裝. net核心框架,并編寫一個簡單的c#應用程序來生成PDF文檔。
首先,我們需要通過SSH連接到樹莓,或者在桌面打開終端應用程序,如果你把板連接到顯示器和鍵盤。當然,板必須連接到互聯(lián)網(wǎng)上安裝我們需要的組件。
在PATH環(huán)境變量中將路徑添加到.NET Core文件夾,并創(chuàng)建DOTNET_ROOT變量:
$ export DOTNET_ROOT=$HOME/dotnet $ export PATH=$PATH:$HOME/dotnet
最后幾行最好添加到用戶配置文件配置文件中:?/ .bash_profile,?/ .bashrc,?/ .kshrc,?/ .profile,?/ .zshrc,?/ .zprofile。可以通過以下命令驗證.NET Core SDK的正確安裝:
$ dotnet --info .NET Core SDK (reflecting any global.json): Version: 3.1.300 Commit: b2475c1295 Runtime Environment: OS Name: raspbian OS Version: 10 OS Platform: Linux RID: linux-arm Base Path: /home/pi/dotnet/sdk/3.1.300/ Host (useful for support): Version: 3.1.4 Commit: 0c2e69caa6 .NET Core SDKs installed: 3.1.300 [/home/pi/dotnet/sdk] .NET Core runtimes installed: Microsoft.AspNetCore.App 3.1.4 [/home/pi/dotnet/shared/Microsoft.AspNetCore.App] Microsoft.NETCore.App 3.1.4 [/home/pi/dotnet/shared/Microsoft.NETCore.App] To install additional .NET Core runtimes or SDKs: https://aka.ms/dotnet-download
為了進行進一步的工作,您需要安裝其他軟件包(其余的所有軟件包已隨帶桌面的Linux Raspbian Buster一起安裝):
$ sudo apt-get install libgdiplus $ sudo wget http://ftp.de.debian.org/debian/pool/contrib/m/msttcorefonts/ttf-mscorefonts-installer_3.6_all.deb $ sudo apt-get install -y ttf-mscorefonts-installer_3.6_all.deb
現(xiàn)在,可以創(chuàng)建我們的應用程序。運行命令:
$ dotnet new console -o testpdf
我們看到控制臺應用程序的模板,在testpdf文件夾中帶有文件testpdf.csproj和Program.cs。替換testpdf.csproj文件的代碼:
Exe netcoreapp3.1
文件包含指向Nuget FastReport.Core和FastReport.Compat包的鏈接。它們將在構(gòu)建過程中下載并放置在?/ .nuget / packages中。
Program.cs文件應替換為以下代碼:
using System; using FastReport; using FastReport.Export.Pdf; using FastReport.Utils; namespace testpdf { class Program { static void Main() { Console.WriteLine("Test FastReport Core"); // create report object using Report report = new Report(); // create page using ReportPage page = new ReportPage(); // add page in report report.Pages.Add(page); // create band page.ReportTitle = new ReportTitleBand() { Height = Units.Centimeters * 10 }; // create text object placed on band using TextObject text = new TextObject() { Left = Units.Centimeters * 7, Top = Units.Centimeters * 5, Font = new System.Drawing.Font("Arial", 24), CanGrow = true, AutoWidth = true, Text = "Hello Raspberry!", Parent = page.ReportTitle }; // make the document report.Prepare(); // save the document as PDF file using PDFExport pdf = new PDFExport(); report.Export(pdf, "file.pdf"); } } }
該代碼創(chuàng)建一個報表實例,在其中添加頁面,并在其上添加一個帶。然后在“左”和“上”坐標處創(chuàng)建一個文本對象。CanGrow和AutoWidth屬性允許對象根據(jù)文本的大小自動計算高度和寬度。
用程序代碼創(chuàng)建對象不是生成文檔的唯一方法。可以使用FastReport .NET附帶的Designer.exe模板編輯器。然后可以使用Report.Load方法加載由編輯器生成的擴展名為* .frx的文件。在xml模板中,您可以指定到用戶數(shù)據(jù),變量的綁定,使用內(nèi)置和用戶定義的函數(shù)。您可以在官方網(wǎng)站上了解有關FastReport .NET功能的更多信息。
準備文檔后,將其保存為PDF文件。代碼中使用的所有對象均包含許多影響其在文檔中行為的屬性。
運行程序:
$ dotnet run
如果一切完成,并且安裝了所有必需的軟件包,將獲得file.pdf。否則,需要閱讀錯誤內(nèi)容并消除錯誤。生成的PDF文件完全符合該標準,包含文本和嵌入字體??梢赃x擇文本并將其復制到另一個文檔。
在頁面的左上角有文本,指示我們使用的是FastReport .NET Core演示版。演示版本中的最大頁面數(shù)限制為五個。FastReport .NET的商業(yè)版本不包含這些限制。
有一種方法可以完全免費地獲得沒有DEMO VERSION標簽的類似PDF文件。您可以使用FastReport開源產(chǎn)品。
讓我們更改csproj文件和ItemGroup部分:
<ItemGroup> <PackageReference Include="FastReport.Compat" Version="2020.3.2" /> <PackageReference Include="FastReport.OpenSource" Version="2020.3.1" /> <PackageReference Include="FastReport.OpenSource.Export.PdfSimple" Version="2020.3.1" /> </ItemGroup>
需要對Program.cs文件進行如下更改:
using System; using FastReport; using FastReport.Export.PdfSimple; using FastReport.Utils; namespace testpdf { class Program { static void Main() { Console.WriteLine("Test FastReport Open Source"); // ... // same code here ... // ... // save the document as PDF file using PDFSimpleExport pdf = new PDFSimpleExport(); report.Export(pdf, "file.pdf"); } } }
然后,使用dotnet run命令運行該程序,并獲得一個沒有“演示版本”標簽和對頁數(shù)有任何限制的PDF。
不幸的是,開放源代碼版本有一個很大的缺點:PDF文件中包含圖像而不是文本。復制此類文本將不起作用,文件大小將大大增加。對于簡單的應用程序,這應該足夠了。
還想要更多嗎?您可以點擊閱讀【FastReport 報表2019最新資源盤點】,查找需要的教程資源。如果您有任何疑問或需求,請隨時加入FastReport技術交流群(783996712),我們很高興為您提供查詢和咨詢。