สร้าง PDF จาก LaTeX ใน Java

LaTeX ใช้กันอย่างแพร่หลายในการสร้างเอกสารทางเทคนิคและวิทยาศาสตร์ ไฟล์ LaTeX (TEX หรือ LTX) เป็นเอกสารต้นทางที่เต็มไปด้วยคำสั่งเพื่อระบุรูปแบบของเอกสาร รวมถึงข้อความ สัญลักษณ์ นิพจน์ทางคณิตศาสตร์ และกราฟิก เราสามารถสร้างเอกสาร PDF จากแหล่ง LaTeX โดยทางโปรแกรมได้อย่างง่ายดาย PDF อนุญาตให้แชร์เอกสารในรูปแบบอ่านอย่างเดียวโดยไม่ลดทอนสไตล์หรือเค้าโครง ในบทความนี้ เราจะมาเรียนรู้วิธีสร้างเอกสาร PDF จากซอร์สไฟล์ LaTeX ใน Java

หัวข้อต่อไปนี้จะครอบคลุมในบทความนี้:

Java API เพื่อสร้าง PDF จาก LaTeX

สำหรับการสร้างเอกสาร PDF จากไฟล์ต้นฉบับ LaTeX เราจะใช้ API Aspose.TeX for Java ช่วยให้เรียงไฟล์ TeX เป็นรูปแบบไฟล์ต่างๆ เช่น PDF, XPS หรือรูปภาพ โปรด ดาวน์โหลด JAR ของ API หรือเพิ่มการกำหนดค่า pom.xml ต่อไปนี้ในแอปพลิเคชัน Java ที่ใช้ Maven

พื้นที่เก็บข้อมูล:

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

การพึ่งพา:

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

สร้าง PDF จากไฟล์ LaTeX TeX ใน Java

เราสามารถสร้างเอกสาร PDF จากไฟล์ LaTeX (TeX) โดยทำตามขั้นตอนด้านล่าง:

  1. ขั้นแรก สร้างอินสแตนซ์ของคลาส TeXOptions โดยใช้เมธอด consoleAppOptions()
  2. ตั้งค่าการกำหนดค่า TeX เป็น TeXConfig.objectLaTeX()
  3. ถัดไป ตั้งค่าไดเร็กทอรีการทำงานของอินพุตและเอาต์พุต
  4. จากนั้น ระบุคอนโซลหรือสตรีมหน่วยความจำเป็นเทอร์มินัลเอาต์พุต
  5. หลังจากนั้น ให้ตั้งค่าตัวเลือกสำหรับการแสดงผลเป็นรูปแบบ PDF
  6. สุดท้าย เรียกใช้เมธอด run() สำหรับอินสแตนซ์คลาส TexJob ที่สร้างขึ้นใหม่โดยมีเอาต์พุต PDF และอ็อบเจ็กต์คลาส PdfDevice เป็นอาร์กิวเมนต์

ตัวอย่างโค้ดต่อไปนี้สาธิตวิธีสร้าง PDF จากไฟล์ TeX โดยใช้ Java

// ตัวอย่างโค้ดนี้สาธิตวิธีสร้าง PDF จากไฟล์ต้นฉบับ TeX
// ไดเร็กทอรีการทำงาน
String dataDir = "D:\\Files\\Tex\\";

// สร้างตัวเลือกการเรียงพิมพ์
TeXOptions options = TeXOptions.consoleAppOptions(TeXConfig.objectLaTeX());

// ระบุไดเร็กทอรีการทำงานของระบบไฟล์สำหรับอินพุต
options.setInputWorkingDirectory(new InputFileSystemDirectory(dataDir));

// ระบุไดเร็กทอรีการทำงานของระบบไฟล์สำหรับเอาต์พุต
options.setOutputWorkingDirectory(new OutputFileSystemDirectory(dataDir));

// ระบุสตรีมหน่วยความจำเป็นเทอร์มินัลเอาต์พุต
options.setTerminalOut(new OutputMemoryTerminal());

// ตั้งค่าตัวเลือกสำหรับการแสดงผลในรูปแบบ PDF
options.setSaveOptions(new PdfSaveOptions());

// เรียกใช้การเรียงพิมพ์
new TeXJob(dataDir + "sample.tex", new PdfDevice(), options).run();
สร้าง PDF จากไฟล์ LaTeX TeX ใน Java

สร้าง PDF จากไฟล์ LaTeX TeX ใน Java

สร้าง PDF จากไฟล์ LTX ใน Java

LaTeX ใช้แท็กมาร์กอัปการเรียงพิมพ์นามสกุลไฟล์ LTX และคุณสมบัติที่กำหนดโครงสร้างเอกสารและเนื้อหา เราสามารถสร้าง PDF จากไฟล์ LaTeX (LTX) ได้เช่นกันโดยทำตามขั้นตอนที่กล่าวถึงก่อนหน้านี้ อย่างไรก็ตาม เราเพียงแค่ต้องป้อนไฟล์ต้นฉบับที่มีนามสกุล .ltx ในขั้นตอนสุดท้าย

ตัวอย่างโค้ดต่อไปนี้สาธิตวิธีสร้าง PDF จากไฟล์ LTX โดยใช้ Java

// ตัวอย่างรหัสนี้สาธิตวิธีสร้าง PDF จากไฟล์ต้นฉบับ LTX
// ไดเร็กทอรีการทำงาน
String dataDir = "D:\\Files\\Tex\\";

// สร้างตัวเลือกการเรียงพิมพ์
TeXOptions options = TeXOptions.consoleAppOptions(TeXConfig.objectLaTeX());

// ระบุไดเร็กทอรีการทำงานของระบบไฟล์สำหรับอินพุต
options.setInputWorkingDirectory(new InputFileSystemDirectory(dataDir));

// ระบุไดเร็กทอรีการทำงานของระบบไฟล์สำหรับเอาต์พุต
options.setOutputWorkingDirectory(new OutputFileSystemDirectory(dataDir));

// ระบุสตรีมหน่วยความจำเป็นเทอร์มินัลเอาต์พุต
options.setTerminalOut(new OutputMemoryTerminal());

// ตั้งค่าตัวเลือกสำหรับการแสดงผลในรูปแบบ PDF
options.setSaveOptions(new PdfSaveOptions());

// เรียกใช้การเรียงพิมพ์
new TeXJob(dataDir + "sample.ltx", new PdfDevice(), options).run();

แปลง TeX เป็น XPS โดยใช้ Java

เรายังสามารถแปลงไฟล์ LaTeX (TeX) เป็น XPS ได้โดยทำตามขั้นตอนที่กล่าวถึงก่อนหน้านี้ อย่างไรก็ตาม เราเพียงแค่ต้องตั้งค่า XpsSaveOptions แทน PdfSaveOptions ที่ขั้นตอน # 5

ตัวอย่างโค้ดต่อไปนี้สาธิตวิธีแปลง TeX เป็น XPS โดยใช้ Java

// ตัวอย่างรหัสนี้สาธิตวิธีการแปลง Tex เป็น XPS
// ไดเร็กทอรีการทำงาน
String dataDir = "D:\\Files\\Tex\\";

// สร้างตัวเลือกการเรียงพิมพ์
TeXOptions options = TeXOptions.consoleAppOptions(TeXConfig.objectLaTeX());

// ระบุไดเร็กทอรีการทำงานของระบบไฟล์สำหรับอินพุต
options.setInputWorkingDirectory(new InputFileSystemDirectory(dataDir));

// ระบุไดเร็กทอรีการทำงานของระบบไฟล์สำหรับเอาต์พุต
options.setOutputWorkingDirectory(new OutputFileSystemDirectory(dataDir));

// ระบุสตรีมหน่วยความจำเป็นเทอร์มินัลเอาต์พุต
options.setTerminalOut(new OutputMemoryTerminal());

// ตั้งค่าตัวเลือกสำหรับการแสดงผลเป็นรูปแบบ XPS
options.setSaveOptions(new XpsSaveOptions());

// เรียกใช้การเรียงพิมพ์
new TeXJob(dataDir + "sample.tex", new PdfDevice(), options).run();

แปลง TeX ZIP Directory เป็น PDF ZIP Directory โดยใช้ Java

เราสามารถแปลงไฟล์ TeX หลายไฟล์ที่บีบอัดในไฟล์ ZIP เป็น PDF ได้ในคราวเดียวโดยทำตามขั้นตอนด้านล่าง:

  1. ประการแรก เปิดสตรีมในไฟล์เก็บถาวร ZIP เป็นไดเร็กทอรีการทำงานของอินพุตและเอาต์พุต
  2. จากนั้น สร้างอินสแตนซ์ของคลาส TeXOptions โดยใช้เมธอด consoleAppOptions()
  3. จากนั้นตั้งค่า TeX เป็น TeXConfig.objectLaTeX()
  4. ถัดไป ตั้งค่าไดเร็กทอรี ZIP อินพุตและเอาต์พุต
  5. จากนั้น ระบุคอนโซลหรือสตรีมหน่วยความจำเป็นเทอร์มินัลเอาต์พุต
  6. หลังจากนั้น ให้ตั้งค่าตัวเลือกสำหรับการแสดงผลเป็นรูปแบบ PDF
  7. สุดท้าย เรียกใช้เมธอด run() สำหรับอินสแตนซ์คลาส TexJob ที่สร้างขึ้นใหม่โดยมีเอาต์พุต PDF และอ็อบเจ็กต์คลาส PdfDevice เป็นอาร์กิวเมนต์

ตัวอย่างโค้ดต่อไปนี้สาธิตวิธีแปลงไฟล์เก็บถาวร TeX ZIP เป็นไฟล์เก็บถาวร PDF ZIP โดยใช้ Java

// ตัวอย่างโค้ดนี้สาธิตวิธีการแปลงไดเร็กทอรี TeX ZIP เป็นไดเร็กทอรี PDF ZIP
// ไดเร็กทอรีการทำงาน
String dataDir = "D:\\Files\\Tex\\";

// เปิดสตรีมในไฟล์ ZIP ซึ่งจะทำหน้าที่เป็นไดเร็กทอรีการทำงานของอินพุต
final InputStream inZipStream = new FileInputStream(dataDir + "files.zip");

// เปิดสตรีมในไฟล์เก็บถาวร ZIP ที่จะทำหน้าที่เป็นไดเร็กทอรีการทำงานของเอาต์พุต
final OutputStream outZipStream = new FileOutputStream(dataDir + "files-out.zip");

try {
    // สร้างตัวเลือกการแปลงสำหรับรูปแบบ ObjectTeX เริ่มต้นบนส่วนขยายเอ็นจิ้น ObjectTeX
    TeXOptions options = TeXOptions.consoleAppOptions(TeXConfig.objectLaTeX());

    // ระบุไดเร็กทอรีการทำงานของไฟล์ ZIP สำหรับอินพุต
    options.setInputWorkingDirectory(new InputZipDirectory(inZipStream, "files"));

    // ระบุไดเร็กทอรีการทำงานของไฟล์ ZIP สำหรับเอาต์พุต
    options.setOutputWorkingDirectory(new OutputZipDirectory(outZipStream));

    // ระบุคอนโซลเป็นเทอร์มินัลเอาต์พุต
    options.setTerminalOut(new OutputConsoleTerminal()); // Default. Not necessary to specify.

    // กำหนดตัวเลือกการออม
    options.setSaveOptions(new PdfSaveOptions());

    // เรียกใช้งาน
    TeXJob job = new TeXJob("sample", new PdfDevice(), options);
    job.run();

    // สำหรับผลลัพธ์ที่ตามมาเพื่อดูการเขียน 
    options.getTerminalOut().getWriter().newLine();

    // จบการเก็บถาวร ZIP เอาต์พุต
    ((OutputZipDirectory)options.getOutputWorkingDirectory()).finish();
} finally {
  outZipStream.close();
}
แปลงไฟล์เก็บถาวร TeX ZIP เป็นไฟล์ PDF ZIP

แปลงไฟล์เก็บถาวร TeX ZIP เป็นไฟล์ PDF ZIP

รับใบอนุญาตฟรี

คุณสามารถ รับใบอนุญาตชั่วคราวได้ฟรี เพื่อทดลองใช้ห้องสมุดโดยไม่มีข้อจำกัดในการประเมิน

บทสรุป

ในบทความนี้ เราได้เรียนรู้วิธีการ:

  • สร้างเอาต์พุต PDF จากไฟล์ต้นฉบับ LaTeX ใน Java
  • สร้างเอกสารเอาต์พุต XPS จากไฟล์ TeX โดยทางโปรแกรม
  • แปลงไฟล์เก็บถาวร TeX ZIP เป็นไฟล์เก็บถาวร PDF ZIP โดยใช้ Java

นอกจากนี้ คุณสามารถเรียนรู้เพิ่มเติมเกี่ยวกับ Aspose.TeX for Java API โดยใช้ เอกสารประกอบ ในกรณีที่มีความคลุมเครือ โปรดติดต่อเราได้ที่ ฟอรัม

ดูสิ่งนี้ด้วย