整合營銷服務商

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

          免費咨詢熱線:

          「FastReport教程」矢量條形碼和SVG PDF,HTML和SVG導出

          astReport 2018.2支持導出中的矢量圖形,現在一些條形碼和SVG圖像以矢量形式導出,適用于導出為PDF,HTML和SVG。條形碼——只能將線性條形碼導出為矢量圖像,在當前版本的2018.2.22中,在PDF導出設置窗口中添加了矢量圖像設置的特殊選項卡——“Vector Graphics矢量圖形”。

          這里我們有兩種類型的設置——漸變質量和曲線。漸變的質量影響過渡的平滑度,即陰影的數量,漸變插值確定點處的漸變的維度。曲線插值允許繪制具有給定數量的段的曲線,相反,指定將用于創建段的點數,插值使曲線更圓,插值越高,獲得的曲線越圓。舊版本的一些PDF閱讀器在顯示矢量圖形方面存在問題,因此FastReport開發了自己的曲線構建器,如果關閉插值選項,PDF閱讀器將選擇如何構建曲線。

          下面來看看漸變設置,PDF中的漸變是在漸變網格上生成的,即生成網格,在網格節點上計算網格顏色,然后創建復雜漸變。漸變的質量會影響將生成的網格的大小,漸變質量越高,生成的網格就越準確。但是,圖像創建的速度將受到影響,漸變的插值顯示PDF中將使用的網格大小,值越高,越漂亮,但磁盤上將占用更多空間。如果設置低質量并插值256,則這是漸變的外觀:

          高質量,插值256。

          眼睛幾乎看不到差異,但在復雜的梯度上可以更好地看到這種差異。例如,低質量:

          高質量。

          但是,如果將梯度插值的值更改為最小值,則通常的線性漸變會立即顯示出差異。例如,插值2:

          插值為16:

          現在考慮曲線的插值是如何操作的,例如有一個SVG圖像——圓圈,使用標簽實現:

          使用8段進行渲染,設置值8來插入曲線:

          插值越大,曲線越圓,例如,通過較大的圓圈近似,可以看到:

          可以看出,圓圈完全不是圓形的,它由許多部分組成。這里的情況與曲線完全相同,畢竟,符號也包含曲線。因此,文本插值的值越大,看起來越“定性”。“為什么需要這些設置?顯然,需要使用最大設置來獲得高質量的圖像。 但是高設置會顯著增加生成文件的大小。如果不需要最高質量的漸變和曲線,可以犧牲它們來減小文檔的大小并提高其創建速度。 乍一看,新選項似乎對普通用戶沒什么用處,但是那些使用矢量圖形的人會青睞它們,FastReport提供了SVG圖像渲染器。

          點擊“了解更多”下載產品最新版

          ↓↓↓

          ASTREPORT VCL提供了創建報表所需的所有工具,包括報表引擎,可視化的報表設計器,預覽窗口,對話框設計工具,以及Pascal-like 宏解釋程序。它可用于在Embarcadero(比如Borland和CodeGear)Delphi 7-XE8和C++Builder 2005-XE8、Embarcadero RAD Studio 10 Seattle等開發工具中。

          報告生成器FastReport VCL是一種在您的軟件中集成商業智能的現代解決方案。它是為希望使用現成組件進行報告的開發人員創建的,具有使用簡單、方便和小型分發的特點,幾乎可以在任何現代PC上提供高性能和高性能。

          FastReport VCL v6.5.7最新試用版+編譯演示demo下載:https://www.fastreportcn.com/download.html


          Delphi報表神器FastReport VCL v6.5.7來啦!那些個糟心BUG已修復


          看看讓你頭疼的問題是否已解決?

          -修復了DataMatrix c40和txt編碼的特殊符號
          -修復了在Windows 10下在RichView控件中加載RTF文件的問題(有時以純文本格式加載)
          +將GS1Rule屬性添加到DataMatrix條形碼(自動支持GS1規則)
          -修復了XObject列表在每頁上都清除時PDF導出中的錯誤,該錯誤會增加帶有圖片的PDF文件的大小
          +為所有條形碼類型添加了新的ColorBar屬性(設置條形碼數據的顏色)
          -修復了大型XLS(Excel 97 BIFF8)文件中的錯誤
          -修復了客戶端/服務器組件中的導出文件名(從Web瀏覽器)
          -修復了使用GapX, GapY < 0的PDF導出


          [6.5.1-6.5.5]
          -修復了從Web瀏覽器導出帶有對話框頁面的報表時的客戶端/服務器組件
          -修復了MDI預覽中的快速按鈕
          -針對frxSynMemo的HiDPI修復:保存/加載不同DPI、GutterWidth、線條標記、斷點標記的字體大小
          -針對RegEditorsDialog的HiDPI修復:復選框、組合框箭頭、首次顯示時的下拉列表寬度
          -修復了HiDPI報表設計器中StatusBar上圖標的繪制
          -修復了HiDPI的TfrxTreePanel FileterMinWidth/FileterMaxWidth
          -修復了字體組合框預覽(HiDPI)中的字體大小
          -修復了字體組合框(HiDPI)中的字體預覽位置
          -修復了當主監視器的縮放比例大于150%時,在HiDPI模式下的band字幕
          -修復了HiDPI中的TfrxComboBox.ListWidth(具有HiRes的主監視器)
          -修復了在HiDPI Per-Monitor V2模式下的系統對話框(字體/顏色)
          -修復了報表設計器中ComboBox位置的低自定義縮放比例(小于150%)
          -修復了HiDPI模式下的frxProgress對話框
          -修復了低縮放值(小于150%)的圖像資源
          -修復了數據集編輯器中的錯誤錨點
          -修復了關閉預覽后內部數據集的數據樹閃爍的問題


          點擊“了解更多”免費體驗最新版,附編譯演示demo,用戶手冊,幫助文檔

          們已經討論過如何將報表發送到數據庫中的一組電子郵件。在本文中,我們將做同樣的事情,但對于.Net Core MVC平臺上的Web應用程序。我們的任務是從某個數據庫中獲取電子郵件地址和用戶名列表,并將帶有附加報表的電子郵件發送到這些郵箱。我們使用MS SQL Server數據庫。

          創建一個ASP應用程序.Net Core MVC應用程序。首先,使用NuGet Packages Manager將必要的庫添加到項目中。在一般的nuget存儲庫中,我們找到并安裝包:

          • Microsoft.EntityFrameworkCore;
          • Microsoft.EntityFrameworkCore.Relational;
          • Microsoft.jQuery.Unobtrusive.Ajax;
          • jQuery.

          從本地存儲庫 - FastReport.Net安裝目錄中的Nuget文件夾,安裝軟件包:

          • FastReport.Core;
          • FastReport.Web.

          現在我們將使用數據庫和表的類本質創建工作上下文。為此,請打開包控制臺Nuget。打開Tools - > Nuget Package Manager - >Package Manager Console menu(包管理器控制臺菜單)。在控制臺中,鍵入以下命令:

          Server=localhost;Database=testdb;Trusted_Connection=True;
          

          Microsoft.EntityFrameworkCore.SqlServer -OutputDir模型 當然,在這里您必須指定數據庫服務器的連接字符串和數據模型的文件夾(默認情況下為Models)。

          PM> scaffold-dbcontext“Server = localhost; Database = testdb; Trusted_Connection = True;”
          

          Microsoft.EntityFrameworkCore.SqlServer -OutputDir模型 之后,理論上,應該將兩個文件添加到Models文件夾:context和table實體。在我的例子中,這是testdbContext.cs和Emails.cs。 但是,在文件生成期間可能會發生錯誤:

          錯誤MSB4064:“Csc”任務不支持“SharedCompilationId”參數。

          有一個可設置的公共實例屬性。 如果發生這種情況,請在NuGet包管理器中再添加一個包:

          Microsoft.Net.Compillers
          

          讓我們馬上將FastReport連接到我們的項目。在Startup.cs文件中,添加以下行:

          public void Configure(IApplicationBuilder app, IHostingEnvironment env)
           {
          …
           app.UseFastReport();
          …
          }
          

          現在回到數據模型。要從數據庫中獲取記錄,我們需要創建GetEmails方法。創建用于處理數據的類Facade:

          namespace WebMailing.Models
          {
           public static class Facade
           {
           public static List<Emails> GetEmails()
           {
           using (Models.testdbContext context = new Models.testdbContext())
           {
           var emails = (from adresses in context.Emails
           select adresses).ToList();
           return emails;
           }
           }
           }
          }
          

          我們來看看'HomeController'控制器吧。在Index方法中,加載報表以在站點的主頁上顯示它:

          using System;
          using System.Collections.Generic;
          using System.Diagnostics;
          using Microsoft.AspNetCore.Mvc;
          using WebMailing.Models;
          using FastReport;
          using FastReport.Export.Pdf;
          using FastReport.Export.Email;
          using FastReport.Web;
          …
          public IActionResult Index()
          {
           WebReport webReport = new WebReport();
           webReport.Report.Load(Environment.CurrentDirectory + "/text.frx");
           ViewBag.WebReport = webReport;
           return View();
          }
          

          我們將添加兩種發送電子郵件的方法。第一個將在問候語中發送帶有客戶名稱的私人信件,第二個將向一組地址發送一個字母。 所以,第一種方法是:

          [HttpPost]
           public ActionResult SendMail()
           {
           Report report1 = new Report(); //Create new report object
           report1.Load(Environment.CurrentDirectory + "/text.frx"); //Load report
           report1.Prepare(); //Prepare report
           
           PDFExport pdf = new PDFExport(); //Cteate PDF export
           EmailExport email = new EmailExport(); //Create Email export
           
           List<Emails> emails = Models.Facade.GetEmails();
           foreach (Emails item in emails)
           {
           SendMessage(report1, pdf, email, item.Email, item.Name);
           }
           return View();
           }
          

          使用它,我們創建了一個報表,導出為PDF,導出到電子郵件。然后,在循環中,我們從表中獲取記錄并調用發送字母的方法。作為參數,我們傳遞報表對象,導出PDF,導出到電子郵件,電子郵件地址和客戶端名稱。以下是發送信件的方法:

          public void SendMessage(Report report, PDFExport pdf, EmailExport email, string recipient, string custName)
           {
           string message = "This is test message.";
           email.Account.Address = "gromozekaster@yandex.ru";
           email.Account.Name = "Test User";
           email.Account.Host = "smtp.yandex.ru";
           email.Account.Port = 25;
           email.Account.UserName = "Gromozekaster";
           email.Account.Password = "*****"; //Your password
           email.Account.MessageTemplate = "Test";
           email.Account.EnableSSL = true;
           //email addressee settings
           email.Address = recipient;
           email.Subject = "TestMessage";
           email.MessageBody = custName is null ? message : string.Format("Dear, {0}! {1}", custName, message);
           email.Export = pdf; //Set export type
           email.SendEmail(report); //Send email
           }
          

          在其中,我們設置了一個電子郵件客戶端來發送信件。并立即添加第二種方法,將一個字母發送到一組地址:

           [HttpPost]
           public ActionResult SendAll()
           {
           Report report1 = new Report(); //Create new report object
           report1.Load(Environment.CurrentDirectory + "/text.frx"); //Load report
           report1.Prepare(); //Prepare report
           PDFExport pdf = new PDFExport(); //Cteate PDF export
           EmailExport email = new EmailExport(); //Create Email export
           
           List<Emails> emails = Models.Facade.GetEmails();
           string addresses = "";
           foreach (Emails item in emails)
           {
           if (addresses == "")
           addresses = item.Email;
           else
           addresses = addresses + ", " + item.Email;
           }
           SendMessage(report1, pdf, email, addresses, null);
           return View();
           }
          

          正如您所看到的,它與之前的方法非常相似,唯一的區別是在循環中我們收到所有電子郵件地址,并發送一次這封信。作為電子郵件參數,我們傳遞一個包含所有電子郵件地址的字符串變量,但我們不傳遞客戶端名稱。

          對于SendMail()和SendAll()方法,我們需要創建相同名稱的視圖 - 視圖。 他們的內容非常簡單:

          @{
           ViewBag.Message = "Report was sent";
          }
          @ViewBag.Message
          

          我們只是告知發送。讓我們轉到Index.cshtml視圖。在其中,我們需要添加兩個按鈕來使用不同的方法發送字母,以及顯示報表:

          @{
           ViewData["Title"] = "Home Page";
          }
          <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.12.1/jquery.min.js"></script>
           <form action="SendMail" method="POST">
           <input type="button" id="SendPersonal" value="Send Personal Email">
           <input type="button" id="SendAll" value="Send Email to All">
           <div class="answer"/>
           </form>
           <script type="text/javascript">
           $('#SendPersonal').on("click", function () {
           $.ajax({
           type: 'POST', // dispatch method
           url: '@Url.Action("SendMail", "Home")', // path to handler
           dataType: 'text',
           success: function (data) {
           $(".answer").html(data); // upon successful receipt of the response from the server, we enter the data in the element with the class answer
           }
           });
           return false;
           })
           $('#SendAll').on("click", function () {
           $.ajax({
           type: 'POST', // dispatch method
           url: '@Url.Action("SendAll", "Home")', // path to handler
           dataType: 'text',
           success: function (data) {
           $(".answer").html(data); // upon successful receipt of the response from the server, we enter the data in the element with the class answer
           }
           });
           return false;
           })
           </script>
          @await ViewBag.WebReport.Render() 
          

          要使用ajax jquery,我們添加了一個指向jquery.min.js腳本的鏈接。接下來,為每個表單添加一個帶有兩個按鈕和兩個腳本的表單。腳本非常簡單 - 從控制器調用方法并返回結果視圖。

          最后 - 我們從Index方法推導出報表。讓我們運行應用程序,看看我們的網頁是什么樣的:

          我們通過不同的方式發信:

          和:

          在第一種情況下,在信函的文本中,我們通過名稱引用客戶端,在第二種情況下,沒有,就這樣。

          點擊“了解更多”下載產品最新試用版

          ↓↓↓


          主站蜘蛛池模板: 精品人妻少妇一区二区三区不卡 | 国产成人高清精品一区二区三区| 亚洲国产av一区二区三区丶| 无码国产精品一区二区免费虚拟VR| 精品无人区一区二区三区| 日韩精品无码一区二区三区不卡| 毛片一区二区三区| 久久综合一区二区无码| 无码少妇一区二区三区芒果| 人妻AV中文字幕一区二区三区| 日本一区二区三区在线视频观看免费 | 精品日产一区二区三区手机| 无码人妻aⅴ一区二区三区有奶水| 无码乱人伦一区二区亚洲| 高清无码一区二区在线观看吞精| 精品无码成人片一区二区98| 国产午夜精品一区理论片| 偷拍精品视频一区二区三区| 国模无码一区二区三区| 国产精品久久一区二区三区| 色偷偷av一区二区三区| 中文字幕精品一区二区精品| 无码8090精品久久一区| 国产综合无码一区二区色蜜蜜| 3D动漫精品一区二区三区| 骚片AV蜜桃精品一区| 亚洲国产精品自在线一区二区| 精彩视频一区二区| 欧洲亚洲综合一区二区三区| 久久精品成人一区二区三区 | 亚洲日韩激情无码一区| 国产精品xxxx国产喷水亚洲国产精品无码久久一区 | 国产免费一区二区三区免费视频| 日韩成人一区ftp在线播放| 精品国产一区二区三区久久影院| 亚洲色精品VR一区区三区 | 一区二区三区四区视频| 亚洲av福利无码无一区二区| 人妻AV中文字幕一区二区三区| 麻豆一区二区99久久久久| 人妻av无码一区二区三区|