使用FastReport .Net 1分钟学会如何用.NET Core在Raspberry PI上制作PDF
报表生成器FastReport .NET是适用于.NET Core 3,ASP.NET,MVC和Windows窗体的全功能报告库。使用FastReport .NET,您可以创建独立于应用程序的.NET报告。
近日,FastReport .Net升级到v2020.3版,在此版本中,添加了瑞士QR码,允许配置打印机托盘以打印报告的最后一页,不再支持.NET Framework 2.0,同时修复了多个Bug问题,感兴趣的朋友可点击下方按钮下载最新版。
Raspberry PI是带有ARM处理器的微型单板计算机。该微型计算机通常用作教育平台或用于嵌入式解决方案的开发。
在实验中,使用了带有1GB RAM的Raspberry PI 3B板和安装了带有桌面操作系统的Linux Raspbian Buster。
尽管它很小,使用的是一台功能强大的计算机。尝试在其上安装. net核心框架,并编写一个简单的c#应用程序来生成PDF文档。
首先,我们需要通过SSH连接到树莓,或者在桌面打开终端应用程序,如果你把板连接到显示器和键盘。当然,板必须连接到互联网上安装我们需要的组件。
在PATH环境变量中将路径添加到.NET Core文件夹,并创建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: //aka.ms/dotnet-download
为了进行进一步的工作,您需要安装其他软件包(其余的所有软件包已随带桌面的Linux Raspbian Buster一起安装):
$ sudo apt-get install libgdiplus $ sudo wget //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
现在,可以创建我们的应用程序。运行命令:
$ dotnet new console -o testpdf
我们看到控制台应用程序的模板,在testpdf文件夹中带有文件testpdf.csproj和Program.cs。替换testpdf.csproj文件的代码:
Exe netcoreapp3.1
文件包含指向Nuget FastReport.Core和FastReport.Compat包的链接。它们将在构建过程中下载并放置在?/ .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"); } } }
该代码创建一个报表实例,在其中添加页面,并在其上添加一个带。然后在“左”和“上”坐标处创建一个文本对象。CanGrow和AutoWidth属性允许对象根据文本的大小自动计算高度和宽度。
用程序代码创建对象不是生成文档的唯一方法。可以使用FastReport .NET附带的Designer.exe模板编辑器。然后可以使用Report.Load方法加载由编辑器生成的扩展名为* .frx的文件。在xml模板中,您可以指定到用户数据,变量的绑定,使用内置和用户定义的函数。您可以在官方网站上了解有关FastReport .NET功能的更多信息。
准备文档后,将其保存为PDF文件。代码中使用的所有对象均包含许多影响其在文档中行为的属性。
运行程序:
$ dotnet run
如果一切完成,并且安装了所有必需的软件包,将获得file.pdf。否则,需要阅读错误内容并消除错误。生成的PDF文件完全符合该标准,包含文本和嵌入字体。可以选择文本并将其复制到另一个文档。
在页面的左上角有文本,指示我们使用的是FastReport .NET Core演示版。演示版本中的最大页面数限制为五个。FastReport .NET的商业版本不包含这些限制。
有一种方法可以完全免费地获得没有DEMO VERSION标签的类似PDF文件。您可以使用FastReport开源产品。
让我们更改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命令运行该程序,并获得一个没有“演示版本”标签和对页数有任何限制的PDF。
不幸的是,开放源代码版本有一个很大的缺点:PDF文件中包含图像而不是文本。复制此类文本将不起作用,文件大小将大大增加。对于简单的应用程序,这应该足够了。
还想要更多吗?您可以点击阅读【FastReport 报表2019最新资源盘点】,查找需要的教程资源。如果您有任何疑问或需求,请随时加入FastReport技术交流群(783996712),我们很高兴为您提供查询和咨询。