Mengonversi HTML ke PDF di .NET

Overview

Artikel ini menjelaskan cara mengonversi HTML ke PDF menggunakan C#. Ini mencakup topik-topik berikut.

Potongan kode berikut juga bekerja dengan pustaka Aspose.PDF.Drawing.

Format: HTML

Format: MHTML

Format: WebPage

Konversi HTML ke PDF dengan C#

Konversi HTML ke PDF dengan C#

Aspose.PDF untuk .NET adalah API manipulasi PDF yang memungkinkan Anda mengonversi dokumen HTML yang ada menjadi PDF secara mulus. Proses konversi HTML ke PDF dapat disesuaikan dengan fleksibel.

Mengonversi HTML ke PDF

Contoh kode C# berikut menunjukkan cara mengonversi dokumen HTML menjadi PDF.

Langkah-langkah: Mengonversi HTML ke PDF dalam C#

  1. Buat instance dari kelas HtmlLoadOptions.
  2. Inisialisasi objek Document.
  3. Simpan dokumen PDF keluaran dengan memanggil metode Document.Save().
public static void ConvertHTMLtoPDF()
{
    HtmlLoadOptions options= new HtmlLoadOptions();
    Document pdfDocument= new Document(_dataDir + "test.html", options);
    pdfDocument.Save(_dataDir + "html_test.PDF");
}

Konversi Aspose.PDF HTML ke PDF menggunakan Aplikasi Gratis

Konversi lanjutan dari HTML ke PDF

Mesin Konversi HTML memiliki beberapa opsi yang memungkinkan kita mengontrol proses konversi.

Dukungan Media Queries

Media queries adalah teknik populer untuk menyampaikan style sheet yang disesuaikan ke berbagai perangkat. Kita dapat mengatur tipe perangkat menggunakan properti HtmlMediaType.

public static void ConvertHTMLtoPDFAdvanced_MediaType()
{
    HtmlLoadOptions options = new HtmlLoadOptions
    {
        // setel mode Print atau Screen
        HtmlMediaType = HtmlMediaType.Print
    };
    Document pdfDocument = new Document(_dataDir + "test.html", options);
    pdfDocument.Save(_dataDir + "html_test.PDF");
}

Mengaktifkan (menonaktifkan) penyertaan font

Halaman HTML sering menggunakan font (misalnya font dari folder lokal, Google Fonts, dll). Kita juga dapat mengontrol penyertaan font dalam dokumen menggunakan properti IsEmbedFonts.

public static void ConvertHTMLtoPDFAdvanced_EmbedFonts()
{
    // Menonaktifkan penyertaan font
    HtmlLoadOptions options = new HtmlLoadOptions {IsEmbedFonts = false};
    Document pdfDocument= new Document(_dataDir + "test_fonts.html", options);
    pdfDocument.Save(_dataDir + "html_test.PDF");
}

Mengelola pemuatan sumber daya eksternal

Mesin Konversi menyediakan mekanisme yang memungkinkan Anda untuk mengontrol pemuatan sumber daya tertentu yang terkait dengan dokumen HTML. Kelas HtmlLoadOptions memiliki properti CustomLoaderOfExternalResources yang memungkinkan kita mendefinisikan perilaku pemuat sumber daya. Kelas HtmlLoadOptions memiliki properti CustomLoaderOfExternalResources yang memungkinkan kita menentukan perilaku loader sumber daya. Misalkan kita perlu mengganti semua gambar PNG dengan satu gambar test.jpg dan mengganti URL eksternal dengan internal untuk sumber daya lainnya. Untuk melakukan ini, kita dapat mendefinisikan loader khusus SamePictureLoader dan menunjuk CustomLoaderOfExternalResources ke nama ini.

public static void ConvertHTMLtoPDFAdvanced_DummyImage()
{
    HtmlLoadOptions options = new HtmlLoadOptions
    {
        CustomLoaderOfExternalResources = SamePictureLoader
    };
    Document pdfDocument= new Document(_dataDir + "test.html", options);
    pdfDocument.Save(_dataDir + "html_test.PDF");
}

private static LoadOptions.ResourceLoadingResult SamePictureLoader(string resourceURI)
{
    LoadOptions.ResourceLoadingResult result;

    if (resourceURI.EndsWith(".png"))
    {
        byte[] resultBytes = File.ReadAllBytes(_dataDir + "test.jpg");
        result = new LoadOptions.ResourceLoadingResult(resultBytes)
        {
            //Setel Tipe MIME
            MIMETypeIfKnown = "image/jpeg"
        };
    }
    else
    {
        result = new LoadOptions.ResourceLoadingResult(GetContentFromUrl(resourceURI));
    }
    return result;
}

private static byte[] GetContentFromUrl(string url)
{
    var httpClient = new HttpClient();
    return httpClient.GetByteArrayAsync(url).GetAwaiter().GetResult();
}

Mengonversi Halaman Web ke PDF

Mengonversi halaman web sedikit berbeda dari mengonversi dokumen HTML lokal. Untuk mengonversi isi halaman web ke format PDF, kita dapat terlebih dahulu mengambil isi halaman HTML menggunakan instance HttpClient, membuat objek Stream, mengoper isinya ke objek Dokumen dan merender hasilnya dalam format PDF.

Ketika mengonversi halaman web yang dihosting di webserver ke PDF:

Langkah-langkah: Mengonversi Halaman Web ke PDF dalam C#

  1. Baca isi halaman menggunakan objek HttpClient.
  2. Instansiasi objek HtmlLoadOptions dan atur URL dasar.
  3. Inisialisasi objek Dokumen sambil mengoper objek stream.
  4. Opsional, atur ukuran halaman dan/atau orientasi.
public static void ConvertHTMLtoPDFAdvanced_WebPage()
{
    const string url = "https://en.wikipedia.org/wiki/Aspose_API";
    // Atur ukuran halaman A3 dan orientasi Landscape;   
    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();
    }
}

Menyediakan halaman web kredensial untuk konversi PDF

Terkadang kita perlu melakukan konversi file HTML yang memerlukan otentikasi dan hak akses, sehingga hanya pengguna autentik yang dapat mengambil konten halaman. Ini juga termasuk skenario di mana beberapa sumber/data yang dirujuk di dalam HTML diambil dari server eksternal yang memerlukan otentikasi dan untuk memenuhi kebutuhan ini, properti ExternalResourcesCredentials ditambahkan ke kelas HtmlLoadOptions. Cuplikan kode berikut menunjukkan langkah-langkah untuk mengirimkan kredensial untuk meminta HTML & sumber daya terkaitnya saat mengonversi file HTML ke konversi PDF.

public static void ConvertHTMLtoPDFAdvanced_Authorized()
{
    const string url = "http://httpbin.org/basic-auth/user1/password1";
    var credentials = new NetworkCredential("user1", "password1");
    HtmlLoadOptions options = new HtmlLoadOptions(url)
    {
        ExternalResourcesCredentials = credentials
    };
    Document pdfDocument= new Document(GetContentFromUrlAsStream(url, credentials), 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();
    }
}

Render semua konten HTML dalam satu Halaman

Aspose.PDF untuk .NET menyediakan kemampuan untuk merender semua konten dalam satu halaman saat mengonversi file HTML ke format PDF. Misalnya, jika Anda memiliki beberapa konten HTML yang ukuran keluarannya lebih besar dari satu halaman, Anda dapat menggunakan opsi untuk merender data keluaran ke dalam satu halaman PDF. Untuk menggunakan opsi ini, kelas HtmlLoadOptions diperluas dengan bendera IsRenderToSinglePage. Potongan kode di bawah ini menunjukkan cara menggunakan fungsionalitas ini.

// Untuk contoh lengkap dan file data, silakan kunjungi https://github.com/aspose-pdf/Aspose.PDF-for-.NET
// Jalur ke direktori dokumen.
string dataDir = RunExamples.GetDataDir_AsposePdf_DocumentConversion();
// Inisialisasi HTMLLoadSave Options
HtmlLoadOptions options = new HtmlLoadOptions();
// Atur Render ke properti halaman tunggal
options.IsRenderToSinglePage = true;
// Muat dokumen
Document pdfDocument= new Document(dataDir + "HTMLToPDF.html", options);
// Simpan
pdfDocument.Save(dataDir + "RenderContentToSamePage.pdf");

Render HTML dengan Data SVG

Render HTML dengan Data SVG

Aspose.PDF untuk .NET menyediakan kemampuan untuk mengonversi halaman HTML menjadi dokumen PDF. Karena HTML memungkinkan penambahan elemen grafis SVG sebagai tag di halaman, Aspose.PDF juga mendukung konversi data tersebut ke dalam file PDF hasilnya. Cuplikan kode berikut menunjukkan cara mengonversi file HTML dengan tag grafis SVG ke Dokumen PDF Bertag.

// Untuk contoh lengkap dan file data, silakan kunjungi https://github.com/aspose-pdf/Aspose.PDF-for-.NET
// Jalur ke direktori dokumen.
string dataDir = RunExamples.GetDataDir_AsposePdf_DocumentConversion();
// Tetapkan jalur file masukan
string inFile = dataDir + "HTMLSVG.html";
// Tetapkan jalur file keluaran
string outFile = dataDir + "RenderHTMLwithSVGData.pdf";
// Inisialisasi HtmlLoadOptions
HtmlLoadOptions options = new HtmlLoadOptions(Path.GetDirectoryName(inFile));
// Inisialisasi objek Dokumen
Document pdfDocument = new Document(inFile, options);
// simpan
pdfDocument.Save(outFile);

Konversi MHTML ke PDF

MHTML, singkatan dari MIME HTML, adalah format arsip halaman web yang digunakan untuk menggabungkan sumber daya yang biasanya diwakili oleh tautan eksternal (seperti gambar, animasi Flash, applet Java, dan file audio) dengan kode HTML ke dalam satu file. MHTML, singkatan dari MIME HTML, adalah format arsip halaman web yang digunakan untuk menggabungkan sumber daya yang biasanya diwakili oleh tautan eksternal (seperti gambar, animasi Flash, applet Java, dan file audio) dengan kode HTML ke dalam satu file.

Langkah: Mengonversi MHTML ke PDF dalam C#

  1. Buat sebuah instansi dari kelas MhtLoadOptions.
  2. Inisialisasi objek Document.
  3. Simpan dokumen PDF keluaran dengan memanggil metode Document.Save().
public static void ConvertMHTtoPDF()
{
    MhtLoadOptions options = new MhtLoadOptions()
    {
        PageInfo = { Width = 842, Height = 1191, IsLandscape = true}
    };
    Document pdfDocument= new Document(_dataDir + "fileformatinfo.mht", options);
    pdfDocument.Save(_dataDir + "mhtml_test.PDF");
}

Lihat Juga

Artikel ini juga mencakup topik-topik ini. Artikel ini juga membahas topik-topik ini.

Format: HTML

Format: MHTML

Format: WebPage