วิธีการรวม PDF และ DOCX และแปลง DOCX เป็น PDF ใน Java

ในบทแนะนำนี้คุณจะได้ค้นพบวิธี รวมไฟล์ PDF และ DOCX และ แปลง DOCX เป็น PDF ด้วย GroupDocs.Merger สำหรับ Java คุณจะเห็นวิธีโหลดเอกสารจากสตรีม, จัดการข้อมูลหลายกิกะไบต์, และสร้างผลลัพธ์เดียวที่สามารถบันทึกลงดิสก์, ส่งให้ลูกค้า, หรือเก็บไว้ในคลาวด์ได้ เมื่อจบคุณจะมีโค้ดสั้นที่พร้อมใช้งานซึ่งสามารถนำไปใช้ในเว็บเซอร์วิส, งานแบตช์, หรือสถาปัตยกรรมไมโครเซอร์วิสใด ๆ

คำตอบอย่างรวดเร็ว

  • วิธีหลักในการบันทึกเอกสารที่รวมใน Java คืออะไร? เรียก Merger.save(OutputStream) หลังจากเพิ่มไฟล์ต้นฉบับทั้งหมด
  • GroupDocs.Merger สามารถรวมไฟล์รูปแบบต่าง ๆ ได้หรือไม่? ใช่ – รองรับรูปแบบอินพุตและเอาต์พุตกว่า 30 รูปแบบ รวมถึง DOCX, PDF, PPTX, XLSX, และหลายประเภทของภาพ
  • ฉันจะโหลดเอกสารจาก InputStream อย่างไร? สร้างอินสแตนซ์ Merger ด้วยสตรีม: new Merger(stream)
  • ฉันควรทำอย่างไรกับเอกสารขนาดใหญ่? ใช้ buffered streams, ประมวลผลไฟล์เป็นชุด, และปิดสตรีมแต่ละอันโดยเร็วเพื่อรักษาการใช้หน่วยความจำให้ต่ำ
  • ต้องใช้ใบอนุญาตสำหรับการใช้งานในโปรดักชันหรือไม่? ใช่ – ใบอนุญาต GroupDocs ที่ถูกต้องจะเปิดใช้งานฟังก์ชันเต็มและลบลายน้ำการประเมินผล

การรวม PDF และ DOCX คืออะไร?

การรวม PDF และ DOCX หมายถึงการผสานไฟล์ PDF หรือเอกสาร Word หนึ่งหรือหลายไฟล์เป็นไฟล์เดียวโดยคงลำดับหน้า, เมตาดาต้า, และความแม่นยำของภาพของแต่ละแหล่งต้นทางไว้ ด้วย GroupDocs.Merger คุณยังสามารถใช้การรวมเป็นวิธีที่รวดเร็วในการ แปลง DOCX เป็น PDF โดยเพิ่มเนื้อหา DOCX ลงในคอนเทนเนอร์ PDF แล้วบันทึกผลลัพธ์เป็น PDF

ทำไมต้องใช้ GroupDocs.Merger เพื่อรวมไฟล์รูปแบบต่าง ๆ?

GroupDocs.Merger ทำให้ซับซ้อนระดับต่ำของแต่ละรูปแบบเป็นนามธรรม ช่วยให้คุณมุ่งเน้นที่กฎธุรกิจ ไลบรารีสามารถประมวลผล รูปแบบกว่า 30 รองรับไฟล์ขนาดถึง 500 MB โดยไม่ต้องโหลดเอกสารทั้งหมดเข้าสู่หน่วยความจำ และรับประกันว่าการจัดหน้า, ส่วนหัว, และส่วนท้ายจะคงอยู่ครบถ้วนในผลลัพธ์ที่รวม

ข้อกำหนดเบื้องต้น

  • ไลบรารี GroupDocs.Merger สำหรับ Java
  • Java 8+ (JDK 8 หรือสูงกว่า)
  • Maven หรือ Gradle สำหรับการจัดการ dependencies
  • IDE เช่น IntelliJ IDEA หรือ Eclipse
  • ใบอนุญาต GroupDocs ที่ถูกต้องสำหรับการใช้งานในโปรดักชัน (มีการทดลองใช้ฟรี)

การตั้งค่า GroupDocs.Merger สำหรับ Java

Maven

เพิ่ม dependency ต่อไปนี้ในไฟล์ pom.xml ของคุณ:

<dependency>
    <groupId>com.groupdocs</groupId>
    <artifactId>groupdocs-merger</artifactId>
    <version>latest-version</version>
</dependency>

Gradle

ในไฟล์ build.gradle ของคุณ ให้เพิ่ม:

implementation 'com.groupdocs:groupdocs-merger:latest-version'

Direct download

หรือคุณสามารถดาวน์โหลดเวอร์ชันล่าสุดจาก GroupDocs.Merger for Java releases และเพิ่มด้วยตนเองไปยัง classpath ของโปรเจคของคุณ

ขั้นตอนการรับใบอนุญาต

  1. Free trial – สำรวจคุณสมบัติหลักโดยไม่ต้องใช้บัตรเครดิต
  2. Temporary license – ขอคีย์ระยะสั้นบน temporary license page (temporary license page)
  3. Full purchase – รับใบอนุญาตการผลิตไม่จำกัดสำหรับการใช้งานเชิงพาณิชย์ คุณสามารถซื้อใบอนุญาตเต็มได้โดยตรงจาก GroupDocs (GroupDocs)

การเริ่มต้นพื้นฐาน

คลาส Merger เป็นจุดเริ่มต้นสำหรับทุกการดำเนินการ; มันแสดงถึงเซสชันการรวมเดียว หลังจากเพิ่มไลบรารีแล้ว ให้สร้างอินสแตนซ์ Merger:

import com.groupdocs.merger.Merger;

// Initialize GroupDocs Merger
erMerger = new Merger("YOUR_DOCUMENT_DIRECTORY/SAMPLE_DOCX");

วิธีโหลดเอกสารจากสตรีม?

การโหลดเอกสารจาก InputStream ทำให้คุณสามารถทำงานกับไฟล์ที่มาจากการอัปโหลด HTTP, bucket ของคลาวด์, หรือการสร้างในหน่วยความจำ InputStream เป็นนามธรรมของ Java ที่อ่านไบต์จากแหล่งเช่นไฟล์, ซ็อกเก็ตเครือข่าย, หรือบัฟเฟอร์หน่วยความจำ ทำให้ไลบรารีประมวลผลข้อมูลโดยไม่ต้องสร้างไฟล์ชั่วคราวบนดิสก์ วิธีนี้ลดภาระ I/O และปรับปรุงประสิทธิภาพในบริการที่มีการส่งข้อมูลสูง

ขั้นตอนที่ 1 – สร้าง input stream

import java.io.FileInputStream;
import java.io.InputStream;

InputStream stream = new FileInputStream("YOUR_DOCUMENT_DIRECTORY/SAMPLE_DOCX");

ทำไม? สตรีมแปลงไฟล์จริงเป็นลำดับไบต์ที่ Merger สามารถอ่านได้โดยไม่ต้องบันทึกลงดิสก์

ขั้นตอนที่ 2 – เริ่มต้น Merger ด้วยสตรีม

Merger merger = new Merger(stream);

ทำไม? การให้สตรีมทำให้สามารถประมวลผลในหน่วยความจำ ซึ่งเหมาะกับฟังก์ชันแบบ serverless หรือ API ที่มีการส่งข้อมูลสูง

วิธีบันทึกเอกสารที่รวมใน Java?

หลังจากการรวม คุณต้องบันทึกเนื้อหาที่รวมไว้ไปยังปลายทางที่คุณเลือก OutputStream เป็นนามธรรมของ Java ที่เขียนไบต์ไปยังเป้าหมายเช่นไฟล์, ซ็อกเก็ตเครือข่าย, หรือบัฟเฟอร์ในหน่วยความจำ ให้ความยืดหยุ่นในการส่งเอกสารที่รวมไว้ การให้ OutputStream กับ Merger.save จะทำให้ PDF หรือ DOCX สุดท้ายถูกเขียนอย่างมีประสิทธิภาพและปลอดภัย

ขั้นตอนที่ 1 – กำหนด output stream

import java.io.FileOutputStream;
import java.io.OutputStream;

OutputStream outputStream = new FileOutputStream("YOUR_OUTPUT_DIRECTORY/merged_output.docx");

ทำไม? OutputStream บอก Java ว่าไฟล์ที่รวมควรเขียนไปที่ไหน ไม่ว่าจะเป็นดิสก์, body ของ response, หรือคลาวด์สตอเรจ

ขั้นตอนที่ 2 – บันทึกเอกสาร

merger.save(outputStream);

ทำไม? save() สรุปการรวม, ทำการ flush บัฟเฟอร์, และทำให้แน่ใจว่าผลลัพธ์สอดคล้องกับสเปคของรูปแบบที่เลือก

ขั้นตอนที่ 3 – ปิดสตรีม

outputStream.close();

ทำไม? การปิดจะปล่อย handle ของ OS และรับประกันว่าไบต์ที่บัฟเฟอร์ทั้งหมดจะถูกบันทึก, ป้องกันการเสียหายของไฟล์

วิธีจัดการกับเอกสารขนาดใหญ่ใน Java?

PDF ขนาดใหญ่หรือไฟล์ Word ขนาดหลายกิกะไบต์อาจทำให้ heap ของ JVM หมด หากโหลดอย่างไม่ระมัดระวัง เพื่อควบคุมการใช้หน่วยความจำ ให้ห่อสตรีมดิบด้วย BufferedInputStream และ BufferedOutputStream, ประมวลผลไฟล์เป็นชุดที่จัดการได้, และเรียก Merger.close() หลังจากแต่ละการดำเนินการเพื่อปล่อยทรัพยากร native การตรวจสอบการใช้ heap และตั้งค่า -Xmx ที่เหมาะสม (เป้าหมาย ≤70 % ของหน่วยความจำที่มี) จะช่วยป้องกันข้อผิดพลาด out‑of‑memory

การประยุกต์ใช้งานจริง

GroupDocs.Merger เหมาะสำหรับงานจริงเช่น:

  1. Batch report generation – รวมไฟล์ Excel (XLSX) ที่ส่งออกประจำวันและสรุป Word (DOCX) เป็น PDF เดียวเพื่อการเก็บถาวร
  2. Dynamic invoice creation – รวมเทมเพลตใบแจ้งหนี้ PDF กับเอกสารเงื่อนไข (DOCX) แล้วส่ง PDF สุดท้ายให้ลูกค้า
  3. Cross‑platform services – เปิดเผย REST endpoint ที่รับไฟล์อัปโหลดรูปแบบผสม, รวมไฟล์เหล่านั้น, และสตรีมผลลัพธ์กลับโดยไม่ต้องเก็บไฟล์ชั่วคราว

พิจารณาด้านประสิทธิภาพ

  • Memory management – ปิดสตรีมเสมอ; ไลบรารีใช้บัฟเฟอร์ native ที่ต้องปล่อย
  • Batch operations – การจัดกลุ่มไฟล์ลดจำนวนการ seek ของดิสก์และเพิ่มอัตราการทำงานสูงสุดถึง 30 %
  • Efficient I/O – สำหรับไฟล์ที่ใหญ่กว่า 10 MB, การใช้ I/O แบบบัฟเฟอร์สามารถลดเวลาประมวลผลลงประมาณครึ่งหนึ่ง

ปัญหาที่พบบ่อยและวิธีแก้

ปัญหาสาเหตุวิธีแก้
FileNotFoundExceptionเส้นทางไม่ถูกต้องหรือไม่มีสิทธิ์เพียงพอตรวจสอบเส้นทางแบบ absolute/relative และให้แน่ใจว่าแอปมีสิทธิ์อ่าน/เขียน
IOException during saveสตรีมไม่ได้ปิดหรือดิสก์เต็มใช้ try‑with‑resources, ปิดสตรีม, และตรวจสอบพื้นที่ดิสก์ที่มี
Memory spikes with large PDFsไฟล์ทั้งหมดถูกโหลดเข้าสู่หน่วยความจำเปลี่ยนไปใช้ buffered streams และประมวลผลเป็นชุดเล็ก ๆ

คำถามที่พบบ่อย

Q: ฉันสามารถรวมไฟล์รูปแบบต่าง ๆ ด้วย GroupDocs.Merger ได้หรือไม่?
A: ใช่, ไลบรารีรองรับรูปแบบกว่า 30 รูปแบบ—รวมถึง DOCX, PDF, PPTX, XLSX, และรูปแบบภาพทั่วไป—ทำให้การรวมข้ามรูปแบบเป็นไปอย่างราบรื่น

Q: ฉันจะจัดการกับเอกสารขนาดใหญ่อย่างมีประสิทธิภาพอย่างไร?
A: ห่อสตรีมไฟล์ของคุณด้วย BufferedInputStream/BufferedOutputStream, รวมไฟล์เป็นชุด, และปิดสตรีมแต่ละอันทันทีหลังการใช้

Q: มีการสนับสนุนไฟล์ที่ป้องกันด้วยรหัสผ่านหรือไม่?
A: แน่นอน. ให้รหัสผ่านเมื่อสร้างอินสแตนซ์ Merger เพื่อเปิดไฟล์ PDF หรือ DOCX ที่เข้ารหัส

Q: ฉันสามารถใช้ไลบรารีนี้ในผลิตภัณฑ์เชิงพาณิชย์ได้หรือไม่?
A: ได้, ใบอนุญาต GroupDocs ที่ถูกต้องจะเปิดใช้งานความสามารถเต็มรูปแบบสำหรับการผลิตโดยไม่มีลายน้ำการประเมินผล

Q: ฉันควรทำอย่างไรหากพบ IOException?
A: ตรวจสอบเส้นทางไฟล์อีกครั้ง, ให้แน่ใจว่ากระบวนการมีสิทธิ์เพียงพอ, ตรวจสอบพื้นที่ดิสก์, และห่อการเรียก I/O ด้วยบล็อก try‑catch หรือใช้ try‑with‑resources

แหล่งข้อมูล


อัปเดตล่าสุด: 2026-10-11
ทดสอบกับ: GroupDocs.Merger latest version (as of 2026)
ผู้เขียน: GroupDocs


บทแนะนำที่เกี่ยวข้อง