"ActiveReports" ataskaitos išvedimas kaip PDF failo

Puslapis atnaujintas :
Puslapio sukūrimo data :

Darbo aplinka

Windows
  • Windows 10 Pro 22H2
Vizualinė studija
  • "Visual Studio 2022" bendruomenės leidimas
Aktyvios ataskaitos, skirtos .NET
  • Aktyvios ataskaitos, skirtos .NET 16.0J

Būtinosios sąlygos

Windows
  • Windows 8.1
  • Langai 10
  • Langai 11
  • "Windows Server 2012"
  • "Windows Server 2012 R2"
  • "Windows Server 2016"
  • "Windows Server 2019"
  • "Windows Server 2022"
Vizualinė studija
  • "Visual Studio 2017"
  • "Visual Studio 2019"
  • "Visual Studio 2022"
".NET Framework"
  • NET Framework 4.6.2
  • NET Framework 4.7
  • NET Framework 4.8
.GRYNOJI
  • ".NET Core 3.1"
  • .NET 5
  • .NET 6
Aktyvios ataskaitos, skirtos .NET
  • Aktyvios ataskaitos, skirtos .NET 16.0J

Kaip išvesti į PDF failą

Jei vartotojas nori ataskaitos kaip PDF failo, greičiausias būdas ją pateikti yra peržiūrėti ataskaitą peržiūros priemonėje. Be ataskaitų rodymo, žiūrovas turi funkciją spausdinti ir išvesti failus, pvz., PDF, taigi, jei rodote peržiūros priemonę, galite paprašyti vartotojo išvesti PDF failą.

Tačiau kai kuriais atvejais galbūt nenorėsite trukdyti vartotojui arba galbūt norėsite sistemingai nukreipti PDF failą. Šiame skyriuje aprašoma, kaip programiškai išvesti PDF failą tiesiai iš ataskaitos.

PDF rinkmenos išvesties metodai ir apribojimai

Yra keletas būdų, kaip programiškai išvesti PDF failus, tačiau ne visi jie yra priimtini. Tai priklauso nuo "ActiveReports" versijos, platformos, sistemos ir atliekamos ataskaitos tipo. Pavyzdžiui, "ActiveReports 16" skyrių ir puslapių ataskaitos programiškai išvedamos skirtingai. To pavyzdį taip pat galima rasti oficialiame puslapyje.

Dėl šios priežasties čia yra keletas programinės PDF išvesties pavyzdžių, kuriuos galite naudoti kaip nuorodą, kad rastumėte tą, kuris tinka jūsų projektui.

Apie ataskaitos pavyzdį

Ataskaitos failas, įtrauktas į naujo projekto šabloną, yra tuščias, todėl naudosime oficialų ataskaitos pavyzdį. Štai keletas pasiūlymų, todėl atsisiųskite juos iš vienos iš šių svetainių.

Tokiu atveju naudosime šį ataskaitos pavyzdį.

  • Puslapio ataskaita : Estimate_page_ipa.rdlx
  • Skyriaus ataskaita: Invoice.rpx (įtraukta į "WebSample16" pavyzdinį projektą)

PDF rinkmenų generavimas ir generavimas (puslapio ataskaitos/RDL ataskaitos)

Yra "eksporto filtras", skirtas PDF rinkmenoms išvesti, tačiau 16 versijoje jis gali būti naudojamas tik skyrių ataskaitoms.

Todėl puslapio ataskaitas / RDL ataskaitas reikia generuoti naudojant "Piešimo plėtinį", kaip aprašyta aukščiau esančiame puslapyje.

Visų pirma, aš sukursiu projektą, bet šį kartą aš jį padarysiu su paprasta konsolės programa. Tai taip pat lengva pritaikyti darbalaukio ir žiniatinklio versijoms, kaip ir žiniatinklio versijai.

Kai kuriate projektą, pasirinkite Konsolės programa.

Sukūrę projektą, pridėkite reikiamus paketus.

Štai ką pridėsite: Negaukite naujausios versijos, bet naudokite toliau aprašytą versiją. Atrodo, kad kai kurie paketų deriniai neveikia tinkamai su naujausia versija. Rodomas įspėjamasis ženklas, bet nekreipkite į jį dėmesio, nes priklausomybės nesutampa. Tačiau yra tikimybė, kad ateityje jis pasikeis atnaujinus versiją, todėl kiekvieną kartą jį koreguokite. GrapeCity.Documents.Imaging GrapeCity.Documents.Pdf ir privalo generuoti PDF formatu.

  • GrapeCity.ActiveReports.Export.Pdf (16.4.0)
  • GrapeCity.Documents.Imaging (6.0.3)
  • GrapeCity.Documents.Pdf (6.0.3)

Įtraukite ataskaitos failą į savo projektą. Vieta gali būti bet kur, bet šį kartą aš kuriu aplanką ir įdedu Reports jį ten. Ši paskirties vieta turi įtakos keliui, kurį nurodysite vėliau.

Tada atidarykite pridėtos ataskaitos ypatybes.

Nustatykite kūrimo veiksmą į Įdėtieji ištekliai. Tai reiškia, kad išteklius reikia įdėti į EXE (DLL). Ataskaita unikaliai įkeliama darbalaukyje, kaip ir žiniatinklyje.

Tada parašykite kodą, kad įkeltumėte ataskaitą, ir atsispausdinkite ją į PDF. Kadangi tai yra konsolės programa, ji turėtų būti aprašyta programoje.cs kokia ji yra, bet jei tai yra darbalaukis, jis turėtų būti aprašytas mygtuko įvykyje ir pan., O jei jis yra ASP.NET, jis turėtų būti aprašytas toje vietoje, kur jis apdorojamas, kai jis yra paskelbtas.

// レポートファイルがあるパス
var reportPath = "ConsoleApp1.Reports.Estimate_page_ipa.rdlx";

// 埋め込みリソースを Stream をして取り出す
var stream = System.Reflection.Assembly.GetExecutingAssembly().GetManifestResourceStream(reportPath);
if (stream == null) return;

// ページレポートに変換します
using var sr = new StreamReader(stream);
var pageReport = new GrapeCity.ActiveReports.PageReport(sr);

// PDF 描画拡張を定義します
var pdfRenderingExtension = new GrapeCity.ActiveReports.Export.Pdf.Page.PdfRenderingExtension();

// メモリストリームとして出力する定義です
var outputProvider = new GrapeCity.ActiveReports.Rendering.IO.MemoryStreamProvider();

// レポートを PDF にレンダリングします
pageReport.Document.Render(pdfRenderingExtension, outputProvider);

// Stream に変換します
var ps = outputProvider.GetPrimaryStream();
var outputStream = ps.OpenStream();

Aš išsamiai nepaaiškinsiu, koks tai apdorojimas, nes jis parašytas kodo komentaruose. Svarbiausia yra nurodyti ataskaitos failo vietą pirmoje eilutėje. Formatas yra toks <アセンブリ名>.<レポートファイルのパス> , o visi kelio skyrikliai yra taškai.

Paskutinis yra srautas, todėl konvertuokite jį į PDF pagal apdorojimo turinį.

Pavyzdžiui, jei norite išsaugoti jį kaip vietinį failą, pridėkite toliau nurodytus dalykus.

// ファイルにストリームを書き出します
using var fs = new FileStream("Output.pdf", FileMode.Create);
outputStream.CopyTo(fs);

Jei norite jį atsisiųsti naudodami ASP.NET, pridėkite toliau pateiktą informaciją.

return File(outputStream, "application/pdf", "Output.pdf");

Pabandykite atidaryti išvesties PDF failą, kad sužinotumėte, ar viskas gerai.

PDF išvestis naudojant eksportavimo filtrus (skyrių ataskaitos)

Naudokite sekcijų ataskaitoms skirtą PDF eksportavimo filtrą.

Jis sukuriamas konsolės projekte taip pat, kaip ir puslapių ataskaitoms. Čia sukurtas kodas ir nustatymai gali būti pritaikyti kitiems projektams.

Sukūrę projektą, pridėkite reikiamus paketus. Šį kartą išvesime su eksporto filtru, todėl pridėsime tik vieną.

  • GrapeCity.ActiveReports.Export.Pdf (16.4.0)

Įtraukite ataskaitos failą į savo projektą. Vieta gali būti bet kur, bet šį kartą aš kuriu aplanką ir įdedu Reports jį ten. Ši paskirties vieta turi įtakos keliui, kurį nurodysite vėliau.

Tada atidarykite pridėtos ataskaitos ypatybes.

Nustatykite kūrimo veiksmą į Įdėtieji ištekliai. Tai reiškia, kad išteklius reikia įdėti į EXE (DLL). Ataskaita unikaliai įkeliama darbalaukyje, kaip ir žiniatinklyje.

Tada parašykite kodą, kad įkeltumėte ataskaitą, ir atsispausdinkite ją į PDF. Kadangi tai yra konsolės programa, ji turėtų būti aprašyta programoje.cs kokia ji yra, bet jei tai yra darbalaukis, jis turėtų būti aprašytas mygtuko įvykyje ir pan., O jei jis yra ASP.NET, jis turėtų būti aprašytas toje vietoje, kur jis apdorojamas, kai jis yra paskelbtas.

// レポートファイルがあるパス
var reportPath = "ConsoleApp1.Reports.Invoice.rpx";

// 埋め込みリソースを Stream をして取り出す
var stream = System.Reflection.Assembly.GetExecutingAssembly().GetManifestResourceStream(reportPath);
if (stream == null) return;

// Stream を XML として読み込めるようにします
var xr = System.Xml.XmlReader.Create(stream);

// セクションレポートとして読み込みます
var sectionReport = new GrapeCity.ActiveReports.SectionReport();
sectionReport.LoadLayout(xr);
sectionReport.Run();

// PDF のエクスポートフィルターを作成します
var pdfExport = new GrapeCity.ActiveReports.Export.Pdf.Section.PdfExport();

// メモリストリームに PDF の情報を書き出します
var outputStream = new System.IO.MemoryStream();
pdfExport.Export(sectionReport.Document, outputStream);
outputStream.Seek(0, SeekOrigin.Begin);

Aš išsamiai nepaaiškinsiu, koks tai apdorojimas, nes jis parašytas kodo komentaruose. Svarbiausia yra nurodyti ataskaitos failo vietą pirmoje eilutėje. Formatas yra toks <アセンブリ名>.<レポートファイルのパス> , o visi kelio skyrikliai yra taškai.

Paskutinis yra srautas, todėl konvertuokite jį į PDF pagal apdorojimo turinį.

Pavyzdžiui, jei norite išsaugoti jį kaip vietinį failą, pridėkite toliau nurodytus dalykus.

// ファイルにストリームを書き出します
using var fs = new FileStream("Output.pdf", FileMode.Create);
outputStream.CopyTo(fs);

Jei norite jį atsisiųsti naudodami ASP.NET, pridėkite toliau pateiktą informaciją.

return File(outputStream, "application/pdf", "Output.pdf");

Pabandykite atidaryti išvesties PDF failą, kad sužinotumėte, ar viskas gerai.