Twórz pliki PDF z LaTeX w Javie

LaTeX jest szeroko stosowany do tworzenia dokumentacji technicznej i naukowej. Pliki LaTeX (TEX lub LTX) to dokumenty źródłowe wypełnione poleceniami określającymi format dokumentu, w tym tekst, symbole, wyrażenia matematyczne i grafikę. Możemy łatwo programowo wygenerować dokument PDF ze źródła LaTeX. PDF umożliwia udostępnianie dokumentów w formacie tylko do odczytu bez uszczerbku dla ich stylu lub układu. W tym artykule dowiemy się, jak utworzyć dokument PDF z pliku źródłowego LaTeX w Javie.

W tym artykule zostaną omówione następujące tematy:

Java API do tworzenia plików PDF z LaTeX

Do tworzenia dokumentów PDF z plików źródłowych LaTeX będziemy używać API Aspose.TeX for Java. Umożliwia składanie plików TeX do różnych formatów plików, takich jak PDF, XPS lub obrazy. Pobierz plik JAR interfejsu API lub dodaj następującą konfigurację pom.xml w aplikacji Java opartej na Maven.

Magazyn:

<repository>
    <id>AsposeJavaAPI</id>
    <name>Aspose Java API</name>
    <url>https://repository.aspose.com/repo/</url>
</repository>

Zależność:

<dependency>
    <groupId>com.aspose</groupId>
    <artifactId>aspose-tex</artifactId>
    <version>21.11</version>
    <type>jar</type>
</dependency>

Utwórz plik PDF z pliku LaTeX TeX w Javie

Możemy utworzyć dokument PDF z pliku LaTeX (TeX), wykonując czynności podane poniżej:

  1. Najpierw utwórz instancję klasy TeXOptions przy użyciu metody consoleAppOptions().
  2. Ustaw konfigurację TeX-a jako TeXConfig.objectLaTeX().
  3. Następnie ustaw katalogi robocze wejścia i wyjścia.
  4. Następnie określ strumień konsoli lub pamięci jako terminal wyjściowy.
  5. Następnie ustaw opcje renderowania do formatu PDF.
  6. Na koniec wywołaj metodę run() dla nowo utworzonej instancji klasy TexJob z wyjściowym plikiem PDF i obiektem klasy PdfDevice jako argumentami.

Poniższy przykład kodu demonstruje, jak utworzyć plik PDF z pliku TeX przy użyciu języka Java.

// Ten przykład kodu pokazuje, jak utworzyć plik PDF z pliku źródłowego TeX.
// Katalog roboczy
String dataDir = "D:\\Files\\Tex\\";

// Utwórz opcje składu.
TeXOptions options = TeXOptions.consoleAppOptions(TeXConfig.objectLaTeX());

// Określ katalog roboczy systemu plików dla danych wejściowych.
options.setInputWorkingDirectory(new InputFileSystemDirectory(dataDir));

// Określ katalog roboczy systemu plików dla danych wyjściowych.
options.setOutputWorkingDirectory(new OutputFileSystemDirectory(dataDir));

// Określ strumień pamięci jako terminal wyjściowy.
options.setTerminalOut(new OutputMemoryTerminal());

// Ustaw opcje renderowania do formatu PDF.
options.setSaveOptions(new PdfSaveOptions());

// Uruchom skład.
new TeXJob(dataDir + "sample.tex", new PdfDevice(), options).run();
Utwórz plik PDF z pliku LaTeX TeX w Javie

Utwórz plik PDF z pliku LaTeX TeX w Javie.

Utwórz plik PDF z pliku LTX w Javie

LaTeX używa znaczników i właściwości składu rozszerzenia pliku LTX, które definiują strukturę i zawartość dokumentu. Możemy również utworzyć plik PDF z pliku LaTeX (LTX), wykonując kroki wymienione wcześniej. Jednak w ostatnim kroku musimy tylko wprowadzić plik źródłowy z rozszerzeniem .ltx.

Poniższy przykład kodu demonstruje, jak utworzyć plik PDF z pliku LTX przy użyciu języka Java.

// Ten przykład kodu pokazuje, jak utworzyć plik PDF z pliku źródłowego LTX.
// Katalog roboczy
String dataDir = "D:\\Files\\Tex\\";

// Utwórz opcje składu.
TeXOptions options = TeXOptions.consoleAppOptions(TeXConfig.objectLaTeX());

// Określ katalog roboczy systemu plików dla danych wejściowych.
options.setInputWorkingDirectory(new InputFileSystemDirectory(dataDir));

// Określ katalog roboczy systemu plików dla danych wyjściowych.
options.setOutputWorkingDirectory(new OutputFileSystemDirectory(dataDir));

// Określ strumień pamięci jako terminal wyjściowy.
options.setTerminalOut(new OutputMemoryTerminal());

// Ustaw opcje renderowania do formatu PDF.
options.setSaveOptions(new PdfSaveOptions());

// Uruchom skład.
new TeXJob(dataDir + "sample.ltx", new PdfDevice(), options).run();

Konwertuj TeX na XPS za pomocą Javy

Możemy również przekonwertować plik LaTeX (TeX) na XPS, wykonując czynności wspomniane wcześniej. Jednak wystarczy ustawić XpsSaveOptions zamiast PdfSaveOptions w kroku nr 5.

Poniższy przykład kodu demonstruje, jak przekonwertować TeX na XPS przy użyciu języka Java.

// Ten przykład kodu demonstruje, jak przekonwertować plik Tex na XPS.
// Katalog roboczy
String dataDir = "D:\\Files\\Tex\\";

// Utwórz opcje składu.
TeXOptions options = TeXOptions.consoleAppOptions(TeXConfig.objectLaTeX());

// Określ katalog roboczy systemu plików dla danych wejściowych.
options.setInputWorkingDirectory(new InputFileSystemDirectory(dataDir));

// Określ katalog roboczy systemu plików dla danych wyjściowych.
options.setOutputWorkingDirectory(new OutputFileSystemDirectory(dataDir));

// Określ strumień pamięci jako terminal wyjściowy.
options.setTerminalOut(new OutputMemoryTerminal());

// Ustaw opcje renderowania do formatu XPS.
options.setSaveOptions(new XpsSaveOptions());

// Uruchom skład.
new TeXJob(dataDir + "sample.tex", new PdfDevice(), options).run();

Konwertuj katalog TeX ZIP na katalog PDF ZIP przy użyciu języka Java

Możemy konwertować wiele plików TeX skompresowanych w archiwum ZIP do formatu PDF jednocześnie, wykonując czynności podane poniżej:

  1. Po pierwsze, otwórz strumienie w archiwach ZIP jako wejściowy i wyjściowy katalog roboczy.
  2. Następnie utwórz instancję klasy TeXOptions przy użyciu metody consoleAppOptions().
  3. Następnie ustaw konfigurację TeX-a jako TeXConfig.objectLaTeX().
  4. Następnie ustaw wejściowe i wyjściowe katalogi ZIP.
  5. Następnie określ strumień konsoli lub pamięci jako terminal wyjściowy.
  6. Następnie ustaw opcje renderowania do formatu PDF.
  7. Na koniec wywołaj metodę run() dla nowo utworzonej instancji klasy TexJob z wyjściowym plikiem PDF i obiektem klasy PdfDevice jako argumentami.

Poniższy przykład kodu demonstruje, jak przekonwertować archiwum TeX ZIP na archiwum ZIP PDF przy użyciu języka Java.

// Ten przykładowy kod demonstruje, jak przekonwertować katalog TeX ZIP na katalog PDF ZIP.
// Katalog roboczy
String dataDir = "D:\\Files\\Tex\\";

// Otwórz strumień w archiwum ZIP, który będzie służył jako wejściowy katalog roboczy.
final InputStream inZipStream = new FileInputStream(dataDir + "files.zip");

// Otwórz strumień w archiwum ZIP, który będzie służył jako wyjściowy katalog roboczy.
final OutputStream outZipStream = new FileOutputStream(dataDir + "files-out.zip");

try {
    // Utwórz opcje konwersji dla domyślnego formatu ObjectTeX w rozszerzeniu silnika ObjectTeX.
    TeXOptions options = TeXOptions.consoleAppOptions(TeXConfig.objectLaTeX());

    // Określ katalog roboczy archiwum ZIP dla danych wejściowych.
    options.setInputWorkingDirectory(new InputZipDirectory(inZipStream, "files"));

    // Określ katalog roboczy archiwum ZIP dla danych wyjściowych.
    options.setOutputWorkingDirectory(new OutputZipDirectory(outZipStream));

    // Określ konsolę jako terminal wyjściowy.
    options.setTerminalOut(new OutputConsoleTerminal()); // Default. Not necessary to specify.

    // Zdefiniuj opcje zapisywania.
    options.setSaveOptions(new PdfSaveOptions());

    // Uruchom zadanie.
    TeXJob job = new TeXJob("sample", new PdfDevice(), options);
    job.run();

    // Aby kolejne dane wyjściowe wyglądały jak write. 
    options.getTerminalOut().getWriter().newLine();

    // Zakończ wyjściowe archiwum ZIP.
    ((OutputZipDirectory)options.getOutputWorkingDirectory()).finish();
} finally {
  outZipStream.close();
}
Konwertuj archiwum TeX ZIP na archiwum PDF ZIP

Konwertuj archiwum TeX ZIP na archiwum PDF ZIP.

Uzyskaj bezpłatną licencję

Możesz uzyskać bezpłatną tymczasową licencję, aby wypróbować bibliotekę bez ograniczeń ewaluacyjnych.

Wniosek

W tym artykule dowiedzieliśmy się, jak:

  • wygenerować wyjście PDF z pliku źródłowego LaTeX w Javie;
  • programowo utworzyć dokument wyjściowy XPS z pliku TeX;
  • przekonwertować archiwum TeX ZIP na archiwum ZIP PDF przy użyciu języka Java.

Poza tym możesz dowiedzieć się więcej o Aspose.TeX for Java API korzystając z dokumentacji. W przypadku jakichkolwiek niejasności prosimy o kontakt na forum.

Zobacz też