Látex para pdf | Aspose.TeX para .NET
Como converter LaTeX em pdf
Vamos dar uma olhada detalhada no código em C#, fornecendo a maneira mais simples de converter o LATEX em formato PDF.
1// Create conversion options for Object LaTeX format upon Object TeX engine extension.
2TeXOptions options = TeXOptions.ConsoleAppOptions(TeXConfig.ObjectLaTeX);
3// Specify a file system working directory for the output.
4options.OutputWorkingDirectory = new OutputFileSystemDirectory(RunExamples.OutputDirectory);
5// Initialize the options for saving in PDF format.
6options.SaveOptions = new PdfSaveOptions();
7// Run LaTeX to PDF conversion.
8new TeXJob(Path.Combine(RunExamples.InputDirectory, "hello-world.ltx"), new PdfDevice(), options).Run();
Portanto, a primeira coisa que precisamos fazer (bem, às vezes não é a primeira) é criar uma instância da classe Texoptions. O único método estático que faz isso é ConsoleAppOptions(), então não seremos intrigados com o significado de seu nome. O método pega uma instance da classe TexConfig, que é exatamente adequada para converter um arquivo de LaTeX. Esta configuração informa ao mecanismo Tex do objeto para carregar o formato de LaTeX do objeto e estar pronto para aceitar o arquivo LATEX. O formato LATEX do Object é na verdade apenas o formato LATEX, exceto que ele usa as primitivas específicas Object tex para configurar as métricas da página.
A primeira das opções necessárias é OutputWorkingDirectory que define o espaço ou área, onde a saída TEX será gravada. Aqui são os detalhes sobre o conceito de diretório de saída em aspose.tex para .NET. Neste exemplo, usamos a classe outputFilesystemDirectory, que nos permite escrever a saída no diretório ou pasta especificada.
A segunda opção é uma instância de classe saveOptions que controlará a transformação do modelo de objeto no formato de destino. Como estamos convertendo LaTeX em PDF, é a instância da classe PDFSaveOptions.
De seguida, necessitamos de criar uma instância da classe TeXJob. Para converter um ficheiro LaTeX armazenado no sistema de ficheiros, utilizamos esta versão do construtor. Devemos especificar o caminho completo para o ficheiro. Caso contrário, o motor irá procurá-lo no directório actual (que é CurrentDirectory) e provavelmente não o encontrará. No entanto, podemos omitir a extensão se o nosso ficheiro tiver a extensão . tex. O mecanismo irá anexá-la automaticamente. O segundo argumento do construtor é uma instância da classe Device. Como estamos a converter LaTeX para PDF, trata-se de uma instância da classe PdfDevice. Como último argumento, passámos as opções de conversão preparadas recentemente.
Tudo o que resta a fazer agora é correr o trabalho.
Independentemente de a execução ter sido bem -sucedida ou não, o primeiro resultado que veremos será a saída do terminal. Em caso de sucesso, parece algo assim:
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 outras “frutas” do trabalho do motor na pasta que especificamos como diretório de saída. Esses serão o arquivo de transcrição e, aqui está!, o arquivo PDF de saída principal.
Uma maneira alternativa de escrever o arquivo PDF de saída principal
Há outro construtor da classe PDFDevice, que nos permite obter o arquivo PDF resultante de uma maneira alternativa.
1// Create the stream to write the PDF file to.
2using (Stream pdfStream = File.Open(Path.Combine(RunExamples.OutputDirectory, "any-name.pdf"), FileMode.Create))
3{
4 // Create conversion options for Object LaTeX format upon Object TeX engine extension.
5 ...
6 // Run LaTeX to PDF conversion.
7 new TeXJob(Path.Combine(RunExamples.InputDirectory, "hello-world.ltx"), new PdfDevice(pdfStream), options).Run();
8}
O arquivo any-name.pdf no diretório especificado será o nosso principal arquivo PDF de saída. Ao mesmo tempo, diferentemente do saída de imagem, não encontraremos nenhum arquivo PDF no diretório de saída definido pelas opções de conversão. Exceção: any-name.pdf está localizado (por seu caminho) no mesmo diretório do sistema de arquivos atribuído à opção outputWorkingDirectory usando outputFilesystemDirectory.
Sobre opções de entrada
Caso nosso arquivo de entrada principal exija dependências, por exemplo, pacotes, que não estão incluídos no sistema de LaTeX básico e pacotes suportados, devemos definir a opção
requerirInputDirectory da maneira semelhante a definir a opção
OutputWorkingDirectory e colocar as dependências nesse diretório. As dependências podem ser organizadas arbitrariamente em subdiretos. Caso tenhamos nossos próprios arquivos a serem incluídos ao longo do processo de composição, digamos arquivos gráficos externos, também devemos definir o
InputWorkingDirectory usando o caminho para o local onde esses arquivos são coletados. Também podemos colocar o arquivo de entrada principal em algum lugar dentro do diretório de entrada e especificar o caminho relativo no método run()
(ou especificar nenhum caminho se o arquivo de entrada principal estiver na raiz).
Aqui são os detalhes sobre o conceito de diretório de entrada em aspose.tex para .NET e fornecem implementações.
Outras opções de trabalho Tex são discutidas aqui.
Você também pode conferir a conversão LATEX-PDF gratuita aplicativo da web construído com base em Aspose.TeX para .NET API.