การแปลง PDF เป็น HTML

PDF(Portable Document Format) เป็นหนึ่งในรูปแบบเอกสารที่ใช้กันอย่างแพร่หลายสำหรับข้อมูลข้ามแพลตฟอร์มและการแบ่งปันข้อมูล ความสามารถพิเศษประการหนึ่ง ได้แก่ ความเที่ยงตรงของเอกสารยังคงเดิมเมื่อดูบนแพลตฟอร์มใดๆ โดยใช้แอปพลิเคชันตามข้อกำหนดของ Adobe นอกจากนี้ HTML(HyperText Markup Language) ยังเป็นรูปแบบไฟล์ชั้นนำสำหรับการพัฒนาหน้าเว็บ และเว็บเบราว์เซอร์ส่วนใหญ่รองรับรูปแบบนี้ อย่างไรก็ตาม PDF ได้รับการยอมรับอย่างกว้างขวาง เนื่องจากสามารถดูได้อย่างง่ายดายบนอุปกรณ์ใดๆ ก็ตาม โดยไม่สูญเสียการจัดรูปแบบเอกสาร ดังนั้น ในบทความนี้ เราจะพูดถึงขั้นตอนในการแปลงไฟล์ HTML เป็นรูปแบบ PDF โดยใช้ .NET API

C# API เพื่อแปลง HTML เป็น PDF

เพื่อดำเนินการแปลง ขั้นแรกเราต้องติดตั้ง Aspose.PDF for .NET บนระบบ API มีอยู่ในไลบรารี NuGet โปรดรันคำสั่งต่อไปนี้บน Package Manager Console เพื่อติดตั้ง:

Install-Package Aspose.Pdf

เมื่อการติดตั้งเสร็จสมบูรณ์ Aspose.PDF for .NET จะปรากฏใต้โฟลเดอร์แพ็คเกจในตัวสำรวจโซลูชัน

แปลง HTML เป็น PDF ใน C#

ด้านล่างนี้เป็นขั้นตอนเกี่ยวกับวิธีการแปลง HTML เป็น PDF โดยใช้ C#

  1. สร้างอินสแตนซ์ของคลาส License เพื่อลบข้อจำกัดใดๆ ในระหว่างกระบวนการสร้างไฟล์ PDF
  2. สร้างออบเจ็กต์ของคลาส HtmlLoadOptions ในขณะที่ส่ง URL ฐาน HTML อินพุตเป็นอาร์กิวเมนต์ไปยัง [HtmlLoadOptions(…)](https:/ /apireference.aspose.com/pdf/net/aspose.pdf/htmlloadoptions) ตัวสร้าง
  3. เริ่มต้นออบเจ็กต์ของคลาส Document และส่งผ่าน [HtmlLoadOptions](https://apireference.aspose.com/pdf/net/aspose pdf/htmlloadoptions) เป็นอาร์กิวเมนต์ของตัวสร้าง
  4. เรียกใช้เมธอด Save(…) ของอ็อบเจ็กต์ Document และเรนเดอร์เอาต์พุตในรูปแบบ PDF
// สร้างวัตถุเพื่อเริ่มต้นใบอนุญาต
Aspose.Pdf.License license = new Aspose.Pdf.License();

// จัดเตรียมเส้นทางของไฟล์ลิขสิทธิ์
license.SetLicense("/Downloads/Conholdate.Total.NET.lic");

// สร้างอินสแตนซ์ของคลาส HtmlLoadOptions
Aspose.Pdf.HtmlLoadOptions htmlLoadOptions = new Aspose.Pdf.HtmlLoadOptions("User/Documents/");

// สร้างวัตถุเอกสารและระบุเส้นทางไฟล์ HTML อินพุต
Aspose.Pdf.Document document = new Aspose.Pdf.Document("/Documents/input.html", htmlLoadOptions);

// บันทึกผลลัพธ์ HTML เป็นรูปแบบ PDF
document.Save("/Documents/Converted.pdf");

ฝังแบบอักษรระหว่างการแปลง

หน้า HTML ส่วนใหญ่มักใช้แบบอักษร (แบบอักษร ig จากโฟลเดอร์ในเครื่อง, แบบอักษรของ Google ฯลฯ) และเพื่อรักษาเค้าโครงของหน้า แบบอักษรเดียวกันจะต้องถูกฝังในระหว่างกระบวนการแสดงผล ดังนั้นเพื่อควบคุมการฝังแบบอักษรในเอกสารผลลัพธ์ เราจำเป็นต้องใช้คุณสมบัติ IsEmbedFonts

// ฝังแบบอักษรระหว่างการแปลง
HtmlLoadOptions options = new HtmlLoadOptions {IsEmbedFonts = true};

หน่วยการวัดใน Aspose.PDF คือ Points และเรารู้ว่า A3 มีขนาด 297 × 420 มม. หรือ 11.69 × 16.54 นิ้ว ดังนั้นขนาดจะถูกปัดเศษเป็น 842 × 1190 จุด ในข้อมูลโค้ดต่อไปนี้ เรากำลังปรับขนาดหน้าของเอกสารผลลัพธ์เป็น A3 และการวางแนวหน้าเป็นแนวนอน

// ตั้งค่าขนาดหน้าเป็น A3 และการวางแนวหน้าเป็นแนวนอน
HtmlLoadOptions options = new HtmlLoadOptions(url)
{
  PageInfo = {Width = 842, Height = 1191, IsLandscape = true}
};

แปลงเว็บเพจเป็น PDF

นอกเหนือจากการแปลงไฟล์ HTML เราอาจมีข้อกำหนดในการแปลงหน้าเว็บเป็นรูปแบบ PDF โดยตรง ดังนั้นเพื่อให้บรรลุข้อกำหนดนี้ ขั้นแรกเราจะดึงเนื้อหาเว็บเพจระยะไกลโดยใช้อินสแตนซ์ HttpClient สร้างวัตถุ Stream จากนั้นส่งอินสแตนซ์ Stream ไปยังวัตถุ Document เหตุผลที่เราต้องการเนื้อหาใน Stream ก็คืออินสแตนซ์ Document ยอมรับเฉพาะไฟล์หรืออ็อบเจ็กต์ Steam เท่านั้น

ส่วนต่อไปนี้จะอธิบายขั้นตอนในการแปลงเว็บเพจเป็น PDF โดยใช้ C#

  1. อ่านเนื้อหาของหน้าโดยใช้วัตถุ HttpClient
  2. สร้างอินสแตนซ์ของวัตถุ HtmlLoadOptions และตั้งค่า URL พื้นฐาน
  3. เริ่มต้นวัตถุ Document และส่งผ่านวัตถุ stream และอินสแตนซ์ HtmlLoadOptions เป็นอาร์กิวเมนต์
  4. เรียกเมธอด Save(String) จากคลาส Document เพื่อสร้างเอาต์พุต
public static void ConvertHTMLtoPDFAdvanced_WebPage()
{
    const string url = "https://en.wikipedia.org/wiki/Aspose_API";
    
    // ตั้งค่าขนาดหน้า A3 และการวางแนวแนวนอน 
    HtmlLoadOptions options = new HtmlLoadOptions(url)
    {
        // กำหนดขนาดหน้า
        PageInfo = {Width = 842, Height = 1191, IsLandscape = true}
    };
    
    // สร้างอินสแตนซ์ของวัตถุเอกสาร
    Document pdfDocument= new Document(GetContentFromUrlAsStream(url), options);
    
    // บันทึกผลลัพธ์
    pdfDocument.Save(_dataDir + "html_test.PDF");
}

private static Stream GetContentFromUrlAsStream(string url, ICredentials credentials = null)
{
    
    using (var handler = new HttpClientHandler { Credentials = credentials })
    using (var httpClient = new HttpClient(handler))
    {
        // ดึงข้อมูลและส่งคืนผลลัพธ์ในอินสแตนซ์สตรีม
        return httpClient.GetStreamAsync(url).GetAwaiter().GetResult();
    }
}

แสดงผล HTML ที่สมบูรณ์ในหน้าเดียว

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

ด้านล่างนี้คือข้อมูลโค้ดสำหรับแสดงผลเนื้อหา HTML ที่สมบูรณ์ในหน้า PDF หน้าเดียวโดยใช้ C#

// หากต้องการดูตัวอย่างและไฟล์ข้อมูลทั้งหมด โปรดไปที่ https://github.com/aspose-pdf/Aspose.PDF-for-.NET
// เตรียมใช้งานวัตถุ HtmlLoadOptions
HtmlLoadOptions options = new HtmlLoadOptions();

// ตั้งค่าการแสดงผลเป็นคุณสมบัติหน้าเดียว
options.IsRenderToSinglePage = true;

// โหลดเนื้อหา HTML แหล่งที่มาของเอกสาร
Document pdfDocument= new Document("/Documents/HTMLToPDF.html", options);

// บันทึกไฟล์ PDF ที่เป็นผลลัพธ์
pdfDocument.Save("/Documents/MyRenderContentToSamePage.pdf");

รับใบอนุญาตฟรี

คุณสามารถขอ ใบอนุญาตชั่วคราวฟรี เพื่อลองใช้ API โดยไม่มีข้อจำกัดในการประเมินใดๆ

บทสรุป

ในบทความนี้ เราได้เรียนรู้เกี่ยวกับวิธีการแปลงไฟล์ HTML เป็นรูปแบบ PDF โดยใช้ .NET API หากคุณสนใจที่จะเรียนรู้เพิ่มเติมเกี่ยวกับคุณสมบัติที่น่าตื่นเต้นอื่นๆ ที่ Aspose.PDF for .NET นำเสนอ โปรดไปที่หน้า คุณสมบัติหลัก สามารถดูชุดตัวอย่างทั้งหมดได้ที่ ที่เก็บ GitHub

เคล็ดลับด่วน

นอกจากนี้เรายังได้พัฒนาแอปพลิเคชันออนไลน์ฟรีเพื่อตรวจสอบฟีเจอร์ที่ API ของเรานำเสนออย่างรวดเร็ว ดังนั้นคุณสามารถตรวจสอบ Aspose.PDF Conversion App เพื่อแปลงไฟล์ HTML เป็นรูปแบบ PDF นอกจากนี้คุณยังสามารถใช้รูปแบบไฟล์อื่น ๆ และปฏิบัติตามข้อกำหนดในการแปลงของคุณได้