Introduktion
Aspose.TeX FOSS för Python presenterar en koncis engine API byggd kring tre koncept: en enhetlig ingångspunkt (TeXJob), pluggbara utdataenheter (PdfDevice, DviDevice, SvgDevice), och två typer av inmatningskällor (FileInputSource, StringInputSource). Denna artikel täcker varje komponent och visar hur de kombineras för att producera PDF-, DVI- och SVG-utdata från TeX markup.
TeXJob — Ingångspunkten
TeXJob är huvudklassen för att driva TeX engine. Den accepterar en inmatningskälla, en utdataenhet och valfria TeXOptions, och kör sedan typograferingspipeline när run() anropas. Returvärdet är utdata-bytena för enhetstyper som producerar ett enda utdata (PDF, DVI); för SVG-utdata hämtas sidor från enhetsobjektet efter att run() har slutförts.
TeXOptions konfigurerar engine-beteendet. Att konstruera den med standardvärden (TeXOptions()) använder de vanliga TeX-inställningarna som är lämpliga för de flesta dokument.
Utdataenheter
PdfDevice
PdfDevice skriver det typesatta dokumentet till en PDF-byte-ström. Det är standardutgångsenheten för att producera portabel, utskrivbar output:
from aspose_tex import TeXJob, TeXOptions, PdfDevice, StringInputSource
pdf_bytes = TeXJob(StringInputSource("Hello, world!"), PdfDevice(), options=TeXOptions()).run()
with open("output.pdf", "wb") as f:
f.write(pdf_bytes)
Efter run() innehåller de returnerade byte-strömmarna det kompletta PDF-dokumentet.
DviDevice
DviDevice producerar Device Independent (DVI)-formatutdata — det inhemska mellanformatet för TeX. DVI-utdata kan konsumeras av efterföljande verktyg för rendering eller vidare bearbetning:
from aspose_tex import TeXJob, TeXOptions, DviDevice, StringInputSource
dvi_bytes = TeXJob(StringInputSource("Hello!"), DviDevice(), options=TeXOptions()).run()
with open("output.dvi", "wb") as f:
f.write(dvi_bytes)
SvgDevice
SvgDevice renderar varje typesatt sida som en SVG-vektorgrafik. Efter att jobbet har körts returnerar get_all_pages() listan med SVG-byte-strängar per sida:
from aspose_tex import TeXJob, TeXOptions, SvgDevice, StringInputSource
device = SvgDevice()
TeXJob(StringInputSource("Hello!"), device, options=TeXOptions()).run()
for i, svg in enumerate(device.get_all_pages()):
with open(f"page_{i}.svg", "wb") as f:
f.write(svg)
Inmatningskällor
FileInputSource
FileInputSource läser TeX markup från en .tex fil på disken. Detta är standardinmatningsläget vid typsättning av befintliga dokument:
from aspose_tex import TeXJob, TeXOptions, PdfDevice, FileInputSource
pdf_bytes = TeXJob(FileInputSource("document.tex"), PdfDevice(), options=TeXOptions()).run()
StringInputSource
StringInputSource accepterar TeX markup som en Python sträng. Detta inmatningsläge används för dynamisk markup-generering — att konstruera TeX programatiskt och typsätta det utan att skriva till disk:
from aspose_tex import TeXJob, TeXOptions, PdfDevice, StringInputSource
tex = "Hello, world!"
pdf_bytes = TeXJob(StringInputSource(tex), PdfDevice(), options=TeXOptions()).run()
Kombinera komponenter
De tre komponenterna arbetar tillsammans för att bilda en komplett typsättningspipeline. Välj den inmatningskälla som matchar ditt dataflöde och den enhet som matchar ditt utdataformat:
from aspose_tex import TeXJob, TeXOptions, SvgDevice, FileInputSource
device = SvgDevice()
TeXJob(FileInputSource("report.tex"), device, options=TeXOptions()).run()
pages = device.get_all_pages()
print(f"{len(pages)} SVG pages produced")
Tips och bästa praxis
- Använd
StringInputSourceför korta eller dynamiskt genererade TeX fragment; användFileInputSourcenär du arbetar med befintliga.tex-filer. PdfDeviceär det mest portabla utdataformatet; användSvgDevicenär du bäddar in TeX-utdata i webbsidor eller vektor-grafikarbetsflöden.- Återanvänd
TeXOptions-instanser över jobb om du bearbetar flera dokument med samma inställningar. - Returvärdet för
run()ärbytesför PDF och DVI; för SVG hämtas byte frånSvgDevice.get_all_pages()när jobbet är slutfört.
API Reference Sammanfattning
| Klass | Roll |
|---|---|
TeXJob | Ingångspunkt; driver TeX typograferingspipeline |
TeXOptions | Motorkonfiguration; standardinställningarna fungerar för de flesta dokument |
PdfDevice | Utdatarenhet som producerar PDF-bytes |
DviDevice | Utmatningsenhet som producerar DVI-bytes |
SvgDevice | Utdatarenhet som producerar SVG per sida via get_all_pages() |
FileInputSource | Inmatning från en .tex-fil på disk |
StringInputSource | Inmatning från en Python-sträng |