LaTeX a PDF | Python tramite .NET
Convertire il LaTeX in PDF
Ora, esaminiamo il codice Python che offre l’approccio più semplice alla conversione del formato di LaTeX in PDF 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 PDF.
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.pdf import PdfDevice, PdfSaveOptions
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 = PdfSaveOptions()
22device = PdfDevice()
23job_result = TeXJob(str(input_file), device, options).run()Per iniziare, dobbiamo creare un’istanza della classe TeXOptions. Il metodo console_app_options() è l’unico metodo statico che lo fa, quindi non preoccuparti del suo nome. Questo metodo accetta un’istanza object_latex della classe TeXConfig, perfetta per convertire un file LaTeX. Questa configurazione indica al motore Object TeX di caricare il formato Object LaTeX e di prepararsi a elaborare il file LaTeX. Il formato Object LaTeX è essenzialmente lo stesso del formato LaTeX, ma utilizza primitive specifiche di Object TeX per definire le metriche della pagina.
La prima opzione che deve essere specificata è output_working_directory, che determina la posizione in cui verrà salvato l’output Tex. Se necessario, è possibile trovare maggiori informazioni sulla concetto della directory di output in aspose.tex. In questo caso particolare, utilizziamo la classe OutputFilesystemDirectory, che ci consente di scrivere l’output su una directory o una cartella designata.
La seconda opzione richiede un’istanza della classe SaveOptions, che determina come il modello a oggetto viene trasformato nel formato desiderato. Nel nostro caso, poiché stiamo convertendo il LaTeX in PDF, si riferisce a un’istanza della classe PDFSaveOptions.
Per convertire un file LaTeX archiviato nel file system, dobbiamo creare un’istanza della classe
Texjob usando il
costruttore che prende il percorso completo del file come parametro. Se non specifichiamo il percorso completo, il motore cercherà il file nella directory corrente (che è la directory di lavoro dello script) e potrebbe non trovarlo. Tuttavia, possiamo omettere l’estensione se il nostro file ha l’estensione .tex, poiché il motore la aggiungerà automaticamente. Il secondo argomento del costruttore è un’istanza della classe
dispositivo. Nel nostro caso, dal momento che stiamo convertendo il LaTeX in PDF, è un’istanza della classe
PDFDEVICE. Infine, passiamo le opzioni di conversione recentemente 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.pdf (1 page).
13Transcript written on hello-world.log.Nella cartella che abbiamo specificato come directory di output, troveremo il file di trascrizione e, qui è!, il principale file PDF di output, tra gli altri risultati del lavoro del motore.
Un modo alternativo per scrivere il file PDF di output principale
La classe pdfdevice ha un altro costruttore che ci consente di ottenere il file PDF risultante in modo diverso.
1# Convert LaTeX to PDF using an explicitly named binary output stream.
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.pdf import PdfDevice, PdfSaveOptions
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 = PdfSaveOptions()
22
23# Supply a binary stream to choose the output filename.
24with (output_dir / "any-name.pdf").open("wb") as output_stream:
25 device = PdfDevice(output_stream)
26 job_result = TeXJob(str(input_file), device, options).run()Il flusso binario scrive any-name.pdf nella directory di output configurata. Non viene creato un altro file PDF con il nome predefinito; i file ausiliari e il registro vengono comunque salvati in output_working_directory.
Sulle opzioni di input
Se il nostro file di input principale richiede dipendenze, come pacchetti che non sono inclusi nel sistema in LaTeX di base e nei pacchetti supportati, è necessario impostare l’opzione
richiesta_input_directory in modo simile a quando impostiamo l’opzione * output_working_directory * e posizionare le dipendenze in quella directory. Le dipendenze possono essere organizzate nelle sottodirectory come desiderato. Inoltre, se abbiamo i nostri file da includere nel processo di composizione, come i file grafici esterni, dobbiamo anche impostare
input_working_directory utilizzando il percorso per la 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 radice. Per maggiori dettagli sul concetto di directory di input in Aspose.TeX per python e le implementazioni fornite, fare riferimento a
qui.
Ci sono anche altre opzioni di lavoro di Tex discusse.
Puoi anche esplorare la conversione gratuita app Web per la latex-to-pdf, che è sviluppata utilizzando Aspose.TeX per .NET API.