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
Configuración de fondo
Borde Color
Borde Estilo de línea
Borde Ancho de línea
Datos de celda
Comentarios
Formato condicional
Propiedades del Documento
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
Fuente Color
Fuente Estilo
Fuente Subrayado
Fuente Efectos
Imágenes
Hipervínculo
Gráficos Parcialmente MapChart no es compatible.
Celdas combinadas
Salto de página
Configuración de página Encabezado/Pie de página
Configuración de página Márgenes
Configuración de página Orientación de página
Configuración de página Tamaño de página
Configuración de página Área de impresión
Configuración de página Títulos de impresión
Configuración de página Escalado
Altura de fila / Ancho de columna
Lengua RTL (Derecha a Izquierda)

Temas avanzados