LaTeX all'immagine | Python tramite .NET

Aspose.TeX per Python ci fornisce la capacità di convertire i file in LaTeX in vari formati di immagini raster.

Convertire il LaTeX in PNG

Ora, esaminiamo il codice Python che offre l’approccio più semplice alla conversione del formato di LaTeX in PNG in profondità.

Impostare ASPOSE_TEX_INPUT_FILE sul file LaTeX e ASPOSE_TEX_OUTPUT_DIR sulla directory di output, oppure modificare i percorsi nell’esempio. I valori predefiniti sono hello-world.ltx e output. Applicare prima una licenza. I file di input aggiuntivi vengono cercati accanto al documento principale; l’elaborazione non è interattiva. Licenze

 1# Convert LaTeX to PNG.
 2import os
 3from pathlib import Path
 4from aspose.tex import Interaction, TeXConfig, TeXJob, TeXOptions
 5from aspose.tex.io import InputFileSystemDirectory, OutputFileSystemDirectory, OutputMemoryTerminal
 6from aspose.tex.presentation.image import ImageDevice, PngSaveOptions
 7
 8# Set these paths to your LaTeX document and output directory.
 9input_file = Path(os.environ.get("ASPOSE_TEX_INPUT_FILE", "hello-world.ltx")).resolve()
10output_dir = Path(os.environ.get("ASPOSE_TEX_OUTPUT_DIR", "output")).resolve()
11if not input_file.is_file():
12    raise FileNotFoundError(input_file)
13output_dir.mkdir(parents=True, exist_ok=True)
14
15# Use the Object LaTeX format and resolve additional inputs beside the main file.
16options = TeXOptions.console_app_options(TeXConfig.object_latex)
17options.input_working_directory = InputFileSystemDirectory(str(input_file.parent))
18options.output_working_directory = OutputFileSystemDirectory(str(output_dir))
19options.interaction = Interaction.NONSTOP_MODE
20options.terminal_out = OutputMemoryTerminal()
21options.save_options = PngSaveOptions()
22device = ImageDevice(True)
23job_result = TeXJob(str(input_file), device, options).run()

Per cominciare, dobbiamo creare un’istanza della classe texoptions usando il metodo Console_app_options() . Non preoccuparti del nome, è solo il metodo statico che crea l’istanza. Questo metodo prende l’istanza Object_Latex della classe TexConfig, che è perfetta per convertire un file latex. Questa configurazione imposta il motore Object Tex per caricare il formato Object Latex ed essere pronto a elaborare il file Latex. Il formato di LaTeX oggetto è essenzialmente lo stesso del formato latex, ma utilizza oggetto tex primitive specifiche per definire le metriche di pagina.

La prima delle opzioni necessarie è output_working_directory, che specifica la posizione in cui verrà salvato l’output Tex. Se interessato, puoi conoscere ulteriori informazioni sul concetto di directory di output in Aspose.TeX per python. In questo esempio particolare, utilizziamo la classe OutputFilesystemDirectory per scrivere l’output su una directory o una cartella specifica.

La seconda opzione è un’istanza della classe SaveOptions, che è responsabile della gestione della conversione dal modello a oggetti al formato desiderato. In questo caso, dal momento che stiamo convertendo il LaTeX in PNG, utilizziamo l’istanza di classe PNGSaveOptions, che ci consente di specificare la risoluzione delle immagini di output.

Successivamente, creiamo un’istanza della classe Texjob. In questo caso, dal momento che vogliamo convertire un file LaTeX memorizzato nel file system, utilizziamo questa versione del costruttore . Dobbiamo fornire l’intero percorso al file, altrimenti il ​​motore lo cercherà nella directory corrente (che è la directory di lavoro dello script) e potrebbe non trovarlo. Tuttavia, l’estensione .tex può essere omessa poiché il motore lo aggiungerà automaticamente. Il secondo argomento del costruttore è un’istanza della classe dispositivo. Dal momento che stiamo convertendo il LaTeX in PNG, è un’istanza di classe imagevice, che è comune a tutti i formati di immagine supportati. Infine, passiamo le opzioni di conversione preparate come ultimo argomento.

Ora, tutto ciò che rimane è correre il lavoro.

L’esempio acquisisce l’output del terminale in OutputMemoryTerminal. La directory di output contiene anche un registro .log. Una conversione riuscita produce un registro simile al seguente; le informazioni sulla versione possono variare:

 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.png (1 page).
13Transcript written on hello-world.log.

I risultati del lavoro del motore sono disponibili nella directory di output che abbiamo specificato. Ciò includerà il file di trascrizione e, soprattutto, i principali file di immagine PNG di output.

Un modo alternativo per scrivere i file PNG di output principale

Esiste un metodo alternativo per ottenere i dati dell’immagine come array di array di byte, in cui ciascun array nella seconda dimensione rappresenta i dati dell’immagine per una pagina separata.

 1# Convert LaTeX to PNG and save each page from the returned byte arrays.
 2import os
 3from pathlib import Path
 4from aspose.tex import Interaction, TeXConfig, TeXJob, TeXOptions
 5from aspose.tex.io import InputFileSystemDirectory, OutputFileSystemDirectory, OutputMemoryTerminal
 6from aspose.tex.presentation.image import ImageDevice, PngSaveOptions
 7
 8# Set these paths to your LaTeX document and output directory.
 9input_file = Path(os.environ.get("ASPOSE_TEX_INPUT_FILE", "hello-world.ltx")).resolve()
10output_dir = Path(os.environ.get("ASPOSE_TEX_OUTPUT_DIR", "output")).resolve()
11if not input_file.is_file():
12    raise FileNotFoundError(input_file)
13output_dir.mkdir(parents=True, exist_ok=True)
14
15# Use the Object LaTeX format and resolve additional inputs beside the main file.
16options = TeXOptions.console_app_options(TeXConfig.object_latex)
17options.input_working_directory = InputFileSystemDirectory(str(input_file.parent))
18options.output_working_directory = OutputFileSystemDirectory(str(output_dir))
19options.interaction = Interaction.NONSTOP_MODE
20options.terminal_out = OutputMemoryTerminal()
21save_options = PngSaveOptions()
22save_options.device_writes_images = False
23options.save_options = save_options
24device = ImageDevice(True)
25job_result = TeXJob(str(input_file), device, options).run()
26
27# Write the returned PNG page bytes yourself.
28for index, page_bytes in enumerate(device.result, start=1):
29    (output_dir / f"page-{index}.png").write_bytes(page_bytes)

L’esempio imposta device_writes_images = False su PngSaveOptions prima di assegnarlo a options.save_options. Salva i byte delle pagine restituite come page-1.png, page-2.png e così via. Il dispositivo non crea quindi file PNG duplicati.

Per quanto riguarda le opzioni di input

Se il nostro file di input principale richiede dipendenze, come pacchetti che non sono inclusi nel sistema di base in LaTeX o pacchetti supportati, è necessario impostare l’opzione Recome_input_directory in modo simile a come impostiamo l’opzione * output_working_directory * e posizionare le dipendenze in quella directory. Le dipendenze possono essere organizzate nelle sottodirectory se necessario. Se abbiamo i nostri file da includere nel processo di composizione, come i file grafici esterni, dobbiamo anche impostare input_working_directory nella posizione in cui tali file sono archiviati. Possiamo anche posizionare il file di input principale all’interno della directory di input e specificare il percorso relativo al costruttore TeXJob o specificare alcun percorso se il file di input principale è nella directory di root. Ci sono anche maggiori dettagli sul concetto di directory di input in aspose.tex e le implementazioni fornite descritte.

Impara anche le altre opzioni di lavoro di Tex qui.

Puoi anche esplorare la conversione gratuita Web App per la conversione da lattoce a PNG, che viene sviluppata utilizzando Aspose.TeX per API .NET.

Di seguito, spiegheremo brevemente la conversione del LaTeX ad altri formati di immagini raster supportati, senza immergersi in troppi dettagli in quanto non vi sono differenze significative. L’unica variazione risiede nel tipo di proprietà Save_options nelle opzioni di conversione.

Convertire il LaTeX in jpg

 1# Convert LaTeX to JPEG.
 2import os
 3from pathlib import Path
 4from aspose.tex import Interaction, TeXConfig, TeXJob, TeXOptions
 5from aspose.tex.io import InputFileSystemDirectory, OutputFileSystemDirectory, OutputMemoryTerminal
 6from aspose.tex.presentation.image import ImageDevice, JpegSaveOptions
 7
 8# Set these paths to your LaTeX document and output directory.
 9input_file = Path(os.environ.get("ASPOSE_TEX_INPUT_FILE", "hello-world.ltx")).resolve()
10output_dir = Path(os.environ.get("ASPOSE_TEX_OUTPUT_DIR", "output")).resolve()
11if not input_file.is_file():
12    raise FileNotFoundError(input_file)
13output_dir.mkdir(parents=True, exist_ok=True)
14
15# Use the Object LaTeX format and resolve additional inputs beside the main file.
16options = TeXOptions.console_app_options(TeXConfig.object_latex)
17options.input_working_directory = InputFileSystemDirectory(str(input_file.parent))
18options.output_working_directory = OutputFileSystemDirectory(str(output_dir))
19options.interaction = Interaction.NONSTOP_MODE
20options.terminal_out = OutputMemoryTerminal()
21options.save_options = JpegSaveOptions()
22device = ImageDevice(True)
23job_result = TeXJob(str(input_file), device, options).run()

Puoi anche esplorare la conversione gratuita app Web per LaTeX a jpg, che viene sviluppata utilizzando Aspose.TeX per .NET API.

Convertire il LaTeX in TIFF

 1# Convert LaTeX to TIFF.
 2import os
 3from pathlib import Path
 4from aspose.tex import Interaction, TeXConfig, TeXJob, TeXOptions
 5from aspose.tex.io import InputFileSystemDirectory, OutputFileSystemDirectory, OutputMemoryTerminal
 6from aspose.tex.presentation.image import ImageDevice, TiffSaveOptions
 7
 8# Set these paths to your LaTeX document and output directory.
 9input_file = Path(os.environ.get("ASPOSE_TEX_INPUT_FILE", "hello-world.ltx")).resolve()
10output_dir = Path(os.environ.get("ASPOSE_TEX_OUTPUT_DIR", "output")).resolve()
11if not input_file.is_file():
12    raise FileNotFoundError(input_file)
13output_dir.mkdir(parents=True, exist_ok=True)
14
15# Use the Object LaTeX format and resolve additional inputs beside the main file.
16options = TeXOptions.console_app_options(TeXConfig.object_latex)
17options.input_working_directory = InputFileSystemDirectory(str(input_file.parent))
18options.output_working_directory = OutputFileSystemDirectory(str(output_dir))
19options.interaction = Interaction.NONSTOP_MODE
20options.terminal_out = OutputMemoryTerminal()
21options.save_options = TiffSaveOptions()
22device = ImageDevice(True)
23job_result = TeXJob(str(input_file), device, options).run()

Puoi anche esplorare la conversione gratuita app Web per LaTeX-tiff, che viene sviluppata utilizzando Aspose.TeX per .NET API.

Convertire il LaTeX in BMP

 1# Convert LaTeX to BMP.
 2import os
 3from pathlib import Path
 4from aspose.tex import Interaction, TeXConfig, TeXJob, TeXOptions
 5from aspose.tex.io import InputFileSystemDirectory, OutputFileSystemDirectory, OutputMemoryTerminal
 6from aspose.tex.presentation.image import ImageDevice, BmpSaveOptions
 7
 8# Set these paths to your LaTeX document and output directory.
 9input_file = Path(os.environ.get("ASPOSE_TEX_INPUT_FILE", "hello-world.ltx")).resolve()
10output_dir = Path(os.environ.get("ASPOSE_TEX_OUTPUT_DIR", "output")).resolve()
11if not input_file.is_file():
12    raise FileNotFoundError(input_file)
13output_dir.mkdir(parents=True, exist_ok=True)
14
15# Use the Object LaTeX format and resolve additional inputs beside the main file.
16options = TeXOptions.console_app_options(TeXConfig.object_latex)
17options.input_working_directory = InputFileSystemDirectory(str(input_file.parent))
18options.output_working_directory = OutputFileSystemDirectory(str(output_dir))
19options.interaction = Interaction.NONSTOP_MODE
20options.terminal_out = OutputMemoryTerminal()
21options.save_options = BmpSaveOptions()
22device = ImageDevice(True)
23job_result = TeXJob(str(input_file), device, options).run()

Puoi anche esplorare la conversione gratuita app Web per LaTeX-a-BMP, che viene sviluppata utilizzando Aspose.TeX per .NET API.

Convertire il LaTeX in SVG

Un altro formato target supportato è svg. Scalable Vector Graphics (SVG) è un formato di immagine vettoriale basato su XML che viene utilizzato per definire la grafica bidimensionale. Supporta l’interattività e l’animazione.

Le immagini SVG sono archiviate in file di testo XML e definite in un formato grafico vettoriale. Ciò significa che le immagini svg possono essere ridimensionate senza perdere la qualità e i file svg stessi possono essere cercati, indicizzati, scritti e compressi. I file di testo XML possono essere creati e modificati utilizzando editor di testo o redattori di grafica vettoriale e possono essere resi dai browser Web più comunemente usati.

L’API Aspose.svg offre una gamma di funzionalità per lavorare con svg, come la creazione, il caricamento, la modifica e la conversione di documenti svg.

La conversione del LaTeX in SVG è semplice quanto la conversione in formati di immagini raster, con l’unica differenza è che i Save_options devono essere impostati su un’istanza della classe SVGSaveOptions e il dispositivo deve essere modificato in un’istanza della classe SvgDevice.

 1# Convert LaTeX to SVG.
 2import os
 3from pathlib import Path
 4from aspose.tex import Interaction, TeXConfig, TeXJob, TeXOptions
 5from aspose.tex.io import InputFileSystemDirectory, OutputFileSystemDirectory, OutputMemoryTerminal
 6from aspose.tex.presentation.svg import SvgDevice, SvgSaveOptions
 7
 8# Set these paths to your LaTeX document and output directory.
 9input_file = Path(os.environ.get("ASPOSE_TEX_INPUT_FILE", "hello-world.ltx")).resolve()
10output_dir = Path(os.environ.get("ASPOSE_TEX_OUTPUT_DIR", "output")).resolve()
11if not input_file.is_file():
12    raise FileNotFoundError(input_file)
13output_dir.mkdir(parents=True, exist_ok=True)
14
15# Use the Object LaTeX format and resolve additional inputs beside the main file.
16options = TeXOptions.console_app_options(TeXConfig.object_latex)
17options.input_working_directory = InputFileSystemDirectory(str(input_file.parent))
18options.output_working_directory = OutputFileSystemDirectory(str(output_dir))
19options.interaction = Interaction.NONSTOP_MODE
20options.terminal_out = OutputMemoryTerminal()
21options.save_options = SvgSaveOptions()
22device = SvgDevice()
23job_result = TeXJob(str(input_file), device, options).run()

Puoi anche esplorare la conversione gratuita app Web per la latex-a-SVG, che viene sviluppata utilizzando Aspose.TeX per .NET API.