Esta sección te muestra como descargar reportes en formato PDF desde Quick Report utilizando como origen de datos una Base de Datos SQL para este ejemplo el reporte puede recibir más de un parámetro y debe contener un origen de datos (DataSource) configurado en el diseñador.
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
const values = {
param1: "value1", // Reemplaza con los valores reales
param2: "value2"
};
// Construye la URL con los parámetros
const queryParams = new URLSearchParams({
apiKey: apiKey,
reportName: reportName,
...values // Agrega los valores dinámicamente
}).toString();
const url = `https://design.quickreport.net/Report/GetReportPDFFromDatabase?${queryParams}`;
// 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:
[HttpGet("CallGetReportPDFFromDatabase")]
public async Task CallGetReportPDFFromDatabase(string apiKey, string reportName, [FromQuery] IDictionary values)
{
// 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/GetReportPDFFromDatabase?apiKey={Uri.EscapeDataString(apiKey)}&reportName={Uri.EscapeDataString(reportName)}";
// Agrega los valores adicionales como parámetros de consulta
foreach (var kvp in values)
{
url += $"&{Uri.EscapeDataString(kvp.Key)}={Uri.EscapeDataString(kvp.Value)}";
}
// 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}");
}
}
Utiliza PHP para descargar el reporte en formato PDF:
// 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
// Define los valores adicionales para el endpoint
$values = [
"param1" => "value1", // Reemplaza con los valores reales
"param2" => "value2"
];
// Construye la URL con los parámetros
$queryParams = http_build_query(array_merge(["apiKey" => $apiKey, "reportName" => $reportName], $values));
$url = $baseUrl . "/Report/GetReportPDFFromDatabase?" . $queryParams;
// 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);
?>
Inicializa Quick Report en tu consola para descargar directamente el reportes en formato PDF:
curl -X GET "https://design.quickreport.net/Report/GetReportPDFFromDatabase?apiKey=yourApiKeyHere&reportName=yourReportNameHere¶m1=value1¶m2=value2" -o report.pdf