Este artículo muestra como descargar reportes en formato PDF desde Quick Report utilizando diferentes lenguajes de programación y plataformas. Puedes elegir entre JavaScript, C#, PHP y más. para este ejemplo el reporte debe tener como origen de datos (DataSource) una URI y puede recibir más de un parámetro.
Para descargar un reporte en formato PDF, Quick Report proporciona un endpoint REST que puedes utilizar en tu aplicación. A continuación, se presentan ejemplos de cómo realizar esta tarea en diferentes lenguajes y plataformas.
Utiliza JavaScript para descargar el reporte en formato PDF:
// Define los parámetros necesarios
const apiKey = "yourApiKeyHere"; // Reemplaza con tu API Key
const reportName = "yourReportNameHere"; // Reemplaza con el nombre del reporte
// Construye la URL del endpoint
const url = `https://design.quickreport.net/Report/GetReportPDFFromURI?apiKey=${encodeURIComponent(apiKey)}&reportName=${encodeURIComponent(reportName)}`;
// Realiza la solicitud GET
fetch(url, {
method: "GET"
})
.then(response => {
if (!response.ok) {
throw new Error("Error al obtener el reporte PDF");
}
return response.blob(); // Obtén el archivo PDF como un blob
})
.then(blob => {
// Crea un enlace para descargar el PDF
const downloadUrl = window.URL.createObjectURL(blob);
const a = document.createElement("a");
a.href = downloadUrl;
a.download = `${reportName}.pdf`; // Nombre del archivo descargado
document.body.appendChild(a);
a.click();
a.remove();
window.URL.revokeObjectURL(downloadUrl); // Limpia el objeto URL
})
.catch(error => {
console.error("Error:", error);
});
Conecta Quick Report con tu API para obtener datos desde tu backend de aplicación en .NET:
// Define la URL base y los parámetros
$baseUrl = "https://design.quickreport.net"; // Cambia esto por la URL base de tu aplicación
$apiKey = "yourApiKeyHere"; // Reemplaza con tu API Key
$reportName = "yourReportNameHere"; // Reemplaza con el nombre del reporte
// Construye la URL completa
$url = $baseUrl . "/Report/GetReportPDFFromURI?apiKey=" . urlencode($apiKey) . "&reportName=" . urlencode($reportName);
// Inicializa cURL
$ch = curl_init();
// Configura las opciones de cURL
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
// Ejecuta la solicitud
$response = curl_exec($ch);
// Verifica si hubo errores
if (curl_errno($ch)) {
echo "Error: " . curl_error($ch);
} else {
// Obtén el código de respuesta HTTP
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if ($httpCode == 200) {
// Guarda el archivo PDF en el disco
$filePath = $reportName . ".pdf";
file_put_contents($filePath, $response);
echo "Reporte descargado exitosamente: " . $filePath;
} else {
echo "Error al obtener el reporte. Código HTTP: " . $httpCode;
}
}
// Cierra la conexión cURL
curl_close($ch);
?>
Utiliza PHP para descargar el reporte en formato PDF:
[HttpGet("CallGetReportPDFFromURI")]
public async Task CallGetReportPDFFromURI(string apiKey, string reportName)
{
// Construye la URL del endpoint
string baseUrl = "https://design.quickreport.net"; // Cambia esto por la URL base de tu aplicación
string url = $"{baseUrl}/Report/GetReportPDFFromURI?apiKey={Uri.EscapeDataString(apiKey)}&reportName={Uri.EscapeDataString(reportName)}";
// Crea un cliente HttpClient
var client = _httpClientFactory.CreateClient();
try
{
// Realiza la solicitud GET
var response = await client.GetAsync(url);
if (response.IsSuccessStatusCode)
{
// Obtén el contenido como un archivo PDF
var pdfStream = await response.Content.ReadAsStreamAsync();
// Devuelve el archivo PDF al cliente
return new FileStreamResult(pdfStream, "application/pdf")
{
FileDownloadName = $"{reportName}.pdf"
};
}
else
{
return BadRequest($"Error al obtener el reporte: {response.StatusCode} - {response.ReasonPhrase}");
}
}
catch (Exception ex)
{
return StatusCode(500, $"Error interno: {ex.Message}");
}
}
Inicializa Quick Report en tu consola para descargar directamente el reportes en formato PDF:
curl -X GET "https://design.quickreport.net/Report/GetReportPDFFromURI?apiKey=yourApiKeyHere&reportName=yourReportNameHere" -o report.pdf