Java เปรียบเทียบไฟล์ Excel ด้วย Document Comparison API
บทนำ
เคยใช้เวลาหลายชั่วโมงเปรียบเทียบเอกสารด้วยตนเอง ทีละบรรทัดหรือไม่? ไม่ว่าจะเป็นการติดตามการแก้ไขสัญญา, การตรวจสอบเอกสารโค้ด, หรือ java compare excel files สำหรับรายงานการเงิน, การเปรียบเทียบเอกสารด้วยมือใช้เวลามากและเสี่ยงต่อข้อผิดพลาด
GroupDocs.Comparison for Java API จัดการปัญหานี้โดยอัตโนมัติด้วยความแม่นยำระดับศัลยกรรม คุณสามารถตรวจจับการเปลี่ยนแปลง, เพิกเฉยส่วนที่ไม่สำคัญเช่นส่วนหัวและส่วนท้าย, ปรับสไตล์การไฮไลท์, และสร้างรายงานการเปรียบเทียบระดับมืออาชีพ—ทั้งหมดนี้ทำผ่านโค้ด
ในคู่ฉบับเต็มนี้ คุณจะได้เรียนรู้วิธีนำ API การเปรียบเทียบเอกสารด้วย Java ไปใช้จริงที่ช่วยประหยัดชั่วโมงของงานมือและรับประกันว่าไม่มีอะไรพลาด เราจะครอบคลุมตั้งแต่การตั้งค่าเบื้องต้นจนถึงเทคนิคการปรับแต่งขั้นสูงที่ใช้ในสภาพแวดล้อมการผลิตจริง
คำตอบสั้น
- GroupDocs สามารถเปรียบเทียบไฟล์ Excel ใน Java ได้หรือไม่? ได้, เพียงโหลดไฟล์
.xlsxด้วยคลาสComparer - จะเพิกเฉยส่วนหัว/ส่วนท้ายได้อย่างไร? ตั้งค่า
setHeaderFootersComparison(false)ในCompareOptions - ไฟล์ PDF ขนาดใหญ่ทำอย่างไร? เพิ่มขนาด heap ของ JVM และเปิดใช้งานการเพิ่มประสิทธิภาพหน่วยความจำ
- เปรียบเทียบ PDF ที่มีรหัสผ่านได้หรือไม่? ให้รหัสผ่านเมื่อสร้าง
Comparer - มีวิธีเปลี่ยนสีไฮไลท์หรือไม่? ใช้
StyleSettingsสำหรับรายการที่เพิ่ม, ลบ, และแก้ไข
java compare excel files คืออะไร?
java compare excel files หมายถึงการตรวจจับความแตกต่างระหว่างเวิร์กบุ๊ค Excel สองไฟล์โดยใช้โค้ด Java. API ของ GroupDocs.Comparison จะอ่านเนื้อหาในสเปรดชีต, ประเมินการเปลี่ยนแปลงระดับเซลล์, และสร้างรายงาน diff ที่ไฮไลท์การเพิ่ม, การลบ, และการแก้ไข
ทำไมต้องใช้ Java Document Comparison API?
กรณีธุรกิจสำหรับการอัตโนมัติ
การเปรียบเทียบเอกสารด้วยมือไม่เพียงแต่น่าเบื่อ—ยังเสี่ยงต่อความผิดพลาดด้วย การศึกษาแสดงว่ามนุษย์พลาดการเปลี่ยนแปลงสำคัญประมาณ 20 % เมื่อเปรียบเทียบเอกสารด้วยตนเอง นี่คือเหตุผลที่นักพัฒนาหันไปใช้โซลูชันแบบโปรแกรม:
ปัญหาที่พบบ่อย:
- เสียเวลา: นักพัฒนาระดับสูงใช้เวลา 3–4 ชั่วโมงต่อสัปดาห์ในการตรวจสอบเอกสาร
- ข้อผิดพลาดของมนุษย์: พลาดการเปลี่ยนแปลงสำคัญในสัญญากฎหมายหรือสเปคเทคนิค
- มาตรฐานไม่สม่ำเสมอ: สมาชิกทีมต่างคนต่างไฮไลท์การเปลี่ยนแปลงแตกต่างกัน
- ปัญหาขนาด: การเปรียบเทียบเอกสารหลายร้อยไฟล์ด้วยมือเป็นไปไม่ได้
API ให้ผลลัพธ์:
- ความแม่นยำ 99.9 %: ตรวจจับการเปลี่ยนแปลงระดับอักขระทั้งหมดโดยอัตโนมัติ
- ความเร็ว: เปรียบเทียบเอกสาร 100+ หน้าในเวลาไม่ถึง 30 วินาที
- ความสม่ำเสมอ: ไฮไลท์และรายงานมาตรฐานเดียวกันสำหรับทุกการเปรียบเทียบ
- การบูรณาการ: ผสานเข้ากับ workflow ของ Java และ pipeline CI/CD ได้อย่างราบรื่น
เมื่อไหร่ควรใช้ Document Comparison API
API การเปรียบเทียบเอกสารด้วยนี้:
- การตรวจสอบเอกสารกฎหมาย – ติดตามการเปลี่ยนแปลงและการแก้ไขสัญญาโดยอัตโนมัติ
- เอกสารเทคนิค – ตรวจสอบการอัปเดต API documentation และ changelog
- การจัดการเนื้อหา – เปรียบเทียบบล็อกโพสต์, สื่อการตลาด, หรือคู่มือผู้ใช้
- การตรวจสอบความสอดคล้อง – ยืนยันว่าเอกสารนโยบายเป็นไปตามข้อกำหนดกฎระเบียบ
- การควบคุมเวอร์ชัน – เสริม Git ด้วย diff ของเอกสารที่มนุษย์อ่านได้
ฟอร์แมตไฟล์ที่รองรับและความสามารถ
GroupDocs.Comparison for Java รองรับกว่า 50 ฟอร์แมตไฟล์พร้อมใช้งาน:
ฟอร์แมตยอดนิยม:
- เอกสาร: Word (DOCX, DOC), PDF, RTF, ODT
- สเปรดชีต: Excel (XLSX, XLS), CSV, ODS
- พรีเซนเทชัน: PowerPoint (PPTX, PPT), ODP
- ไฟล์ข้อความ: TXT, HTML, XML, MD
- รูปภาพ: PNG, JPEG, BMP, GIF (เปรียบเทียบภาพ)
ฟีเจอร์ขั้นสูง:
- เปรียบเทียบเอกสารที่มีรหัสผ่าน
- ตรวจจับและเปรียบเทียบข้อความหลายภาษา
- ตั้งค่าความไวเฉพาะสำหรับประเภทเอกสารต่าง ๆ
- ประมวลผลเป็นชุดสำหรับคู่ไฟล์หลายคู่
- ตัวเลือกการปรับใช้บนคลาวด์และ on‑premise
ข้อกำหนดเบื้องต้นและการตั้งค่า
ความต้องการของระบบ
ก่อนเริ่มเขียนโค้ด ให้ตรวจสอบว่าสภาพแวดล้อมการพัฒนาตรงตามข้อกำหนดต่อไปนี้:
- Java Development Kit (JDK): เวอร์ชัน 8 หรือสูงกว่า (แนะนำ JDK 11+)
- เครื่องมือสร้าง: Maven 3.6+ หรือ Gradle 6.0+
- หน่วยความจำ: RAM ขั้นต่ำ 4 GB สำหรับการประมวลผลเอกสารขนาดใหญ่
- พื้นที่จัดเก็บ: ว่าง 500 MB+ สำหรับไฟล์เปรียบเทียบชั่วคราว
การกำหนดค่า Maven
เพิ่ม repository และ dependency ของ GroupDocs ลงใน pom.xml ของคุณ การตั้งค่านี้ทำให้คุณดึงไลบรารีจากช่องทางอย่างเป็นทางการ:
<repositories>
<repository>
<id>repository.groupdocs.com</id>
<name>GroupDocs Repository</name>
<url>https://releases.groupdocs.com/comparison/java/</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>com.groupdocs</groupId>
<artifactId>groupdocs-comparison</artifactId>
<version>25.2</version>
</dependency>
</dependencies>
การตั้งค่า License
สำหรับการพัฒนาและทดสอบ:
- ทดลองใช้ฟรี: ดาวน์โหลดจาก GroupDocs Downloads – ผลลัพธ์จะมีลายน้ำ
- License ชั่วคราว: รับสิทธิ์เต็ม 30 วันผ่าน GroupDocs Support
สำหรับการใช้งานจริง:
- License เต็ม: ซื้อผ่าน GroupDocs Purchase เพื่อใช้แบบไม่จำกัดในเชิงพาณิชย์
เมื่อคุณมีไฟล์ license แล้ว ให้เริ่มต้นดังนี้:
// License initialization - do this once at application startup
com.groupdocs.comparison.License license = new com.groupdocs.comparison.License();
license.setLicense("path/to/your/license/file.lic");
เคล็ดลับ: เก็บไฟล์ license ไว้ในโฟลเดอร์ resources ของแอปพลิเคชันและโหลดด้วย getClass().getResourceAsStream() เพื่อความพกพาข้ามสภาพแวดล้อมที่ดียิ่งขึ้น
คู่มือการใช้งานหลัก
ฟีเจอร์ 1: เพิกเฉยการเปรียบเทียบส่วนหัวและส่วนท้าย
เหตุผลที่สำคัญ: ส่วนหัวและส่วนท้ายมักมีข้อมูลไดนามิก เช่น เวลา, หมายเลขหน้า, หรือข้อมูลผู้เขียน ที่เปลี่ยนแปลงระหว่างเวอร์ชันแต่ไม่เกี่ยวกับการเปรียบเทียบเนื้อหา การเพิกเฉยส่วนเหล่านี้ช่วยลดสัญญาณรบกวนและโฟกัสที่การเปลี่ยนแปลงที่มีความหมาย
สถานการณ์จริง: คุณกำลังเปรียบเทียบเวอร์ชันสัญญาซึ่งแต่ละฉบับมีตราประทับวันที่ต่างกันในส่วนท้าย แต่คุณสนใจเฉพาะการแก้ไขข้อกำหนดในเนื้อหาหลักเท่านั้น
import com.groupdocs.comparison.Comparer;
import com.groupdocs.comparison.options.CompareOptions;
import java.io.FileOutputStream;
public class IgnoreHeaderFooterExample {
public static void main(String[] args) throws Exception {
String outputFileName = "YOUR_OUTPUT_DIRECTORY/IgnoreHeaderFooter_result.docx";
try (OutputStream resultStream = new FileOutputStream(outputFileName);
Comparer comparer = new Comparer("YOUR_DOCUMENT_DIRECTORY/source_with_footer.docx")) {
comparer.add("YOUR_DOCUMENT_DIRECTORY/target_with_footer.docx");
// Set comparison options to ignore headers and footers
CompareOptions compareOptions = new CompareOptions.Builder()
.setHeaderFootersComparison(false)
.build();
final Path resultPath = comparer.compare(resultStream, new SaveOptions(), compareOptions);
}
}
}
ประโยชน์หลัก:
- ผลลัพธ์ที่ชัดเจน – เน้นการเปลี่ยนแปลงของเนื้อหาแทนความแตกต่างของรูปแบบ
- ลด False Positives – กำจัดการแจ้งเตือนการเปลี่ยนแปลงที่ไม่เกี่ยวข้อง
- ประสิทธิภาพดีขึ้น – ข้ามขั้นตอนการเปรียบเทียบที่ไม่จำเป็น
ฟีเจอร์ 2: ตั้งค่าขนาดกระดาษของผลลัพธ์สำหรับรายงานระดับมืออาชีพ
บริบททางธุรกิจ: เมื่อสร้างรายงานการเปรียบเทียบเพื่อพิมพ์หรือแจกจ่ายเป็น PDF การควบคุมขนาดกระดาษทำให้รูปแบบคงที่บนแพลตฟอร์มและเครื่องพิมพ์ต่าง ๆ
กรณีใช้งาน: ทีมกฎหมายมักต้องการรายงานเปรียบเทียบในรูปแบบเฉพาะสำหรับการยื่นต่อศาลหรือการนำเสนอให้ลูกค้า
import com.groupdocs.comparison.Comparer;
import com.groupdocs.comparison.options.CompareOptions;
import com.groupdocs.comparison.options.enums.PaperSize;
public class SetOutputPaperSizeExample {
public static void main(String[] args) throws Exception {
String outputFileName = "YOUR_OUTPUT_DIRECTORY/SetOutputPaperSize_result.docx";
try (OutputStream resultStream = new FileOutputStream(outputFileName);
Comparer comparer = new Comparer("YOUR_DOCUMENT_DIRECTORY/source_word.docx")) {
comparer.add("YOUR_DOCUMENT_DIRECTORY/target1_word.docx");
// Set the paper size to A6
CompareOptions compareOptions = new CompareOptions.Builder()
.setPaperSize(PaperSize.A6)
.build();
final Path resultPath = comparer.compare(resultStream, compareOptions);
}
}
}
ขนาดกระดาษที่รองรับ: A0‑A10, Letter, Legal, Tabloid, และขนาดกำหนดเอง เลือกตามความต้องการของผู้รับ – A4 สำหรับลูกค้าในยุโรป, Letter สำหรับทีมในสหรัฐอเมริกา
ฟีเจอร์ 3: ปรับความไวของการเปรียบเทียบอย่างละเอียด
ความท้าทาย: ประเภทเอกสารต่าง ๆ ต้องการระดับการตรวจจับการเปลี่ยนแปลงที่แตกต่างกัน สัญญากฎหมายต้องการตรวจจับทุกคอมม่า ส่วนสื่อการตลาดอาจสนใจแค่การเปลี่ยนแปลงที่สำคัญ
วิธีทำงานของ Sensitivity: สเกลความไวอยู่ระหว่าง 0‑100, ค่าที่สูงกว่าจะตรวจจับการเปลี่ยนแปลงที่ละเอียดมากขึ้น:
- 0‑25: การเปลี่ยนแปลงใหญ่เท่านั้น (เพิ่ม/ลบย่อหน้า)
- 26‑50: การเปลี่ยนแปลงระดับกลาง (แก้ไขประโยค)
- 51‑75: การเปลี่ยนแปลงละเอียด (แก้ไขคำ)
- 76‑100: การเปลี่ยนแปลงระดับอักขระ
import com.groupdocs.comparison.Comparer;
import com.groupdocs.comparison.options.CompareOptions;
public class AdjustComparisonSensitivityExample {
public static void main(String[] args) throws Exception {
String outputFileName = "YOUR_OUTPUT_DIRECTORY/AdjustComparisonSensitivity_result.docx";
try (OutputStream resultStream = new FileOutputStream(outputFileName);
Comparer comparer = new Comparer("YOUR_DOCUMENT_DIRECTORY/source_word.docx")) {
comparer.add("YOUR_DOCUMENT_DIRECTORY/target1_word.docx");
// Set sensitivity to 100 for maximum detail
CompareOptions compareOptions = new CompareOptions.Builder()
.setSensitivityOfComparison(100)
.build();
final Path resultPath = comparer.compare(resultStream, compareOptions);
}
}
}
แนวทางปฏิบัติสำหรับการตั้งค่า Sensitivity:
- เอกสารกฎหมาย: ใช้ 90‑100 เพื่อการตรวจจับครบถ้วน
- เนื้อหาการตลาด: ใช้ 40‑60 เพื่อโฟกัสที่การเปลี่ยนแปลงสำคัญ
- สเปคเทคนิค: ใช้ 70‑80 เพื่อจับรายละเอียดสำคัญพร้อมกรองการเปลี่ยนแปลงรูปแบบเล็กน้อย
ฟีเจอร์ 4: ปรับสไตล์การเปลี่ยนแปลงเพื่อการสื่อสารที่ดียิ่งขึ้น
เหตุผลที่สไตล์สำคัญ: ไฮไลท์ค่าเริ่มต้นอาจไม่สอดคล้องกับมาตรฐานการตรวจสอบของทีมหรือแบรนด์ขององค์กร สไตล์ที่ปรับแต่งช่วยให้เอกสารอ่านง่ายและทำให้ผู้มีส่วนได้ส่วนเสียระบุประเภทการเปลี่ยนแปลงได้เร็วขึ้น
แนวทางระดับมืออาชีพ: ใช้จิตวิทยาสี – สีแดงสำหรับการลบสร้างความเร่งด่วน, สีเขียวสำหรับการเพิ่มบ่งบอกถึงการพัฒนา, สีฟ้าสำหรับการแก้ไขบ่งบอกว่าต้องตรวจสอบ
import com.groupdocs.comparison.Comparer;
import com.groupdocs.comparison.options.CompareOptions;
import com.groupdocs.comparison.options.save.SaveOptions;
import com.groupdocs.comparison.options.style.StyleSettings;
import java.awt.Color;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
public class CustomizeChangesStylesStreamExample {
public static void main(String[] args) throws Exception {
String outputFileName = "YOUR_OUTPUT_DIRECTORY/CustomizeChangesStylesStream_result.docx";
try (InputStream sourceFile = new FileInputStream("YOUR_DOCUMENT_DIRECTORY/source_word.docx");
InputStream targetFile = new FileInputStream("YOUR_DOCUMENT_DIRECTORY/target1_word.docx");
OutputStream resultStream = new FileOutputStream(outputFileName);
Comparer comparer = new Comparer(sourceFile)) {
comparer.add(targetFile);
// Customize change styles for professional appearance
StyleSettings insertedStyle = new StyleSettings();
insertedStyle.setHighlightColor(Color.GREEN); // Green for additions
StyleSettings deletedStyle = new StyleSettings();
deletedStyle.setHighlightColor(Color.RED); // Red for deletions
StyleSettings changedStyle = new StyleSettings();
changedStyle.setHighlightColor(Color.BLUE); // Blue for modifications
CompareOptions compareOptions = new CompareOptions.Builder()
.setInsertedItemStyle(insertedStyle)
.setDeletedItemStyle(deletedStyle)
.setChangedItemStyle(changedStyle)
.build();
final Path resultPath = comparer.compare(resultStream, compareOptions);
}
}
}
ตัวเลือกสไตล์ขั้นสูง (มีใน StyleSettings):
- ปรับน้ำหนัก, ขนาด, และฟอนต์
- สีพื้นหลังและความโปร่งใส
- สไตล์เส้นขอบสำหรับประเภทการเปลี่ยนแปลงต่าง ๆ
- ตัวเลือก strike‑through สำหรับเนื้อหาที่ลบ
ปัญหาที่พบบ่อยและการแก้ไข
การจัดการหน่วยความจำสำหรับเอกสารขนาดใหญ่
ปัญหา: OutOfMemoryError เมื่อเปรียบเทียบเอกสารที่มีขนาดเกิน 50 MB
วิธีแก้: เพิ่มขนาด heap ของ JVM และใช้การสตรีมข้อมูล
# Increase heap size for large document processing
java -Xmx4g -XX:MaxMetaspaceSize=512m YourComparisonApp
การปรับโค้ดเพื่อประสิทธิภาพ:
// Use streaming for memory efficiency
try (Comparer comparer = new Comparer(sourceStream)) {
// Process in chunks for very large documents
CompareOptions options = new CompareOptions.Builder()
.setMemoryOptimization(true) // Enable memory optimization
.build();
}
การจัดการไฟล์เสียหายหรือไฟล์ที่มีรหัสผ่าน
ปัญหา: การเปรียบเทียบล้มเหลวกับไฟล์ที่ล็อกไว้
กลยุทธ์ป้องกัน:
// Check document accessibility before comparison
try {
Comparer comparer = new Comparer(sourceFile, "password123");
// Document loaded successfully, proceed with comparison
} catch (PasswordRequiredException ex) {
// Handle password‑protected documents
log.error("Document requires password: " + sourceFile);
} catch (CorruptedFileException ex) {
// Handle corrupted files gracefully
log.error("File corruption detected: " + sourceFile);
}
การเพิ่มประสิทธิภาพสำหรับการประมวลผลเป็นชุด
ความท้าทาย: ประมวลผลคู่ไฟล์ 100+ คู่อย่างมีประสิทธิภาพ
วิธีแก้: ใช้การประมวลผลแบบขนานกับ thread pool
ExecutorService executor = Executors.newFixedThreadPool(4);
List<Future<ComparisonResult>> futures = new ArrayList<>();
for (DocumentPair pair : documentPairs) {
futures.add(executor.submit(() -> compareDocuments(pair)));
}
// Wait for all comparisons to complete
for (Future<ComparisonResult> future : futures) {
ComparisonResult result = future.get();
// Process results
}
executor.shutdown();
ปัญหาเฉพาะฟอร์แมต
ความท้าทายในการเปรียบเทียบ PDF:
- PDF สแกน: ใช้ OCR ก่อนเพื่อดึงข้อความ
- เลย์เอาต์ซับซ้อน: อาจต้องปรับ Sensitivity ด้วยตนเอง
- ฟอนต์ฝัง: ตรวจสอบให้ฟอนต์แสดงผลสม่ำเสมอในทุกสภาพแวดล้อม
ปัญหาในเอกสาร Word:
- Track Changes: ปิดการติดตามการเปลี่ยนแปลงก่อนทำการเปรียบเทียบ
- วัตถุฝัง: อาจไม่เปรียบเทียบได้อย่างถูกต้อง, ควรแยกและเปรียบเทียบแยกส่วน
- ความเข้ากันได้ของเวอร์ชัน: ทดสอบกับฟอร์แมต Word รุ่นต่าง ๆ
แนวทางปฏิบัติที่ดีที่สุดและเคล็ดลับประสิทธิภาพ
1. การเตรียมเอกสารล่วงหน้า
ทำความสะอาดอินพุต: ลบเมตาดาต้าและฟอร์แมตที่ไม่จำเป็นก่อนเปรียบเทียบเพื่อเพิ่มความแม่นยำและความเร็ว
// Example preprocessing workflow
public void preprocessDocument(String filePath) {
// Remove comments and tracked changes
// Standardize formatting
// Extract text‑only version for pure content comparison
}
2. การกำหนดค่าที่เหมาะสมสำหรับประเภทเอกสารต่าง ๆ
โปรไฟล์การกำหนดค่า:
public class ComparisonProfiles {
public static CompareOptions getLegalDocumentProfile() {
return new CompareOptions.Builder()
.setSensitivityOfComparison(95)
.setHeaderFootersComparison(false)
.setShowRevisions(true)
.build();
}
public static CompareOptions getMarketingContentProfile() {
return new CompareOptions.Builder()
.setSensitivityOfComparison(45)
.setIgnoreFormatting(true)
.setFocusOnContent(true)
.build();
}
}
3. การจัดการข้อผิดพลาดและการบันทึก
การจัดการข้อผิดพลาดอย่างแข็งแรง:
public ComparisonResult safeCompareDocuments(String source, String target) {
try {
return performComparison(source, target);
} catch (Exception ex) {
logger.error("Comparison failed for {} vs {}: {}", source, target, ex.getMessage());
return ComparisonResult.failure(ex.getMessage());
}
}
4. การแคชและการเพิ่มประสิทธิภาพ
นำแคชอัจฉริยะมาใช้:
- แคชผลลัพธ์การเปรียบเทียบสำหรับคู่ไฟล์ที่เหมือนกัน
- เก็บ fingerprint ของเอกสารเพื่อหลีกเลี่ยงการประมวลผลไฟล์ที่ไม่ได้เปลี่ยนแปลง
- ใช้การประมวลผลแบบอะซิงโครนัสสำหรับการเปรียบเทียบที่ไม่สำคัญต่อเวลา
สถานการณ์การบูรณาการในโลกจริง
สถานการณ์ที่ 1: ระบบตรวจสอบสัญญาอัตโนมัติ
@Service
public class ContractReviewService {
public void processContractRevision(String originalContract, String revisedContract) {
CompareOptions legalOptions = ComparisonProfiles.getLegalDocumentProfile();
try (Comparer comparer = new Comparer(originalContract)) {
comparer.add(revisedContract);
Path result = comparer.compare(generateOutputPath(), legalOptions);
// Send comparison report to legal team
emailService.sendComparisonReport(result, legalTeamEmails);
// Log changes for audit trail
auditService.logDocumentChanges(extractChanges(result));
}
}
}
สถานการณ์ที่ 2: การบูรณาการกับระบบจัดการเนื้อหา (CMS)
@RestController
public class DocumentComparisonController {
@PostMapping("/api/documents/compare")
public ResponseEntity<ComparisonReport> compareDocuments(
@RequestParam("source") MultipartFile source,
@RequestParam("target") MultipartFile target,
@RequestParam(value = "sensitivity", defaultValue = "75") int sensitivity) {
CompareOptions options = new CompareOptions.Builder()
.setSensitivityOfComparison(sensitivity)
.build();
ComparisonReport report = documentComparisonService.compare(source, target, options);
return ResponseEntity.ok(report);
}
}
คำถามที่พบบ่อย
Q: สามารถเพิกเฉยส่วนหัวและส่วนท้ายระหว่างการเปรียบเทียบใน GroupDocs for Java ได้หรือไม่?
A: ได้, ใช้ setHeaderFootersComparison(false) ใน CompareOptions ซึ่งเหมาะกับหัวที่มีข้อมูลไดนามิกเช่น timestamp ที่ไม่เกี่ยวข้องกับการเปลี่ยนแปลงหลัก
Q: จะตั้งค่าขนาดกระดาษของผลลัพธ์ใน Java ด้วย GroupDocs อย่างไร?
A: ใช้ setPaperSize(PaperSize.A6) (หรือค่าคงที่อื่น) ใน CompareOptions เพื่อสร้างรายงานพร้อมพิมพ์ ขนาดที่รองรับรวมถึง A0‑A10, Letter, Legal, และ Tabloid
Q: สามารถปรับความไวของการเปรียบเทียบให้เหมาะกับประเภทเอกสารต่าง ๆ ได้หรือไม่?
A: แน่นอน. ใช้ setSensitivityOfComparison() พร้อมค่าตั้งแต่ 0‑100 ค่าที่สูงจะตรวจจับการเปลี่ยนแปลงที่ละเอียดมากขึ้น – เหมาะกับเอกสารกฎหมาย; ค่าต่ำเหมาะกับเนื้อหาการตลาด
Q: สามารถปรับสไตล์ของข้อความที่เพิ่ม, ลบ, และแก้ไขระหว่างการเปรียบเทียบได้หรือไม่?
A: ได้. สร้าง StyleSettings แบบกำหนดเองสำหรับแต่ละประเภทการเปลี่ยนแปลงและนำไปใช้ผ่าน CompareOptions คุณสามารถปรับสีไฮไลท์, ฟอนต์, เส้นขอบ, และอื่น ๆ ให้สอดคล้องกับแบรนด์ของคุณ
Q: ต้องมีข้อกำหนดเบื้องต้นอะไรบ้างเพื่อเริ่มต้นใช้ GroupDocs Comparison ใน Java?
A: ต้องมี JDK 8+ (แนะนำ JDK 11+), Maven 3.6+ หรือ Gradle 6.0+, RAM อย่างน้อย 4 GB สำหรับเอกสารขนาดใหญ่, และไลเซนส์ของ GroupDocs (มีเวอร์ชันทดลองฟรี). เพิ่ม repository และ dependency ลงในโปรเจกต์, จากนั้นเริ่มต้นไลเซนส์ที่เวลาเริ่มต้นแอปพลิเคชัน
Q: จะจัดการกับเอกสารที่มีรหัสผ่านใน GroupDocs.Comparison อย่างไร?
A: ส่งรหัสผ่านเป็นอาร์กิวเมนต์ที่สองเมื่อสร้าง Comparer: new Comparer(sourceFile, "password123"). ควรห่อการเรียกในบล็อก try‑catch เพื่อจัดการ PasswordRequiredException อย่างเหมาะสม
Q: GroupDocs.Comparison for Java รองรับฟอร์แมตไฟล์อะไรบ้าง?
A: รองรับมากกว่า 50 ฟอร์แมตรวมถึง Word (DOCX, DOC), PDF, Excel (XLSX, XLS), PowerPoint (PPTX, PPT), ไฟล์ข้อความ (TXT, HTML, XML), และรูปภาพ (PNG, JPEG) สำหรับการเปรียบเทียบภาพ API จะตรวจจับประเภทโดยอัตโนมัติ, แต่คุณสามารถระบุฟอร์แมตเพื่อเพิ่มประสิทธิภาพการประมวลผลเป็นชุดได้
อัปเดตล่าสุด: 2025-12-31
ทดสอบกับ: GroupDocs.Comparison 25.2 for Java
ผู้เขียน: GroupDocs