Látex a PDF | Solución API Aspose.TeX para C++

Cómo convertir LaTeX a PDF

Echemos un vistazo detallado al código en C++ que proporciona la forma más sencilla de convertir LaTeX a formato PDF.

                
            

Entonces, lo primero que debemos hacer (bueno, a veces no lo primero) es crear una instancia de la clase TeXOptions. El único método estático que hace esto es ConsoleAppOptions(), así que no nos dejemos desconcertar por el significado de su nombre. El método toma una instancia de la clase TeXConfig, que es exactamente adecuada para convertir un archivo LaTeX. Esta configuración le dice al motor Object TeX que cargue el formato Object LaTeX y que esté listo para aceptar el archivo LaTeX. El formato Object LaTeX es en realidad solo el formato LaTeX, excepto que utiliza primitivas específicas de Object TeX para configurar las métricas de la página.

La primera de las opciones requeridas es OutputWorkingDirectory que define el espacio o área donde se escribirá la salida TeX. Aquí se encuentran los detalles sobre el concepto de directorio de salida en Aspose.TeX para C++. En este ejemplo, usamos la clase OutputFileSystemDirectory, que nos permite escribir la salida en el directorio o carpeta especificado.

La segunda opción es una instancia de clase SaveOptions que controlará la transformación del modelo de objeto al formato de destino. Dado que estamos convirtiendo LaTeX a PDF, es la instancia de clase PdfSaveOptions.

Luego necesitamos crear una instancia de la clase TeXJob. Al querer convertir un archivo LaTeX almacenado en el sistema de archivos, utilizamos esta versión del constructor. Debemos especificar la ruta completa al archivo. De lo contrario, el motor lo buscará en el directorio actual (que es CurrentDirectory) y lo más probable es que no lo encuentre. No obstante, podremos omitir la extensión si nuestro archivo tiene la .tex. El motor lo agregará automáticamente. El segundo argumento del constructor es una instancia de clase Dispositivo. Dado que estamos convirtiendo LaTeX a PDF, es una instancia de clase PdfDevice. Como último argumento, pasamos las opciones de conversión preparadas recientemente.

Todo lo que queda por hacer ahora es ejecutar el trabajo.

Independientemente de si la ejecución fue exitosa o no, el primer resultado que veremos será la salida del terminal. En caso de éxito, se verá así:

 1This is ObjectTeX, Version 3.1415926-1.0 (Aspose.TeX 21.8)
 2entering extended mode
 3
 4(<input_directory>\hello-world.ltx
 5LaTeX2e <2011/06/27>
 6(article.cls
 7Document Class: article 2007/10/19 v1.4h Standard LaTeX document class
 8(size10.clo))
 9No file hello-world.aux.
10[1]
11(<output_directory>\hello-world.aux) )
12Output written on hello-world.pdf (1 page).
13Transcript written on hello-world.log.

Encontraremos otros “frutos” del trabajo del motor en la carpeta que especificamos como directorio de salida. Ese será el archivo de transcripción y, ¡aquí está!, el archivo PDF de salida principal.

Una forma alternativa de escribir el archivo PDF de salida principal

Hay otro constructor de la clase PdfDevice, que nos permite obtener el archivo PDF resultante de una forma alternativa.

 1    // Create the stream to write the XPS file to.
 2    {
 3        System::SharedPtr<System::IO::Stream> pdfStream = System::IO::File::Open(System::IO::Path::Combine(RunExamples::OutputDirectory, u"any-name.pdf"), System::IO::FileMode::Create);
 4        // Clearing resources under 'using' statement
 5        System::Details::DisposeGuard<1> __dispose_guard_0({ pdfsStream});
 6        // ------------------------------------------
 7        
 8        try
 9        {
10            // Create conversion options for Object LaTeX format on Object TeX engine extension.
11            System::SharedPtr<TeXOptions> options = TeXOptions::ConsoleAppOptions(TeXConfig::get_ObjectLaTeX());
12            // Specify the file system working directory for the output.
13            options->set_OutputWorkingDirectory(System::MakeObject<OutputFileSystemDirectory>(RunExamples::OutputDirectory));
14            // Initialize the options for saving in PDF format.
15            options->set_SaveOptions(System::MakeObject<PdfSaveOptions>());
16            // Default value.
17            // Run LaTeX to XPS conversion.
18            System::MakeObject<TeXJob>(System::IO::Path::Combine(RunExamples::InputDirectory, u"hello-world.ltx"), System::MakeObject<PdfDevice>(pdfStream), options)->Run();
19        }
20        catch(...)
21        {
22            __dispose_guard_0.SetCurrentException(std::current_exception());
23        }
24    }

El archivo any-name.pdf en el directorio especificado será nuestro archivo PDF de salida principal. Al mismo tiempo, a diferencia de salida de imagen, no encontraremos ningún archivo PDF en el directorio de salida definido por las opciones de conversión. Excepción: cualquier nombre.pdf está ubicado (por su ruta) en el mismo directorio del sistema de archivos asignado a la opción OutputWorkingDirectory usando OutputFileSystemDirectory.

Acerca de las opciones de entrada

En caso de que nuestro archivo de entrada principal requiera dependencias, por ejemplo, paquetes, que no están incluidos en el sistema LaTeX básico y los paquetes compatibles, DEBEMOS configurar la opción RequiredInputDirectory de la misma manera que configuramos OutputWorkingDirectory. opción y coloque las dependencias en ese directorio. Las dependencias pueden organizarse arbitrariamente en subdirectorios. En caso de que tengamos nuestros propios archivos para incluir durante el proceso de composición tipográfica, digamos archivos de gráficos externos, DEBEMOS también configurar InputWorkingDirectory usando la ruta a la ubicación donde se recopilan esos archivos. También podemos colocar el archivo de entrada principal en algún lugar dentro del directorio de entrada y especificar la ruta relativa en el método run() (o no especificar ninguna ruta si el archivo de entrada principal está en la raíz). Aquí se encuentran los detalles sobre el concepto de directorio de entrada en Aspose.TeX para C++ y las implementaciones proporcionadas.

Otras opciones de trabajo TeX se analizan aquí.

También puede consultar la aplicación web gratuita de conversión de LaTeX a PDF creada en base a Aspose.TeX para C++ API.

Subscribe to Aspose Product Updates

Get monthly newsletters & offers directly delivered to your mailbox.