Convertir Excel a PDF con C++

Conversión de libro de Excel a PDF

Los archivos PDF son ampliamente utilizados para intercambiar documentos entre organizaciones, sectores gubernamentales y particulares. Es un formato estándar de documento, y a menudo se pide a los desarrolladores de software que encuentren una forma de convertir archivos de Microsoft Excel en documentos PDF.

Aspose.Cells admite la conversión de archivos de Excel a PDF y mantiene una alta fidelidad visual en la conversión.

Conversión Directa

Aspose.Cells for C++ admite la conversión de hojas de cálculo a PDF de forma independiente de otro software. Simplemente guarde un archivo de Excel como PDF usando el método Save de la clase Workbook. El método Save proporciona el miembro de enumeración SaveFormat.Pdf que convierte los archivos nativos de Excel al formato PDF.

Siga los siguientes pasos para convertir directamente las hojas de cálculo de Excel al formato PDF:

  1. Instancia un objeto de la clase Workbook llamando a su constructor vacío.
  2. Puede abrir/cargar un archivo de plantilla existente o saltarse este paso si está creando el libro de trabajo desde cero.
  3. Realice cualquier trabajo (introducción de datos, aplicar formato, establecer fórmulas, insertar imágenes u objetos de dibujo, etc.) en la hoja de cálculo usando las API de Aspose.Cells.
  4. Cuando el código de la hoja de cálculo esté completo, llame al método Save de la clase Workbook para guardar la hoja de cálculo.

El formato de archivo debe ser PDF, así que seleccione Pdf (un valor predefinido) de la enumeración SaveFormat para generar el documento PDF final.

#include <iostream>
#include "Aspose.Cells.h"

using namespace Aspose::Cells;

int main()
{
    Aspose::Cells::Startup();

    // Source directory path
    U16String srcDir(u"..\\Data\\01_SourceDirectory\\");

    // Output directory path
    U16String outDir(u"..\\Data\\02_OutputDirectory\\");

    // Path of input Excel file
    U16String inputFilePath = srcDir + u"Book1.xls";

    // Path of output PDF file
    U16String outputFilePath = outDir + u"output.pdf";

    // Create workbook
    Workbook workbook(inputFilePath);

    // Save the document in PDF format
    workbook.Save(outputFilePath, SaveFormat::Pdf);

    std::cout << "Document saved successfully in PDF format!" << std::endl;

    Aspose::Cells::Cleanup();
}

Conversión Avanzada

También puede optar por usar la clase PdfSaveOptions para establecer diferentes atributos para la conversión. La configuración de diferentes propiedades de la clase PdfSaveOptions le da control sobre la impresión, la fuente, la seguridad y la compresión del PDF de salida.

La propiedad más importante es GetCompliance(), que le permite establecer el nivel de cumplimiento de los estándares PDF. Actualmente, puede guardar en formatos PDF 1.4, PDF 1.5, PDF 1.6, PDF 1.7, PDF/A-1a, PDF/A-1b, PDF/A-2a, PDF/A-2b, PDF/A-2u, PDF/A-3a, PDF/A-2ab, y PDF/A-3u. Tenga en cuenta que con el formato PDF/A, el tamaño del archivo de salida es mayor que el tamaño de un archivo PDF regular.

Guardando el Libro de Trabajo en Archivos PDF/A Compilados

El fragmento de código proporcionado a continuación demuestra cómo usar la clase PdfSaveOptions para guardar archivos de Excel en formato PDF compatible con PDF/A.

#include <iostream>
#include "Aspose.Cells.h"

using namespace Aspose::Cells;

int main()
{
    Aspose::Cells::Startup();

    // Source directory path
    U16String srcDir(u"..\\Data\\01_SourceDirectory\\");

    // Output directory path
    U16String outDir(u"..\\Data\\02_OutputDirectory\\");

    // Instantiate new workbook
    Workbook workbook;

    // Insert a value into the A1 cell in the first worksheet
    workbook.GetWorksheets().Get(0).GetCells().Get(0, 0).PutValue(U16String(u"Testing PDF/A"));

    // Define PdfSaveOptions
    PdfSaveOptions pdfSaveOptions;

    // Set the compliance type
    pdfSaveOptions.SetCompliance(PdfCompliance::PdfA1b);

    // Save the file
    workbook.Save(outDir + u"output.pdf", pdfSaveOptions);

    std::cout << "PDF file created successfully with PDF/A-1b compliance!" << std::endl;

    Aspose::Cells::Cleanup();
}

Establecer la Hora de Creación del PDF

Con la clase PdfSaveOptions, puede obtener o establecer el tiempo de creación del PDF. El siguiente código demuestra el uso de la propiedad PdfSaveOptions.GetCreatedTime() para establecer el tiempo de creación del archivo PDF.

#include <iostream>
#include "Aspose.Cells.h"
using namespace Aspose::Cells;

int main()
{
    Aspose::Cells::Startup();

    // Source directory path
    U16String srcDir(u"..\\Data\\01_SourceDirectory\\");

    // Path of input excel file
    U16String inputPath = srcDir + u"Book1.xlsx";

    // Load excel file containing charts
    Workbook workbook(inputPath);

    // Create an instance of PdfSaveOptions
    PdfSaveOptions options;
	options.SetCreatedTime(Date{ 2025,01,01 });

    // Save the workbook to PDF format while passing the object of PdfSaveOptions
    workbook.Save(srcDir + u"output.pdf", options);

    std::cout << "Workbook saved to PDF successfully!" << std::endl;

    Aspose::Cells::Cleanup();
}

Establecer la opción ContentCopyForAccessibility

Con la clase PdfSaveOptions, puede obtener o establecer la opción GetAccessibilityExtractContent() del PDF para controlar el acceso al contenido en el PDF convertido.

#include <iostream>
#include "Aspose.Cells.h"
using namespace Aspose::Cells;

int main()
{
    Aspose::Cells::Startup();

    // Source directory path
    U16String srcDir(u"..\\Data\\01_SourceDirectory\\");

    // Output directory path
    U16String outDir(u"..\\Data\\02_OutputDirectory\\");

    // Path of input excel file
    U16String inputPath = srcDir + u"BookWithSomeData.xlsx";

    // Load excel file containing some data
    Workbook workbook(inputPath);

    // Create an instance of PdfSaveOptions
    PdfSaveOptions pdfSaveOpt;

    // Create an instance of PdfSecurityOptions
    PdfSecurityOptions securityOptions;

    // Set AccessibilityExtractContent to false
    securityOptions.SetAccessibilityExtractContent(false);

    // Set the security option in the PdfSaveOptions
    pdfSaveOpt.SetSecurityOptions(securityOptions);

    // Save the workbook to PDF format while passing the object of PdfSaveOptions
    workbook.Save(outDir + u"outFile.pdf", pdfSaveOpt);

    std::cout << "Workbook saved to PDF format successfully!" << std::endl;

    Aspose::Cells::Cleanup();
}

Exportar Propiedades Personalizadas a PDF

Con la clase PdfSaveOptions, puede exportar las propiedades personalizadas en el libro de origen al PDF. Se proporciona el enumerador PdfCustomPropertiesExport para especificar la forma en que se exportan las propiedades. Estas propiedades se pueden observar en Adobe Acrobat Reader haciendo clic en Archivo y luego en la opción Propiedades como se muestra en la siguiente imagen. El archivo de plantilla “sourceWithCustProps.xlsx” se puede descargar aquí para prueba, y el archivo PDF de salida “outSourceWithCustProps” está disponible aquí para análisis.

todo:image_alt_text

#include <iostream>
#include "Aspose.Cells.h"
using namespace Aspose::Cells;
using namespace Aspose::Cells::Rendering;

int main()
{
    Aspose::Cells::Startup();

    // Load excel file containing custom properties
    U16String inputFilePath(u"sourceWithCustProps.xlsx");
    Workbook workbook(inputFilePath);

    // Create an instance of PdfSaveOptions
    PdfSaveOptions pdfSaveOptions;

    // Set CustomPropertiesExport property to PdfCustomPropertiesExport::Standard
    pdfSaveOptions.SetCustomPropertiesExport(PdfCustomPropertiesExport::Standard);

    // Save the workbook to PDF format while passing the object of PdfSaveOptions
    U16String outputFilePath(u"outSourceWithCustProps.pdf");
    workbook.Save(outputFilePath, pdfSaveOptions);

    Aspose::Cells::Cleanup();
}

Atributos de Conversión

Trabajamos para mejorar las funciones de conversión con cada nueva versión. La conversión de Excel a PDF de Aspose.Cells aún tiene un par de limitaciones. MapChart no es compatible cuando se convierte al formato PDF. Además, algunos objetos de dibujo no son soportados bien.

La tabla que sigue enumera todas las funciones que son totalmente o parcialmente soportadas al exportar a PDF usando Aspose.Cells. Esta tabla no es definitiva y no cubre todos los atributos de la hoja de cálculo, pero identifica esas funciones que no son soportadas o que solo son parcialmente soportadas para la conversión a PDF.

Elemento del Documento Atributo Soportado Notas
Alineación Sí
Configuración de fondo Sí
Borde Color Sí
Borde Estilo de línea Sí
Borde Ancho de línea Sí
Datos de celda Sí
Comentarios Sí
Formato condicional Sí
Propiedades del Documento Sí
Objetos de dibujo Parcialmente Los efectos de sombra y 3D en los objetos de dibujo no son soportados bien; WordArt y SmartArt son soportados parcialmente.
Fuente Tamaño Sí
Fuente Color Sí
Fuente Estilo Sí
Fuente Subrayado Sí
Fuente Efectos Sí
Imágenes Sí
Hipervínculo Sí
Gráficos Parcialmente MapChart no es compatible.
Celdas combinadas Sí
Salto de página Sí
Configuración de página Encabezado/Pie de página Sí
Configuración de página Márgenes Sí
Configuración de página Orientación de página Sí
Configuración de página Tamaño de página Sí
Configuración de página Área de impresión Sí
Configuración de página Títulos de impresión Sí
Configuración de página Escalado Sí
Altura de fila / Ancho de columna Sí
Lengua RTL (Derecha a Izquierda) Sí

Temas avanzados