เปรียบเทียบเอกสารใน Java – คู่มือเต็มของ GroupDocs API
บทนำ
เคยพบว่าตัวเองต้องเปรียบเทียบเอกสารสองไฟล์ด้วยตนเองทีละบรรทัด แล้วพลาดความแตกต่างที่สำคัญหรือไม่? คุณไม่ได้เป็นคนเดียว compare documents in java เป็นความท้าทายทั่วไป โดยเฉพาะเมื่อคุณต้องการรักษา metadata, จัดการไฟล์ที่มีการป้องกันด้วยรหัสผ่าน, หรือเปรียบเทียบไฟล์จำนวนมากพร้อมกัน
Here’s the thing: ส่วนใหญ่ของนักพัฒนาต้องเผชิญกับปัญหาเพราะพวกเขาหรือสร้างสิ่งใหม่จากศูนย์ (ซึ่งใช้เวลานาน) หรือใช้เครื่องมือ diff พื้นฐานที่ละเลยการจัดรูปแบบ, metadata, และการตั้งค่าความปลอดภัย. นั่นคือจุดที่ GroupDocs.Comparison for Java เข้ามาช่วย
ในบทแนะนำที่ครอบคลุมนี้ คุณจะได้ค้นพบวิธีการทำการเปรียบเทียบเอกสารอย่างแข็งแรงในแอปพลิเคชัน Java ของคุณ เราจะครอบคลุมทุกอย่างตั้งแต่การตั้งค่าเบื้องต้นจนถึงการจัดการ metadata ขั้นสูง พร้อมตัวอย่างจากโลกจริงที่คุณสามารถใช้ในการผลิตได้จริง เมื่อจบคุณจะรู้วิธี:
- ตั้งค่า GroupDocs.Comparison ในโปรเจกต์ Java ของคุณ (ง่ายกว่าที่คิด)
- compare documents in java พร้อมรักษาความสมบูรณ์ของ metadata
- จัดการสถานการณ์ java compare multiple files และ java compare password protected
- ปรับประสิทธิภาพสำหรับการประมวลผลเอกสารขนาดใหญ่
พร้อมที่จะทำให้การเปรียบเทียบเอกสารเป็นเรื่องง่ายในแอป Java ของคุณหรือยัง? ไปดูกันเลย!
คำตอบอย่างรวดเร็ว
- ไลบรารีใดที่ให้ฉันเปรียบเทียบเอกสารใน java? GroupDocs.Comparison for Java
- ฉันสามารถเปรียบเทียบหลายไฟล์พร้อมกันได้หรือไม่? ใช่ – เพิ่มเอกสารเป้าหมายได้ตามต้องการ
- ฉันจะจัดการเอกสารที่ป้องกันด้วยรหัสผ่านอย่างไร? ใช้
LoadOptionsพร้อมรหัสผ่านของเอกสาร - ฉันต้องการไลเซนส์สำหรับการผลิตหรือไม่? ไลเซนส์ GroupDocs ที่ถูกต้องจะลบลายน้ำและข้อจำกัด
- ต้องการเวอร์ชัน Java ใด? JDK 8+, แนะนำ JDK 11+
คือ compare documents in java คืออะไร?
การเปรียบเทียบเอกสารใน Java หมายถึงการตรวจจับความแตกต่างแบบโปรแกรมเมติก—การเปลี่ยนแปลงข้อความ, การแก้ไขรูปแบบ, หรือการอัปเดต metadata—ระหว่างสองไฟล์หรือมากกว่าโดยใช้ไลบรารีที่เข้าใจโครงสร้างของเอกสาร GroupDocs.Comparison แยกความซับซ้อนออกให้คุณด้วย API ที่ง่ายต่อการสร้างเอกสาร diff ที่ไฮไลท์การเปลี่ยนแปลงทุกอย่าง
ทำไมต้องใช้ GroupDocs.Comparison for Java?
- รองรับฟอร์แมตหลากหลาย – DOCX, PDF, XLSX, PPTX, TXT, และอื่น ๆ
- จัดการ Metadata – เลือกใช้ metadata ของต้นฉบับ, เป้าหมาย, หรือไม่มี metadata สำหรับผลลัพธ์
- รองรับรหัสผ่าน – เปิดไฟล์ที่ป้องกันโดยไม่ต้องถอดรหัสด้วยตนเอง
- ประสิทธิภาพขยายได้ – ประมวลผลเป็นชุด, การทำงานแบบ async, และออกแบบให้ใช้หน่วยความจำน้อย
ข้อกำหนดเบื้องต้น
- สภาพแวดล้อม Java: JDK 8+ (แนะนำ JDK 11+), IDE ที่คุณชอบ, Maven (หรือ Gradle)
- ไลบรารี GroupDocs.Comparison: เวอร์ชัน 25.2 หรือใหม่กว่า (ควรใช้เวอร์ชันล่าสุดเสมอ)
- ไลเซนส์: ทดลองใช้ฟรี, ไลเซนส์ชั่วคราว 30 วัน, หรือไลเซนส์เชิงพาณิชย์
การตั้งค่า GroupDocs.Comparison ในโปรเจกต์ของคุณ
การกำหนดค่า Maven
เริ่มแรกให้เพิ่มรีโพสิตอรีของ GroupDocs และ dependency ลงใน 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>
Pro tip: ตรวจสอบหมายเลขเวอร์ชันล่าสุดที่หน้า GroupDocs releases page เวอร์ชันใหม่มักมีการปรับปรุงประสิทธิภาพและแก้บั๊กที่ช่วยลดปัญหาให้คุณ
การจัดการไลเซนส์ของคุณ
สิ่งที่หลายคนไม่รู้คือคุณสามารถเริ่มทดสอบ GroupDocs.Comparison ได้ทันทีด้วยรุ่นทดลองฟรี ไม่ต้องใช้บัตรเครดิต ไม่ต้องมีเงื่อนไขใด ๆ
ตัวเลือกของคุณ:
- Free Trial – เหมาะสำหรับการทดสอบและโปรเจกต์ขนาดเล็ก ดาวน์โหลดและเริ่มเขียนโค้ดได้เลย!
- Temporary License – ต้องการเวลามากกว่านี้เพื่อประเมิน? รับไลเซนส์ชั่วคราว 30 วัน ที่นี่
- Commercial License – พร้อมสำหรับการผลิต? ดูราคา ที่นี่
รุ่นทดลองฟรีให้คุณเข้าถึงทุกฟีเจอร์ แต่จะใส่ลายน้ำในไฟล์ผลลัพธ์ สำหรับการพัฒนาและการทดสอบโดยทั่วไปถือว่าเพียงพอ
การทำงานเปรียบเทียบเอกสาร: ขั้นตอนเต็มรูปแบบ
นี่คือส่วนสำคัญ! เราจะสร้างโซลูชันการเปรียบเทียบเอกสารแบบครบวงจรทีละขั้นตอน ไม่ต้องกังวล เราจะอธิบายไม่เพียง “วิธีทำ” แต่ยังรวม “ทำไม” ของแต่ละการตัดสินใจด้วย
ทำความเข้าใจแหล่งที่มาของ Metadata (สำคัญมาก!)
ก่อนเริ่มเขียนโค้ด เรามาพูดถึงเรื่องที่ทำให้หลายคนสับสน: แหล่งที่มาของ metadata เมื่อคุณ compare documents in java คุณต้องกำหนดว่า metadata ของเอกสารใด (ผู้เขียน, วันที่สร้าง, คุณสมบัติเฉพาะ ฯลฯ) ควรจะถูกเก็บไว้ในผลลัพธ์
GroupDocs.Comparison มีสามตัวเลือก:
- SOURCE – ใช้ metadata จากเอกสารต้นฉบับ
- TARGET – ใช้ metadata จากเอกสารที่เปรียบเทียบกับต้นฉบับ
- NONE – ลบ metadata ทั้งหมดออกจากผลลัพธ์
สำหรับแอปพลิเคชันธุรกิจส่วนใหญ่ คุณมักจะเลือก SOURCE เพื่อรักษาความสอดคล้อง
การทำตามขั้นตอน
เราจะสร้างยูทิลิตี้ที่สามารถนำกลับมาใช้ใหม่ได้ในทุกโปรเจกต์
ขั้นตอนที่ 1: นำเข้าคลาสที่จำเป็น
import com.groupdocs.comparison.Comparer;
import com.groupdocs.comparison.options.enums.MetadataType;
import com.groupdocs.comparison.options.save.SaveOptions;
import java.nio.file.Path;
import java.io.IOException;
ขั้นตอนที่ 2: สร้างอินสแตนซ์ Comparer
นี่คือจุดเริ่มต้นของความมหัศจรรย์ คลาส Comparer เป็นจุดเข้าหลักสำหรับการเปรียบเทียบทั้งหมด:
try (Comparer comparer = new Comparer("YOUR_DOCUMENT_DIRECTORY/source.docx")) {
// All our comparison logic goes here
}
Why use try‑with‑resources? คลาส Comparer implements AutoCloseable ซึ่งหมายความว่ามันจะทำความสะอาดทรัพยากรโดยอัตโนมัติเมื่อใช้งานเสร็จ ช่วยป้องกัน memory leak โดยเฉพาะเมื่อต้องประมวลผลเอกสารจำนวนมาก
ขั้นตอนที่ 3: เพิ่มเอกสารเป้าหมายสำหรับการเปรียบเทียบ
comparer.add("YOUR_DOCUMENT_DIRECTORY/target1.docx");
Here’s something cool: คุณสามารถเพิ่มเอกสารเป้าหมายหลายไฟล์และเปรียบเทียบทั้งหมดกับต้นฉบับในหนึ่งการทำงาน เพียงเรียก add() หลายครั้ง:
comparer.add("YOUR_DOCUMENT_DIRECTORY/target1.docx");
comparer.add("YOUR_DOCUMENT_DIRECTORY/target2.docx");
comparer.add("YOUR_DOCUMENT_DIRECTORY/target3.docx");
ขั้นตอนที่ 4: ตั้งค่า Metadata Handling และรันการเปรียบเทียบ
นี่คือขั้นตอนที่เราตั้งค่าแหล่งที่มาของ metadata และสั่งให้ทำการเปรียบเทียบจริง:
final Path resultPath = comparer.compare("output/comparison_result.docx",
new SaveOptions.Builder()
.setCloneMetadataType(MetadataType.SOURCE)
.build());
What’s happening here? เรากำลังบอก GroupDocs ให้:
- เปรียบเทียบเอกสารที่เพิ่มทั้งหมดกับต้นฉบับ
- บันทึกผลลัพธ์ลงในพาธที่กำหนด
- ใช้ metadata ของเอกสาร SOURCE ในผลลัพธ์สุดท้าย
ตัวอย่างทำงานเต็มรูปแบบ
รวมทุกขั้นตอนไว้ในเมธอดที่คุณสามารถเรียกใช้ได้ทันที:
public class DocumentComparison {
public static Path compareDocumentsWithMetadata(
String sourcePath,
String targetPath,
String outputPath) throws IOException {
try (Comparer comparer = new Comparer(sourcePath)) {
// Add the target document
comparer.add(targetPath);
// Configure comparison options
SaveOptions saveOptions = new SaveOptions.Builder()
.setCloneMetadataType(MetadataType.SOURCE)
.build();
// Execute comparison and return result path
return comparer.compare(outputPath, saveOptions);
}
}
}
ปัญหาที่พบบ่อยและวิธีหลีกเลี่ยง
หลังจากช่วยนักพัฒนาหลายร้อยคนทำการเปรียบเทียบเอกสาร ผมพบปัญหาเดิม ๆ ซ้ำ ๆ ต่อไปนี้คือปัญหาใหญ่ (และวิธีแก้)
ปัญหาเกี่ยวกับพาธไฟล์
Problem: FileNotFoundException แม้ว่าไฟล์จะมีอยู่จริง
Solution: ใช้พาธแบบ absolute เสมอหรือแก้ไขการ resolve พาธ relative อย่างถูกต้อง
// Instead of this:
String sourcePath = "documents/source.docx";
// Do this:
String sourcePath = Paths.get("documents", "source.docx").toAbsolutePath().toString();
ปัญหาเรื่องการจัดการหน่วยความจำ
Problem: เกิด Out of memory เมื่อเปรียบเทียบเอกสารขนาดใหญ่
Solution: เพิ่มขนาด heap ของ JVM และใช้การจัดการทรัพยากรอย่างเหมาะสม
# Add these JVM arguments when running your application
-Xmx4g -XX:+UseG1GC
การจัดการ Metadata ผิดพลาด
Problem: สูญเสีย metadata ที่สำคัญระหว่างการเปรียบเทียบ
Solution: ตั้งค่า metadata type อย่างชัดเจน – อย่าพึ่งพาค่าตั้งต้น
// Always be explicit about metadata handling
SaveOptions saveOptions = new SaveOptions.Builder()
.setCloneMetadataType(MetadataType.SOURCE) // Be explicit!
.build();
ปัญหาเกี่ยวกับการตั้งค่าไลเซนส์
Problem: ปรากฏลายน้ำในสภาพการผลิต
Solution: ตรวจสอบว่าไลเซนส์ถูกโหลดอย่างถูกต้องก่อนสร้างอินสแตนซ์ Comparer
// Load license at application startup
License license = new License();
license.setLicense("path/to/your/license.lic");
แนวทางปฏิบัติที่ดีที่สุดสำหรับการใช้งานใน Production
จากประสบการณ์จริง นี่คือแนวทางที่ทำให้โค้ดระดับมืออาชีพแตกต่างจากโค้ดทดลอง
การจัดการข้อผิดพลาดที่มีประโยชน์จริง
อย่าแค่จับ Exception – ให้จัดการอย่างมีความหมาย:
public ComparisonResult compareDocuments(String source, String target) {
try (Comparer comparer = new Comparer(source)) {
comparer.add(target);
Path result = comparer.compare("output.docx",
new SaveOptions.Builder()
.setCloneMetadataType(MetadataType.SOURCE)
.build());
return new ComparisonResult(true, result.toString(), null);
} catch (IOException e) {
logger.error("File access error during comparison", e);
return new ComparisonResult(false, null, "Unable to access document files");
} catch (Exception e) {
logger.error("Unexpected error during document comparison", e);
return new ComparisonResult(false, null, "Document comparison failed");
}
}
การเพิ่มประสิทธิภาพ
สำหรับสถานการณ์ที่ต้องประมวลผลจำนวนมาก ให้พิจารณาการปรับแต่งต่อไปนี้:
- Reuse
Comparerinstances เมื่อเป็นไปได้ (ต้องระวังเรื่อง thread‑safety) - Process documents in batches เพื่อไม่ให้ระบบทรัพยากรถูกใช้จนเต็ม
- Use asynchronous processing สำหรับเอกสารขนาดใหญ่
- Monitor memory usage และปรับตั้งค่า JVM ตามความจำเป็น
ข้อควรระวังด้านความปลอดภัย
เมื่อจัดการเอกสารที่เป็นความลับ:
- Validate file types ก่อนทำการประมวลผล
- Implement proper access controls
- Clean up temporary files ทันทีหลังการใช้งาน
- Consider encrypting ผลลัพธ์การเปรียบเทียบ
การใช้งานจริงและกรณีศึกษา
มาดูว่าผู้พัฒนาจริงใช้ GroupDocs.Comparison อย่างไรในระบบผลิต
การตรวจสอบเอกสารทางกฎหมาย
สำนักงานกฎหมายใช้การเปรียบเทียบเอกสารเพื่อติดตามการเปลี่ยนแปลงในสัญญาและข้อตกลงทางกฎหมาย ฟีเจอร์การรักษา metadata มีความสำคัญมากเพราะต้องคงที่มาของเอกสาร
// Typical legal document comparison workflow
public void reviewContractChanges(String originalContract, String revisedContract) {
try (Comparer comparer = new Comparer(originalContract)) {
comparer.add(revisedContract);
SaveOptions options = new SaveOptions.Builder()
.setCloneMetadataType(MetadataType.SOURCE) // Preserve original metadata
.build();
Path result = comparer.compare("contract_review.docx", options);
// Send result to legal team for review
notifyLegalTeam(result);
}
}
ระบบจัดการเนื้อหา (CMS)
แพลตฟอร์ม CMS ใช้การเปรียบเทียบเอกสารเพื่อควบคุมเวอร์ชันและติดตามการเปลี่ยนแปลง:
public class CMSDocumentVersioning {
public VersionComparisonResult compareVersions(
DocumentVersion current,
DocumentVersion previous) {
try (Comparer comparer = new Comparer(current.getFilePath())) {
comparer.add(previous.getFilePath());
String outputName = String.format("comparison_%s_vs_%s.docx",
current.getVersionNumber(),
previous.getVersionNumber());
Path result = comparer.compare(outputName,
new SaveOptions.Builder()
.setCloneMetadataType(MetadataType.SOURCE)
.build());
return new VersionComparisonResult(result, current, previous);
}
}
}
การวิเคราะห์เอกสารทางการเงิน
สถาบันการเงินใช้เพื่อการปฏิบัติตามกฎระเบียบและสร้าง audit trail:
public AuditResult auditFinancialDocument(String originalReport, String submittedReport) {
// Compare submitted report against original
// Metadata preservation is critical for audit compliance
try (Comparer comparer = new Comparer(originalReport)) {
comparer.add(submittedReport);
Path auditResult = comparer.compare("audit_comparison.docx",
new SaveOptions.Builder()
.setCloneMetadataType(MetadataType.SOURCE)
.build());
return generateAuditReport(auditResult);
}
}
การเพิ่มประสิทธิภาพและการขยายขนาด
เมื่อคุณพร้อมรับมือกับปริมาณเอกสารจำนวนมาก กลยุทธ์ต่อไปนี้จะช่วยให้แอปของคุณทำงานได้อย่างราบรื่น
การจัดการหน่วยความจำ
เอกสารขนาดใหญ่สามารถกินหน่วยความจำได้เร็ว นี่คือวิธีจัดการอย่างมีประสิทธิภาพ:
public class OptimizedDocumentProcessor {
private final ExecutorService executor = Executors.newFixedThreadPool(
Runtime.getRuntime().availableProcessors());
public CompletableFuture<Path> compareDocumentsAsync(
String source,
String target,
String output) {
return CompletableFuture.supplyAsync(() -> {
try (Comparer comparer = new Comparer(source)) {
comparer.add(target);
return comparer.compare(output,
new SaveOptions.Builder()
.setCloneMetadataType(MetadataType.SOURCE)
.build());
}
}, executor);
}
}
การประมวลผลเป็นชุด
สำหรับการเปรียบเทียบหลายไฟล์พร้อมกัน การประมวลผลเป็นชุดคือเพื่อนที่ดีที่สุด:
public List<ComparisonResult> processBatch(List<DocumentPair> documentPairs) {
return documentPairs.parallelStream()
.map(this::compareDocumentPair)
.collect(Collectors.toList());
}
private ComparisonResult compareDocumentPair(DocumentPair pair) {
try (Comparer comparer = new Comparer(pair.getSourcePath())) {
comparer.add(pair.getTargetPath());
Path result = comparer.compare(pair.getOutputPath(),
new SaveOptions.Builder()
.setCloneMetadataType(MetadataType.SOURCE)
.build());
return new ComparisonResult(pair, result, true);
} catch (Exception e) {
return new ComparisonResult(pair, null, false, e.getMessage());
}
}
คู่มือแก้ไขปัญหา
เมื่อเกิดข้อผิดพลาด (และบางครั้งก็เกิด) นี่คือเช็คลิสต์สำหรับการดีบัก
ข้อผิดพลาด “Comparison Failed”
สาเหตุที่พบบ่อยที่สุด:
- ฟอร์แมตไฟล์ไม่รองรับ
- ไฟล์ต้นฉบับเสียหาย
- หน่วยความจำไม่พอ
- ปัญหาการอนุญาตไฟล์
ขั้นตอนการดีบัก:
// Add comprehensive logging to identify the issue
logger.debug("Starting comparison: source={}, target={}", sourcePath, targetPath);
try (Comparer comparer = new Comparer(sourcePath)) {
logger.debug("Comparer initialized successfully");
comparer.add(targetPath);
logger.debug("Target document added successfully");
Path result = comparer.compare(outputPath, saveOptions);
logger.info("Comparison completed successfully: result={}", result);
return result;
} catch (Exception e) {
logger.error("Comparison failed", e);
throw new DocumentComparisonException("Failed to compare documents", e);
}
ปัญหาประสิทธิภาพ
หากการเปรียบเทียบใช้เวลานานเกินไป:
- ตรวจสอบขนาดเอกสาร – ไฟล์ที่ใหญ่กว่า 100 MB อาจต้องการการจัดการพิเศษ
- ตรวจสอบการใช้หน่วยความจำ – เพิ่ม heap หากจำเป็น
- ตรวจสอบประสิทธิภาพ I/O – ที่เก็บข้อมูลช้าอาจเป็นคอขวด
- พิจารณาฟอร์แมตของเอกสาร – บางฟอร์แมตซับซ้อนต่อการประมวลผลมากกว่า
การรั่วของหน่วยความจำ
สัญญาณที่บ่งบอกว่ามี memory leak:
- ประสิทธิภาพของแอปลดลงตามเวลา
OutOfMemoryErrorหลังจากประมวลผลหลายไฟล์- การทำงานของ garbage collector เพิ่มขึ้นอย่างมาก
Solution: ใช้ try‑with‑resources เสมอและตรวจสอบแอปด้วยเครื่องมือ profiling
การจัดการไฟล์ที่ป้องกันด้วยรหัสผ่าน
หากต้อง java compare password protected เอกสาร ให้ใช้ LoadOptions ขณะเปิดไฟล์ต้นฉบับหรือเป้าหมาย:
LoadOptions loadOptions = new LoadOptions("your_password");
try (Comparer comparer = new Comparer("protected_document.docx", loadOptions)) {
// Process password‑protected document
}
วิธีเปรียบเทียบไฟล์ที่ป้องกันด้วยรหัสผ่านใน Java
ไฟล์ที่ป้องกันด้วยรหัสผ่านเป็นเรื่องปกติในอุตสาหกรรมที่ต้องการการควบคุมอย่างเข้มงวด โดยการส่งรหัสผ่านผ่าน LoadOptions คุณจะยังคงกระบวนการเปรียบเทียบได้โดยไม่ต้องเปลี่ยนแปลงโค้ดหลัก จำเป็นต้องเก็บรหัสผ่านใน vault หรือ environment variable แทนการ hard‑code
วิธีจัดการเอกสารขนาดใหญ่ใน Java
เมื่อเอกสารมีขนาดหลายร้อยเมกะไบต์ คุณอาจเจอการประมวลผลช้า หรือการใช้หน่วยความจำสูง เพื่อลดผลกระทบ:
- เพิ่มขนาด heap ของ JVM (
-Xmx) โดยเฉพาะงาน batch - เปิดใช้ streaming หากเป็นไปได้ – GroupDocs.Comparison ประมวลผลไฟล์เป็นชิ้นส่วนภายในแล้ว แต่คุณยังสามารถลดการใช้หน่วยความจำได้โดยไม่โหลดไฟล์ทั้งหมดเข้าสู่ memory
- รันการเปรียบเทียบแบบ asynchronous (ดูตัวอย่าง async ด้านบน) เพื่อให้ UI ตอบสนองได้
- แยก PDF ขนาดใหญ่ออกเป็นส่วนย่อย หากโลจิกธุรกิจอนุญาต
การรวมกับ Spring Boot
สำหรับนักพัฒนาที่สร้าง microservice ให้ห่อหุ้มตรรกะการเปรียบเทียบไว้ใน Spring service bean:
@Service
public class DocumentComparisonService {
public ComparisonResult compareDocuments(String source, String target) {
try (Comparer comparer = new Comparer(source)) {
comparer.add(target);
Path result = comparer.compare("output.docx",
new SaveOptions.Builder()
.setCloneMetadataType(MetadataType.SOURCE)
.build());
return new ComparisonResult(result);
}
}
}
คำถามที่พบบ่อย
Q: สามารถเปรียบเทียบมากกว่าสองเอกสารพร้อมกันได้หรือไม่?
A: แน่นอน! เพิ่มเอกสารเป้าหมายหลายไฟล์ด้วย comparer.add() ก่อนเรียกทำการเปรียบเทียบ
Q: GroupDocs.Comparison รองรับฟอร์แมตไฟล์ใดบ้าง?
A: รองรับ DOCX, PDF, XLSX, PPTX, TXT และอื่น ๆ อีกหลายรูปแบบ ดูรายการเต็มในเอกสารอย่างเป็นทางการ
Q: จะจัดการไฟล์ที่ป้องกันด้วยรหัสผ่านอย่างไร?
A: ใช้คลาส LoadOptions เพื่อส่งรหัสผ่านเมื่อสร้างอินสแตนซ์ Comparer (ดูตัวอย่างด้านบน)
Q: GroupDocs.Comparison ปลอดภัยต่อการทำงานหลายเธรดหรือไม่?
A: อินสแตนซ์ Comparer ตัวเดียวไม่ปลอดภัยต่อหลายเธรด แต่คุณสามารถสร้างหลายอินสแตนซ์และใช้พร้อมกันได้
Q: จะเพิ่มประสิทธิภาพสำหรับเอกสารขนาดใหญ่ได้อย่างไร?
A: เพิ่ม heap (-Xmx), ประมวลผลแบบ asynchronous, ทำเป็น batch, และ reuse Comparer เมื่อเหมาะสม
แหล่งข้อมูลเพิ่มเติม
- GroupDocs.Comparison Documentation – เอกสาร API อย่างละเอียดและตัวอย่าง
- GroupDocs Community Forum – รับความช่วยเหลือจากนักพัฒนาคนอื่น
Last Updated: 2026-02-23
Tested With: GroupDocs.Comparison 25.2
Author: GroupDocs