วิธีทำไฮไลต์ PDF และแปลงเป็น HTML ด้วย GroupDocs
การไฮไลต์ข้อความภายใน PDF และแปลงผลลัพธ์เป็นหน้า HTML ที่มีสไตล์เป็นความต้องการทั่วไปสำหรับการตรวจสอบทางกฎหมาย, e‑learning, และการเผยแพร่ดิจิทัล ในบทแนะนำนี้คุณจะได้เรียนรู้ วิธีทำไฮไลต์ PDF ด้วย GroupDocs.Redaction สำหรับ .NET แล้วสร้างผลลัพธ์ HTML ที่ไฮไลต์ซึ่งสามารถฝังลงในพอร์ทัลเว็บหรือระบบการจัดการการเรียนรู้ คู่มือจะพาคุณผ่านการตั้งค่าสภาพแวดล้อม, การกำหนดค่าเส้นทาง, การสร้างหน้า HTML, และการจัดการ URL ของทรัพยากร — ทั้งหมดด้วยสคริปต์ C# ที่พร้อมรัน
คำตอบสั้น
- ไลบรารีที่จัดการการไฮไลต์คืออะไร? GroupDocs.Redaction for .NET.
- เวอร์ชัน .NET ที่รองรับคืออะไร? .NET Framework 4.6+, .NET Core 3.1+, .NET 5/6/7.
- ต้องมีลิขสิทธิ์สำหรับการใช้งานจริงหรือไม่? ใช่ – ลิขสิทธิ์เชิงพาณิชย์จะลบข้อจำกัดของรุ่นทดลอง.
- สามารถประมวลผล PDF ขนาดใหญ่ (หลายร้อยหน้า) ได้หรือไม่? ใช่, API จะสตรีมหน้าและใช้หน่วยความจำต่ำกว่า 200 MB สำหรับไฟล์ 500 หน้า.
- ผลลัพธ์ HTML มีความโต้ตอบหรือไม่? HTML ที่สร้างขึ้นเป็นแบบสถิตแต่มีสไตล์ครบถ้วน; คุณสามารถเพิ่ม JavaScript เพื่อทำให้โต้ตอบได้.
การไฮไลต์ข้อความใน PDF คืออะไร
การไฮไลต์ข้อความใน PDF คือการทำเครื่องหมายภาพที่วาดสีทับด้านหลังอักขระที่เลือก ทำให้ข้อความนั้นโดดเด่นเมื่อดูเอกสาร GroupDocs.Redaction จะเพิ่มการทับสีนี้โดยตรงลงในสตรีมเนื้อหาของ PDF, รักษาเค้าโครงเดิมไว้ขณะเปิดเผยไฮไลต์ใน HTML ที่ส่งออก
ทำไมต้องใช้ GroupDocs.Redaction สำหรับ .NET
GroupDocs.Redaction รองรับ 70+ รูปแบบการนำเข้าและส่งออก, ประมวลผล PDF ได้ถึง 500 หน้า โดยไม่ต้องโหลดไฟล์ทั้งหมดเข้าสู่หน่วยความจำ, และมี API แบบ single‑pass ที่ทำการลบข้อมูลและไฮไลต์พร้อมกัน ความสามารถที่วัดได้เหล่านี้ทำให้เป็นตัวเลือกที่เชื่อถือได้สำหรับโซลูชันเอกสารระดับองค์กร
ข้อกำหนดเบื้องต้น
- สภาพแวดล้อมการพัฒนา: Visual Studio 2022 (หรือใหม่กว่า) พร้อมโครงการ .NET Core 3.1 / .NET 6.
- แพ็กเกจ NuGet:
GroupDocs.Redaction(รุ่นเสถียรล่าสุด). - ความรู้พื้นฐาน: ไวยากรณ์ C#, เส้นทางระบบไฟล์, และพื้นฐาน HTML.
วิธีตั้งค่า GroupDocs.Redaction สำหรับ .NET?
เพื่อทำการติดตั้งไลบรารี, เลือกหนึ่งในสามวิธีที่รองรับ คำสั่ง .NET CLI จะเพิ่มแพ็กเกจลงในไฟล์โครงการของคุณ, Package Manager Console จะรวมเข้าผ่าน NuGet, และ UI จะให้วิธีกราฟิกเพื่อเรียกดูและติดตั้ง ทั้งสามวิธีให้ผลลัพธ์เดียวกันคือการอ้างอิง assembly GroupDocs.Redaction ทำให้คุณเริ่มเขียนโค้ดได้ทันที
ใช้ .NET CLI:
dotnet add package GroupDocs.Redaction
ใช้ Package Manager Console:
Install-Package GroupDocs.Redaction
ใช้ UI ของ NuGet Package Manager: ค้นหา “GroupDocs.Redaction” แล้วคลิก Install.
หลังจากติดตั้ง, เพิ่มคำสั่ง using ที่ส่วนบนของไฟล์ C# ของคุณ:
using GroupDocs.Redaction;
คลาส Feature_InitializeIndexedFileInfo ทำงานอย่างไร
Feature_InitializeIndexedFileInfo เป็นตัวช่วยที่สร้างและจัดเก็บเส้นทางที่จำเป็นสำหรับแคชของ viewer และ PDF ต้นฉบับ
คลาสนี้เตรียมตำแหน่งในระบบไฟล์ที่ viewer และตัวสร้าง HTML พึ่งพา มันสร้างโฟลเดอร์แคชเฉพาะสำหรับไฟล์ชั่วคราว, สร้างชื่อโฟลเดอร์จาก PDF ต้นฉบับ, และเก็บเส้นทางเต็มของเอกสารเดิม คุณสมบัติเหล่านี้ถูกเปิดเผยเป็นสมาชิกแบบอ่าน‑อย่างเท่านั้นสำหรับการประมวลผลต่อไป
// ```csharp
using GroupDocs.Redaction;
// Initialize the Redactor
Redactor redactor = new Redactor("your-file-path.pdf");
วิธีสร้างเส้นทางไฟล์หน้า HTML
Feature_GenerateHtmlPageFilePath สร้างชื่อไฟล์ที่กำหนดได้สำหรับแต่ละหน้า HTML ตามหมายเลขหน้า
คลาสนี้สร้างชื่อไฟล์ที่ระบุเอกลักษณ์ของแต่ละหน้าที่เรนเดอร์, ใช้รูปแบบง่าย p{pageNumber}.html จากนั้นรวมชื่อกับเส้นทางโฟลเดอร์แคชที่สร้างไว้ก่อนหน้าเพื่อให้ได้ตำแหน่งไฟล์ระบบเต็มที่ HTML สามารถบันทึกได้ การตั้งชื่อแบบกำหนดล่วงหน้านี้ช่วยหลีกเลี่ยงการชนกันเมื่อประมวลผล PDF หลายหน้า
// ```csharp
using System.IO;
namespace GroupDocs.Search.Examples.CSharp.HighlightInHtml
{
internal class Feature_InitializeIndexedFileInfo
{
private readonly string _viewerCacheFolderPath;
private readonly string _filePath;
private readonly string _fileFolderName;
private readonly string _fileCacheFolderPath;
public Feature_InitializeIndexedFileInfo(string viewerCacheFolderPath, string filePath)
{
// Store the provided cache folder path.
_viewerCacheFolderPath = viewerCacheFolderPath;
// Store the file path.
_filePath = filePath;
// Extract and modify the file name to create a folder name.
var fileName = Path.GetFileName(_filePath);
_fileFolderName = fileName.Replace(".", "_");
// Combine paths for cache directory.
_fileCacheFolderPath = Path.Combine(viewerCacheFolderPath, _fileFolderName);
}
public string ViewerCacheFolderPath => _viewerCacheFolderPath;
public string FilePath => _filePath;
public string FileFolderName => _fileFolderName;
public string FileCacheFolderPath => _fileCacheFolderPath;
}
}
วิธีสร้างเส้นทางไฟล์ทรัพยากรหน้า HTML และ URL
Feature_GenerateHtmlPageResourceFilePathAndUrl สร้างทั้งเส้นทางไฟล์จริงและ URL เว็บที่สอดคล้องกันสำหรับทรัพยากรของหน้า
ทรัพยากรเช่นรูปภาพ, ฟอนต์, หรือไฟล์ CSS ต้องการทั้งตำแหน่งบนดิสก์และ URL ที่เบราว์เซอร์สามารถร้องขอได้ คลาสนี้รับหมายเลขหน้าและชื่อทรัพยากร, แล้วคืนค่า tuple ที่มีเส้นทางระบบไฟล์เต็มภายในโฟลเดอร์แคชและ URL เสมือนที่เว็บเซิร์ฟเวอร์สามารถแมปได้ วิธีนี้ทำให้การอ้างอิงทรัพยากรคงที่ระหว่างหน้าที่สร้าง
// ```csharp
using System.IO;
namespace GroupDocs.Search.Examples.CSharp.HighlightInHtml
{
internal class Feature_GenerateHtmlPageFilePath
{
private readonly string _fileCacheFolderPath;
public Feature_GenerateHtmlPageFilePath(string fileCacheFolderPath)
{
// Initialize with cache folder path.
_fileCacheFolderPath = fileCacheFolderPath;
}
public string GetHtmlPageFilePath(int pageNumber)
{
// Create a page-specific HTML file name.
string pageFileName = $"p{pageNumber}.html";
// Combine paths for the full file location.
string pageFilePath = Path.Combine(_fileCacheFolderPath, pageFileName);
return pageFilePath;
}
}
}
การประยุกต์ใช้งานจริง
- การตรวจสอบเอกสารทางกฎหมาย: ไฮไลต์ข้อกำหนด, ส่งออกเป็น HTML, และให้ทนายความแสดงความคิดเห็นในเบราว์เซอร์.
- เนื้อหา e‑learning: แปลง PDF บรรยายที่มีคำอธิบายเป็นหน้าเว็บโต้ตอบพร้อมการไฮไลต์ที่ค้นหาได้.
- การเผยแพร่ดิจิทัล: สร้างเวอร์ชันเว็บของนิตยสารที่มีส่วนที่ไฮไลต์เพื่อดึงดูดความสนใจของผู้อ่าน.
สถานการณ์เหล่านี้ได้รับประโยชน์จาก high‑performance streaming ที่ GroupDocs.Redaction มอบให้, ทำให้คุณจัดการเอกสารหลายพันฉบับต่อวันได้
ปัญหาทั่วไปและวิธีแก้
| ปัญหา | สาเหตุ | วิธีแก้ |
|---|---|---|
| ไฮไลต์ไม่แสดงใน HTML | ไม่มีคลาส CSS ในหน้า HTML ที่สร้าง | ตรวจสอบให้แน่ใจว่าได้อ้างอิง highlight.css ของ viewer หรือฝังบล็อกสไตล์ด้วยตนเอง. |
| ข้อผิดพลาดหน่วยความจำไม่พอเมื่อประมวลผล PDF ขนาดใหญ่ | ใช้ Document.Load โดยไม่สตรีม | ใช้ RedactorOptions พร้อม EnableStreaming = true. |
| URL ของทรัพยากรคืนค่า 404 | การกำหนดค่า base URL ไม่ถูกต้อง | ตั้งค่า RedactionViewerOptions.BaseUrl ให้เป็นรูทของโฟลเดอร์ไฟล์สถิตของคุณ. |
คำถามที่พบบ่อย
Q: ฉันสามารถไฮไลต์หลายส่วนใน PDF เดียวพร้อมกันได้หรือไม่?
A: ได้. ส่งคอลเลกชันของอ็อบเจ็กต์ RedactionRegion ไปยัง Redactor.Apply และแต่ละส่วนจะถูกไฮไลต์ในกระบวนการเดียว.
Q: API รองรับการไฮไลต์แบบตามคีย์เวิร์ดหรือไม่?
A: รองรับ. ใช้ Redactor.Search เพื่อค้นหาทุกการปรากฏของคำ, แล้วนำไปใช้ไฮไลต์ด้วย redaction.
Q: ผลลัพธ์ HTML มีความโต้ตอบ (เช่น คลิกเพื่อไปยังหน้า) หรือไม่?
A: ผลลัพธ์เริ่มต้นเป็นแบบสถิติ, แต่คุณสามารถแทรก JavaScript หลังการสร้างเพื่อเพิ่มการนำทาง, tooltip, หรือ handler การคลิกที่กำหนดเอง.
Q: ฉันจะเปลี่ยนสีของไฮไลต์ได้อย่างไร?
A: แก้ไขคลาส CSS .redaction-highlight ใน HTML ที่ส่งออก หรือกำหนดคุณสมบัติ HighlightColor บน RedactionOptions ก่อนทำการประยุกต์.
Q: วิธีนี้จะทำงานกับ PDF ที่ใหญ่กว่า 1 GB หรือไม่?
A: ทำได้, เพียงเปิดใช้งานการสตรีมและจัดสรรพื้นที่ดิสก์ชั่วคราวเพียงพอ; API จะไม่โหลดเอกสารทั้งหมดเข้าสู่ RAM.
สรุป
คุณมีเวิร์กโฟลว์ที่ครบถ้วนและพร้อมใช้งานในระดับการผลิตสำหรับ วิธีทำไฮไลต์ PDF และแปลงเป็นหน้า HTML ที่ไฮไลต์โดยใช้ GroupDocs.Redaction สำหรับ .NET โดยการกำหนดค่า indexed file info, สร้างเส้นทาง HTML ที่กำหนดล่วงหน้า, และจัดการ URL ของทรัพยากร, คุณสามารถผสานโซลูชันนี้เข้ากับระบบจัดการเอกสารบน .NET ใด ๆ, พอร์ทัลตรวจสอบกฎหมาย, หรือแพลตฟอร์ม e‑learning
อัปเดตล่าสุด: 2026-08-20
ทดสอบด้วย: GroupDocs.Redaction 23.12 for .NET
ผู้เขียน: GroupDocs
using System.IO;
namespace GroupDocs.Search.Examples.CSharp.HighlightInHtml
{
internal class Feature_GenerateHtmlPageResourceFilePathAndUrl
{
private readonly string _fileCacheFolderPath;
public Feature_GenerateHtmlPageResourceFilePathAndUrl(string fileCacheFolderPath)
{
// Initialize with the cache folder path.
_fileCacheFolderPath = fileCacheFolderPath;
}
public string GetHtmlPageResourceFilePath(int pageNumber, string resourceFileName)
{
// Construct a unique name for resources.
string resFileName = GetResourceFileName(pageNumber, resourceFileName);
// Combine paths to form full resource path.
string resFilePath = Path.Combine(_fileCacheFolderPath, resFileName);
return resFilePath;
}
public string GetHtmlPageResourceUrl(int pageNumber, string resourceFileName)
{
// Generate a URL-like string for the resource.
return GetResourceFileName(pageNumber, resourceFileName);
}
private static string GetResourceFileName(int pageNumber, string resourceFileName)
{
// Construct resource names based on page number and file name.
var resFileName = $"p{pageNumber}_{resourceFileName}";
return resFileName;
}
}
}