วิธีเพิ่มลูกศร PDF ใน Java: คู่มือครบวงจรของ GroupDocs

บทนำ

เคยต้องการเน้นส่วนเฉพาะใน PDF หรือชี้ให้เห็นรายละเอียดสำคัญสำหรับทีมของคุณหรือไม่? การเพิ่มลูกศรลงในเอกสาร PDF เป็นวิธีที่มีประสิทธิภาพที่สุดในการเพิ่มความชัดเจน ในบทเรียนนี้ คุณจะได้เรียนรู้วิธีเพิ่มลูกศร PDF ด้วย GroupDocs.Annotation สำหรับ Java ไม่ว่าคุณจะกำลังเตรียมเอกสารทางเทคนิค วัสดุการศึกษา หรือการตรวจทานร่วมกัน เราจะพาคุณผ่านทุกขั้นตอนตั้งแต่การตั้งค่าเริ่มต้นจนถึงการปรับแต่งขั้นสูง พร้อมเคล็ดลับการแก้ไขปัญหาที่ช่วยประหยัดเวลา

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

  • ไลบรารีใดที่เพิ่มลูกศรลงใน pdf? GroupDocs.Annotation สำหรับ Java
  • ต้องใช้โค้ดกี่บรรทัด? ประมาณ 20 บรรทัดสำหรับลูกศรพื้นฐาน
  • ต้องมีลิขสิทธิ์หรือไม่? ทดลองใช้ฟรีสำหรับการทดสอบ; การใช้งานจริงต้องมีลิขสิทธิ์เชิงพาณิชย์
  • สามารถปรับสีของลูกศรได้หรือไม่? ได้, ผ่านคุณสมบัติ ArrowAnnotation (ดูส่วนขั้นสูง)
  • ปลอดภัยต่อการทำงานหลายเธรดหรือไม่? ใช้ตัวแปร Annotator แยกต่อแต่ละเธรด

วิธีเพิ่มลูกศร PDF ด้วย GroupDocs.Annotation

ด้านล่างเป็นภาพรวมสั้น ๆ ของสิ่งที่คุณต้องเตรียมก่อนเริ่มเขียนโค้ด

ข้อกำหนดเบื้องต้นและการตั้งค่า

ไลบรารีและการพึ่งพาที่จำเป็น

เพื่อใช้ GroupDocs.Annotation สำหรับ Java คุณต้องเพิ่มเข้าไปในโปรเจกต์ผ่าน Maven นี่คือการกำหนดค่าในไฟล์ pom.xml ของคุณ:

<repositories>
   <repository>
      <id>repository.groupdocs.com</id>
      <name>GroupDocs Repository</name>
      <url>https://releases.groupdocs.com/annotation/java/</url>
   </repository>
</repositories>

<dependencies>
   <dependency>
      <groupId>com.groupdocs</groupId>
      <artifactId>groupdocs-annotation</artifactId>
      <version>25.2</version>
   </dependency>
</dependencies>

รายการตรวจสอบการตั้งค่าสภาพแวดล้อม

  • Java Development Kit (JDK): เวอร์ชัน 8 หรือสูงกว่า
  • IDE: IntelliJ IDEA, Eclipse หรือ IDE Java ที่คุณชื่นชอบ
  • Maven: สำหรับการจัดการการพึ่งพา (หรือ Gradle หากคุณต้องการ)
  • PDF ตัวอย่าง: เอกสาร PDF เพื่อทดสอบ

ข้อกำหนดลิขสิทธิ์

GroupDocs มีตัวเลือกลิขสิทธิ์หลายแบบตามความต้องการของคุณ:

  • Free Trial: เหมาะสำหรับการทดสอบและโครงการขนาดเล็ก ดาวน์โหลดจาก GroupDocs releases
  • Temporary License: ต้องการเวลาประเมินเพิ่ม? รับได้ที่ here
  • Commercial License: สำหรับการใช้งานในผลิตภัณฑ์ ซื้อได้ที่ here

เคล็ดลับมืออาชีพ: เริ่มต้นด้วยการทดลองฟรีเพื่อทำความคุ้นเคยกับ API ก่อนตัดสินใจซื้อไลเซนส์

การติดตั้ง GroupDocs.Annotation สำหรับ Java

การกำหนดค่า Maven

เพิ่มการกำหนดค่า Maven ที่แสดงด้านบนลงในไฟล์ pom.xml ของคุณ หากคุณใช้ Gradle ให้ใช้การกำหนดค่าเทียบเคียงดังนี้:

repositories {
    maven {
        url "https://releases.groupdocs.com/annotation/java/"
    }
}

dependencies {
    implementation 'com.groupdocs:groupdocs-annotation:25.2'
}

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

เมื่อติดตั้งไลบรารีแล้ว ให้ตั้งค่าการนำเข้าเบื้องต้นในคลาส Java ของคุณ:

import com.groupdocs.annotation.Annotator;
import com.groupdocs.annotation.models.annotationmodels.ArrowAnnotation;
import com.groupdocs.annotation.models.Rectangle;

ขั้นตอนการตรวจสอบ

เพื่อยืนยันว่าการติดตั้งทำงานอย่างถูกต้อง ให้ลองสร้างอินสแตนซ์ Annotator อย่างง่าย:

public class AnnotationTest {
    public static void main(String[] args) {
        try {
            System.out.println("GroupDocs.Annotation loaded successfully!");
        } catch (Exception e) {
            System.err.println("Error loading GroupDocs.Annotation: " + e.getMessage());
        }
    }
}

การทำตามขั้นตอนอย่างละเอียด: การเพิ่มลูกศรลงใน PDF

นี่คือส่วนสำคัญ! เราจะเดินผ่านกระบวนการทั้งหมดในการเพิ่มคำอธิบายลูกศรลงในเอกสาร PDF ของคุณ

ทำความเข้าใจ Arrow Annotations

Arrow annotations ใน GroupDocs เป็นองค์ประกอบภาพที่ชี้จากตำแหน่งหนึ่งไปยังอีกตำแหน่งหนึ่งบนเอกสารของคุณ ถูกกำหนดโดย:

  • จุดเริ่มต้น – ตำแหน่งที่ลูกศรเริ่มต้น
  • จุดสิ้นสุด – ตำแหน่งที่ลูกศรชี้ไป
  • คุณสมบัติสไตล์ – สี, ความหนา, และลักษณะการแสดงผล

การเข้าใจ ระบบพิกัดของ PDF จะช่วยให้คุณวางตำแหน่งลูกศรได้อย่างแม่นยำ โดยเฉพาะอย่างยิ่งเพราะพิกัด PDF เริ่มจากมุมล่างซ้าย

ตัวอย่างการทำงานเต็มรูปแบบ

นี่คือตัวอย่างที่ครอบคลุมการเพิ่มลูกศรลงในเอกสาร PDF:

String inputFilePath = "YOUR_DOCUMENT_DIRECTORY/input_document.pdf";
try (Annotator annotator = new Annotator(inputFilePath)) {
    
    // Create arrow annotation
    final ArrowAnnotation arrowAnnotation = new ArrowAnnotation();
    arrowAnnotation.setBox(new Rectangle(100, 100, 200, 200));
    
    // Add annotation to document
    annotator.add(arrowAnnotation);
    
    // Save the annotated document
    String outputPath = "YOUR_OUTPUT_DIRECTORY/annotated_output.pdf";
    annotator.save(outputPath);
    
    System.out.println("Arrow annotation added successfully!");
}

มาดูรายละเอียดทีละขั้นตอน:

ขั้นตอนที่ 1: เริ่มต้น Annotator

String inputFilePath = "YOUR_DOCUMENT_DIRECTORY/input_document.pdf";
try (Annotator annotator = new Annotator(inputFilePath)) {
    // Your annotation code goes here
}

เกิดอะไรขึ้น? เรากำลังสร้างอินสแตนซ์ Annotator ที่โหลดไฟล์ PDF ของคุณ คำสั่ง try‑with‑resources จะทำให้แน่ใจว่าทรัพยากรระบบถูกทำความสะอาดอย่างเหมาะสม

ข้อผิดพลาดทั่วไปที่ควรหลีกเลี่ยง: ตรวจสอบให้แน่ใจว่าเส้นทางไฟล์ถูกต้องและไฟล์มีอยู่จริง หากได้รับ FileNotFoundException ให้ตรวจสอบเส้นทางอีกครั้ง

ขั้นตอนที่ 2: สร้างและกำหนดค่า Arrow Annotation

final ArrowAnnotation arrowAnnotation = new ArrowAnnotation();
arrowAnnotation.setBox(new Rectangle(100, 100, 200, 200));

ทำความเข้าใจพารามิเตอร์ Rectangle:

  • ค่าแรก (100): พิกัด X ของจุดเริ่มต้น
  • ค่าแรกที่สอง (100): พิกัด Y ของจุดเริ่มต้น
  • ค่าแรกที่สาม (200): ความกว้างของกล่องล้อมรอบลูกศร
  • ค่าแรกที่สี่ (200): ความสูงของกล่องล้อมรอบลูกศร

เคล็ดลับการวางตำแหน่ง: พิกัด PDF เริ่มจากมุมล่างซ้าย ซึ่งอาจทำให้สับสนหากคุณคุ้นเคยกับการพัฒนาเว็บที่ (0,0) อยู่มุมบนซ้าย

ขั้นตอนที่ 3: เพิ่ม Annotation

annotator.add(arrowAnnotation);

บรรทัดนี้จะเพิ่ม Arrow Annotation ที่กำหนดค่าไว้ลงในเอกสารในหน่วยความจำ เอกสารจะไม่ถูกแก้ไขจนกว่าคุณ จะบันทึก PDF ที่มีการอธิบาย

ขั้นตอนที่ 4: บันทึกเอกสารที่มีการอธิบาย

String outputPath = "YOUR_OUTPUT_DIRECTORY/annotated_output.pdf";
annotator.save(outputPath);

บรรทัดนี้จะสร้างไฟล์ PDF ใหม่ที่มีลูกศรของคุณ เอกสารต้นฉบับจะไม่ถูกเปลี่ยนแปลง

การปรับแต่งลูกศรขั้นสูง

ต้องการทำให้ลูกศรของคุณดูสวยงามยิ่งขึ้น? นี่คือตัวเลือกการปรับแต่งขั้นสูงบางส่วน:

การตั้งค่าสีและสไตล์ของลูกศร

แม้ว่าตัวอย่างพื้นฐานจะใช้สไตล์เริ่มต้น คุณสามารถ ปรับสีของลูกศร ได้โดยตั้งค่าคุณสมบัติเฉพาะบน ArrowAnnotation ตรวจสอบเอกสาร GroupDocs เพื่อดูตัวเลือกสไตล์ล่าสุดในเวอร์ชัน 25.2

การเพิ่มหลายลูกศรในเอกสารเดียว

คุณสามารถเพิ่มหลายลูกศรลงในเอกสารเดียวได้:

try (Annotator annotator = new Annotator(inputFilePath)) {
    
    // First arrow
    ArrowAnnotation arrow1 = new ArrowAnnotation();
    arrow1.setBox(new Rectangle(100, 100, 200, 200));
    
    // Second arrow
    ArrowAnnotation arrow2 = new ArrowAnnotation();
    arrow2.setBox(new Rectangle(300, 300, 150, 150));
    
    // Add both arrows
    annotator.add(arrow1);
    annotator.add(arrow2);
    
    annotator.save(outputPath);
}

ปัญหาที่พบบ่อยและการแก้ไขข้อผิดพลาด

จากประสบการณ์ของนักพัฒนาจริง นี่คือปัญหาที่พบบ่อยที่สุดและวิธีแก้ไข:

ปัญหา 1: ไม่เห็นลูกศร

อาการ: โค้ดทำงานโดยไม่มีข้อผิดพลาด แต่ไม่มีลูกศรปรากฏใน PDF

วิธีแก้:

  • ตรวจสอบว่าพิกัด Rectangle อยู่ภายในขอบเขตของหน้า
  • ยืนยันว่าลูกศรไม่ได้อยู่นอกพื้นที่ที่มองเห็นได้
  • ตรวจสอบว่าไฟล์ผลลัพธ์ถูกสร้างในตำแหน่งที่คาดหวัง

ปัญหา 2: ข้อผิดพลาดการอนุญาตไฟล์

อาการ: IOException ขณะพยายามบันทึกเอกสารที่มีการอธิบาย

วิธีแก้:

  • ตรวจสอบสิทธิ์การเขียนของไดเรกทอรีผลลัพธ์
  • ปิดโปรแกรมดู PDF ที่อาจเปิดไฟล์ผลลัพธ์อยู่
  • ใช้ชื่อไฟล์ผลลัพธ์ที่แตกต่างกันเพื่อหลีกเลี่ยงความขัดแย้ง

ปัญหา 3: ปัญหาหน่วยความจำกับไฟล์ขนาดใหญ่

อาการ: OutOfMemoryError ขณะประมวลผลไฟล์ PDF ขนาดใหญ่

วิธีแก้:

  • เพิ่มขนาด heap ของ JVM, ตัวอย่างเช่น -Xmx2g เพื่อ เพิ่ม heap ของ JVM สำหรับงานขนาดใหญ่
  • ประมวลผลเอกสารเป็นชุดหากต้องจัดการหลายไฟล์
  • ใช้ try‑with‑resources เสมอเพื่อให้แน่ใจว่าทรัพยากรถูกทำความสะอาดอย่างเหมาะสม

ปัญหา 4: ความสับสนเรื่องพิกัด

อาการ: ลูกศรปรากฏในตำแหน่งที่ไม่คาดคิด

วิธีแก้:

  • จำไว้ว่า พิกัด PDF เริ่มจากมุมล่างซ้าย ไม่ใช่มุมบนซ้าย
  • ใช้เครื่องมือพิกัด PDF เพื่อระบุตำแหน่งที่แม่นยำ
  • เริ่มต้นด้วยพิกัดง่าย ๆ (เช่น 100, 100) แล้วปรับตามต้องการ

แนวทางปฏิบัติที่ดีที่สุดด้านประสิทธิภาพ

เมื่อทำงานกับการอธิบาย PDF ในแอปพลิเคชันระดับผลิตภัณฑ์ ควรพิจารณากลยุทธ์การเพิ่มประสิทธิภาพต่อไปนี้:

การจัดการหน่วยความจำ

ใช้บล็อก try‑with‑resources เสมอเพื่อให้แน่ใจว่าทรัพยากรถูกทำความสะอาดอย่างเหมาะสม:

try (Annotator annotator = new Annotator(inputFilePath)) {
    // Your annotation code
} // Automatically closes and frees resources

การประมวลผลเป็นชุด

หากต้องประมวลผลหลายเอกสาร ให้ทำเป็นลำดับต่อเนื่องแทนการโหลดทั้งหมดพร้อมกัน:

List<String> documents = Arrays.asList("doc1.pdf", "doc2.pdf", "doc3.pdf");

for (String doc : documents) {
    try (Annotator annotator = new Annotator(doc)) {
        // Process each document
        ArrowAnnotation arrow = new ArrowAnnotation();
        arrow.setBox(new Rectangle(100, 100, 200, 200));
        annotator.add(arrow);
        annotator.save(doc.replace(".pdf", "_annotated.pdf"));
    }
}

การปรับแต่ง JVM

สำหรับแอปพลิเคชันที่ประมวลผลไฟล์ PDF จำนวนมากหรือขนาดใหญ่ ให้พิจารณาตัวเลือก JVM ต่อไปนี้:

java -Xms512m -Xmx2g -XX:+UseG1GC YourApplication

ตัวอย่างการใช้งานจริง

มาดูสถานการณ์ที่ลูกศรอธิบายทำให้เกิดประโยชน์สูงสุด:

กรณีใช้งาน 1: เอกสารการตรวจทานโค้ด

เมื่อทำเอกสารการตรวจทานโค้ดหรือการเปลี่ยนแปลง API ลูกศรสามารถชี้ไปยังบรรทัดหรือส่วนที่ต้องให้ความสนใจ:

// Perfect for highlighting problematic code sections
ArrowAnnotation reviewArrow = new ArrowAnnotation();
reviewArrow.setBox(new Rectangle(50, 400, 100, 50)); // Points to a specific line

กรณีใช้งาน 2: วัสดุการศึกษา

สำหรับ PDF สอนหรือเอกสารแนะนำ ลูกศรช่วยนำผู้อ่านผ่านขั้นตอนต่าง ๆ อย่างเป็นระบบ:

// Highlighting the next step in a tutorial
ArrowAnnotation stepArrow = new ArrowAnnotation();
stepArrow.setBox(new Rectangle(200, 300, 150, 100));

กรณีใช้งาน 3: สเปคทางเทคนิค

ในแบบแปลนสถาปัตยกรรมหรือสเปคทางเทคนิค ลูกศรสามารถบ่งบอกทิศทางการไหลหรือไฮไลท์การวัดที่สำคัญ

การผสานรวมกับระบบจัดการเอกสาร

ลูกศรอธิบายทำงานได้ดีเมื่อรวมกับเวิร์กโฟลว์การจัดการเอกสารที่ใหญ่ขึ้น:

  • Version Control: เอกสารที่มีการอธิบายสามารถเวอร์ชันควบคู่กับโค้ดของคุณได้
  • Automated Workflows: เริ่มกระบวนการอธิบายอัตโนมัติตามการอัปเดตเอกสาร
  • Collaborative Platforms: ผสานรวมกับเครื่องมือเช่น SharePoint หรือ Google Drive

สรุป

ขอแสดงความยินดี! คุณได้เรียนรู้ วิธีเพิ่มลูกศร PDF ด้วย GroupDocs.Annotation สำหรับ Java ฟีเจอร์ทรงพลังนี้สามารถปรับปรุงการสื่อสารในเอกสารได้อย่างมาก ไม่ว่าคุณจะทำการตรวจทานโค้ด สร้างเนื้อหาการศึกษา หรือทำงานร่วมกับทีม

ประเด็นสำคัญ

  • ลูกศรอธิบายช่วยเพิ่มความชัดเจนและการทำงานร่วมกันของเอกสาร
  • GroupDocs.Annotation มี API ที่ใช้งานง่ายสำหรับ pdf annotation java
  • การจัดการทรัพยากรและการจัดการข้อผิดพลาดอย่างเหมาะสมเป็นสิ่งสำคัญสำหรับการใช้งานในผลิตภัณฑ์
  • การเข้าใจระบบพิกัดของ PDF ป้องกันปัญหาการวางตำแหน่งที่พบบ่อย

ขั้นตอนต่อไป

พร้อมที่จะยกระดับทักษะการอธิบาย PDF ของคุณหรือยัง? ลองสำรวจต่อไปนี้:

  • การอธิบายข้อความสำหรับคอมเมนต์ละเอียด
  • การอธิบายรูปทรงเพื่อไฮไลท์พื้นที่
  • การอธิบายสแตมป์สำหรับกระบวนการอนุมัติ
  • การผสานหลายประเภทของการอธิบายในเอกสารที่ซับซ้อน

ลงมือทำ: ลองนำลูกศรอธิบายไปใช้ในโปรเจกต์ปัจจุบันของคุณ เริ่มจากตัวอย่างพื้นฐาน แล้วทดลองปรับสี เพิ่มหลายลูกศร และประมวลผลเป็นชุด

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

Arrow annotation คืออะไรและควรใช้เมื่อไหร่?

Arrow annotation คือเครื่องหมายชี้ภาพที่ดึงความสนใจไปยังพื้นที่เฉพาะของเอกสาร ใช้เมื่อต้องการเน้นความสัมพันธ์ระหว่างส่วนต่าง ๆ ของเอกสาร ชี้ทิศทางหรือกระแส หรือเพียงแค่ชี้ข้อมูลสำคัญที่อาจมองข้ามได้

สามารถเพิ่มลูกศรในรูปแบบไฟล์อื่นนอกจาก PDF ได้หรือไม่?

ได้! GroupDocs.Annotation รองรับหลายรูปแบบรวมถึงเอกสาร Word (DOC/DOCX), แผ่นงาน Excel (XLS/XLSX), งานนำเสนอ PowerPoint (PPT/PPTX) และรูปภาพหลายประเภท (PNG, JPG, TIFF) API จะคงที่ในทุกรูปแบบไฟล์

จะจัดการไฟล์ PDF ขนาดใหญ่โดยไม่เกิดปัญหาหน่วยความจำได้อย่างไร?

สำหรับไฟล์ขนาดใหญ่ ให้เพิ่มขนาด heap ของ JVM ด้วยพารามิเตอร์ -Xmx ใช้บล็อก try‑with‑resources เพื่อทำความสะอาดทรัพยากร และพิจารณาประมวลผลเอกสารเป็นชุดแทนการทำทั้งหมดพร้อมกัน นอกจากนี้ ปิดแอปพลิเคชันที่ไม่จำเป็นซึ่งอาจใช้หน่วยความจำ

ทำไมไม่เห็นลูกศรอธิบายใน PDF ที่บันทึกออกมา?

สาเหตุส่วนใหญ่คือพิกัดของลูกศรอยู่นอกพื้นที่ที่มองเห็นได้ ตรวจสอบพิกัด Rectangle ให้แน่ใจว่าอยู่ภายในขนาดหน้าของ PDF อีกทั้งยืนยันว่าไฟล์ผลลัพธ์ถูกบันทึกในตำแหน่งที่ถูกต้องและคุณเปิดไฟล์ที่ถูกต้อง

มีขีดจำกัดจำนวนลูกศรที่สามารถเพิ่มใน PDF เดียวได้หรือไม่?

GroupDocs.Annotation ไม่ได้กำหนดขีดจำกัดที่แน่นอน แต่การเพิ่มคำอธิบายจำนวนมากอาจส่งผลต่อประสิทธิภาพและขนาดไฟล์ สำหรับเอกสารที่มีคำอธิบายจำนวนมาก ควรจัดเรียงเป็นหลายหน้า หรือใช้ประเภทคำอธิบายอื่นเพื่อหลีกเลี่ยงความแออัด

จะวางตำแหน่งลูกศรให้ตรงกับข้อความหรือองค์ประกอบเฉพาะได้อย่างไร?

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

สามารถปรับลักษณะของลูกศร (สี, ความหนา, สไตล์) ได้หรือไม่?

คลาส ArrowAnnotation พื้นฐานให้ฟังก์ชันลูกศรพื้นฐาน สำหรับสไตล์ขั้นสูงเช่นสี, ความหนา หรือรูปแบบเส้น ให้ดูเอกสาร GroupDocs.Annotation เวอร์ชันล่าสุด เนื่องจากฟีเจอร์เหล่านี้อาจเพิ่มในเวอร์ชันใหม่

ความแตกต่างระหว่างรุ่นทดลองและรุ่นที่มีลิขสิทธิ์คืออะไร?

รุ่นทดลองมักมีลายน้ำหรือจำกัดจำนวนเอกสารที่ประมวลผลได้ ส่วนรุ่นที่มีลิขสิทธิ์จะลบข้อจำกัดเหล่านี้และออกแบบสำหรับการใช้งานในผลิตภัณฑ์ ตรวจสอบเว็บไซต์ GroupDocs สำหรับรายละเอียดข้อจำกัดของรุ่นทดลองในปัจจุบัน

จะผสานรวมลูกศรอธิบายกับเวิร์กโฟลว์เอกสารที่มีอยู่ได้อย่างไร?

พิจารณาสร้างเมธอดห่อที่ทำให้กระบวนการอธิบายเป็นมาตรฐาน ใช้การประมวลผลเป็นชุดสำหรับหลายไฟล์ และผสานกับระบบควบคุมเวอร์ชัน คุณยังสามารถสร้างเทมเพลตสำหรับรูปแบบอธิบายที่ใช้บ่อยเพื่อเร่งกระบวนการทำซ้ำ

จะหาความช่วยเหลือเมื่อเจอปัญหาที่ไม่ได้กล่าวถึงในที่นี้ได้จากที่ไหน?

สำหรับการสนับสนุนเพิ่มเติม ให้เยี่ยมชม GroupDocs support forum ที่คุณสามารถตั้งคำถามและรับความช่วยเหลือจากชุมชนและทีมงาน GroupDocs เอกสารอย่างเป็นทางการ official documentation ยังมีอ้างอิง API และตัวอย่างอย่างครบถ้วน

แหล่งข้อมูลเพิ่มเติม


อัปเดตล่าสุด: 2026-03-22
ทดสอบกับ: GroupDocs.Annotation 25.2
ผู้เขียน: GroupDocs