/reportman

ReportMan VS 2019

Primary LanguageC#

reportman

ReportMan VS 2019 Esta es una versión compilada en VS 2019 a partir de la desacarga de "reportmannet_source_3_4_6.zip" de la página

https://sourceforge.net/p/reportman/activity/?page=0&limit=100#615ad5c647012700a256ad7c

incluye la actualización para .Net Framwork 4.6.1

Uso desde un Web API de NET Core 3.1

using Microsoft.AspNetCore.Mvc;
using System.IO;

using Reportman.Drawing;
using Reportman.Reporting;
using System.Text;
using System.Threading.Tasks;

[Route("api/[controller]")]
[ApiController]
public class PdfController : ControllerBase
{
    [HttpGet]
    [Route("ot/{idOT}")]
    public async Task<ActionResult> OT(string idOT)
    {
        Report rp = new Report();
        rp.LoadFromFile("C:\\Users\\cesar\\source\\repos\\SCORE\\HemoecoAPI\\ot-net.rep");
        rp.ConvertToDotNet();
        // FixReport
        rp.AsyncExecution = false;
        PrintOutPDF printpdf = new PrintOutPDF();

        Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);

        // Perform the conversion from one encoding to the other.
        if (rp.Params.Count > 0)
        {
            // No funciona el Unicode
            string titulo = $"Orden de trabajo {idOT}"; ; // "你好"; // $"Orden de trabajo {idOT}";
            byte[] unicodeBytes = Encoding.Convert(Encoding.ASCII, Encoding.UTF8, Encoding.ASCII.GetBytes(titulo));
            rp.Params[0].Value = Encoding.UTF8.GetString(unicodeBytes);
        }
        printpdf.FileName = $"ot-{idOT}.pdf";
        printpdf.Compressed = false;
        
        if (printpdf.Print(rp.MetaFile))
        {
            // Download Files using Web API. Changhui Xu. https://codeburst.io/download-files-using-web-api-ae1d1025f0a9
            var bytes = await System.IO.File.ReadAllBytesAsync(printpdf.FileName);
            return File(bytes, "application/pdf", printpdf.FileName);
        }

        // todo: Regresar archivo con falla indicada
        return null;
    }
  }
}