LaTeX a PDF | Aspose.TeX per Python
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à.
1# Create conversion options for Object LaTeX format upon Object TeX engine extension.
2options = TeXOptions.console_app_options(TeXConfig.object_latex)
3# Specify a file system working directory for the output.
4options.output_working_directory = OutputFileSystemDirectory(Util.output_directory)
5# Initialize the options for saving in PDF format.
6options.save_options = PdfSaveOptions()
7# Run LaTeX to PDF conversion.
8TeXJob(path.join(Util.input_directory, "hello-world.ltx"), PdfDevice(), 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.
Dopo l’esecuzione, indipendentemente dal fatto che abbia avuto successo o no, la prima cosa che vedremo è l’output del terminale. Se l’esecuzione ha esito positivo, l’output sembrerà simile a questo:
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# Create the stream to write the PDF file to.
2with open(path.join(Util.output_directory, "any-name.pdf"), "wb") as pdf_stream:
3 # Create conversion options for Object LaTeX format upon Object TeX engine extension.
4 options = TeXOptions.console_app_options(TeXConfig.object_latex)
5 # Specify a file system working directory for the output.
6 options.output_working_directory = OutputFileSystemDirectory(Util.output_directory)
7 # Initialize the options for saving in PDF format.
8 options.save_options = PdfSaveOptions()
9 # Run LaTeX to PDF conversion.
10 TeXJob(path.join(Util.input_directory, "hello-world.ltx"), PdfDevice(pdf_stream), options).run()
Il file PDF di output principale verrà denominato qualsiasi name.pdf
e sarà posizionato nella directory specificata. Tuttavia, a differenza dell’output
immagine, non ci saranno altri file PDF nella directory di output specificati dalle opzioni di conversione. L’eccezione è se any-name.pdf
si trova nella stessa directory del file system assegnato all’opzione *output_working_directory *utilizzando outputfilesystemdirectory.
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 nel metodo run()
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.