Mengonversi PDF ke HTML di .NET

Ikhtisar

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

Format: HTML

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

Mengonversi PDF ke HTML

Aspose.PDF for .NET menyediakan banyak fitur untuk mengonversi berbagai format file menjadi dokumen PDF dan mengonversi file PDF menjadi berbagai format output. Artikel ini membahas cara mengonversi file PDF menjadi HTML. Aspose.PDF for .NET menyediakan kemampuan untuk mengonversi file HTML menjadi format PDF menggunakan pendekatan InLineHtml. Kami telah menerima banyak permintaan untuk fungsionalitas yang mengonversi file PDF menjadi format HTML dan telah menyediakan fitur ini. Harap dicatat bahwa fitur ini juga mendukung XHTML 1.0.

Aspose.PDF for .NET mendukung fitur untuk mengonversi file PDF menjadi HTML. Tugas utama yang dapat Anda capai dengan pustaka Aspose.PDF tercantum:

  • Mengonversi PDF ke HTML.
  • Memisahkan Output ke HTML Multi-halaman.
  • Menentukan Folder untuk Menyimpan File SVG.
  • Mengompresi Gambar SVG Selama Konversi.
  • Menyimpan gambar sebagai latar belakang PNG.
  • Menentukan Folder Gambar.
  • Membuat File Berikutnya dengan Konten Body Saja.
  • Rendering Teks Transparan.
  • Rendering lapisan dokumen PDF.

Aspose.PDF for .NET menyediakan kode dua baris untuk mengubah file PDF sumber menjadi HTML. Enumerasi SaveFormat berisi nilai Html yang memungkinkan Anda menyimpan file sumber ke HTML. Cuplikan kode berikut menunjukkan proses mengonversi file PDF menjadi HTML.

Langkah: Mengonversi PDF ke HTML di C#

  1. Buat instance objek Document dengan dokumen PDF sumber.
  2. Simpan ke format SaveFormat.Html dengan memanggil metode Document.Save().
// For complete examples and data files, visit https://github.com/aspose-pdf/Aspose.PDF-for-.NET
private static void ConvertPDFtoHTML()
{
    // The path to the documents directory
    var dataDir = RunExamples.GetDataDir_AsposePdf();

    // Open PDF document
    using (var document = new Aspose.Pdf.Document(dataDir + "PDFToHTML.pdf"))
    {
        // Save the output HTML
        document.Save(dataDir + "output_out.html", Aspose.Pdf.SaveFormat.Html);
    }
}

Memisahkan Output ke HTML Multi-halaman

Saat mengonversi file PDF besar dengan beberapa halaman ke format HTML, output muncul sebagai satu halaman HTML. Ini bisa menjadi sangat panjang. Untuk mengontrol ukuran halaman, dimungkinkan untuk memisahkan output menjadi beberapa halaman selama konversi PDF ke HTML. Silakan coba menggunakan cuplikan kode berikut.

// For complete examples and data files, visit https://github.com/aspose-pdf/Aspose.PDF-for-.NET
private static void ConvertPDFtoMultiPageHTML()
{
    // The path to the documents directory
    var dataDir = RunExamples.GetDataDir_AsposePdf();

    // Open PDF document
    using (var document = new Aspose.Pdf.Document(dataDir + "PDFToHTML.pdf"))
    {
        // Instantiate HTML SaveOptions object
        var htmlOptions = new Aspose.Pdf.HtmlSaveOptions
        {
            // Specify to split the output into multiple pages
            SplitIntoPages = true
        };

        // Save the output HTML
        document.Save(dataDir + "MultiPageHTML_out.html", htmlOptions);
    }
}

Menentukan Folder untuk Menyimpan File SVG

Selama konversi PDF ke HTML, dimungkinkan untuk menentukan folder tempat gambar SVG harus disimpan. Gunakan kelas HtmlSaveOption properti SpecialFolderForSvgImages untuk menentukan direktori gambar SVG khusus. Properti ini mendapatkan atau mengatur jalur ke direktori tempat gambar SVG harus disimpan saat ditemukan selama konversi. Jika parameter kosong atau null, maka file SVG apa pun disimpan bersama dengan file gambar lainnya.

// For complete examples and data files, visit https://github.com/aspose-pdf/Aspose.PDF-for-.NET
private static void SavePDFtoHTMLWithSVG()
{
    // The path to the documents directory
    var dataDir = RunExamples.GetDataDir_AsposePdf();

    // Open PDF document
    using (var document = new Aspose.Pdf.Document(dataDir + "PDFToHTML.pdf"))
    {
        // Instantiate HTML save options object
        var newOptions = new Aspose.Pdf.HtmlSaveOptions
        {
            // Specify the folder where SVG images are saved during PDF to HTML conversion
            SpecialFolderForSvgImages = dataDir
        };

        // Save the output HTML
        document.Save(dataDir + "SaveSVGFiles_out.html", newOptions);
    }
}

Mengompresi Gambar SVG Selama Konversi

Untuk mengompresi gambar SVG selama konversi PDF ke HTML, silakan coba menggunakan kode berikut:

// For complete examples and data files, visit https://github.com/aspose-pdf/Aspose.PDF-for-.NET
private static void SavePDFtoCompressedHTMLWithSVG()
{
    // The path to the documents directory
    var dataDir = RunExamples.GetDataDir_AsposePdf();

    // Open PDF document
    using (var document = new Aspose.Pdf.Document(dataDir + "PDFToHTML.pdf"))
    {
        // Create HtmlSaveOptions with tested feature
        var newOptions = new Aspose.Pdf.HtmlSaveOptions
        {
            // Compress the SVG images if there are any
            CompressSvgGraphicsIfAny = true
        };

        // Save the output HTML
        document.Save(dataDir + "CompressedSVGHTML_out.html", newOptions);
    }
}

Menyimpan gambar sebagai latar belakang PNG

Format output default untuk menyimpan gambar adalah SVG. Selama konversi, beberapa gambar dari PDF diubah menjadi gambar vektor SVG. Ini bisa lambat. Sebagai gantinya, gambar dapat diubah menjadi satu file latar belakang PNG untuk setiap halaman.

// For complete examples and data files, visit https://github.com/aspose-pdf/Aspose.PDF-for-.NET
private static void PdfToHtmlSaveImagesAsPngBackground()
{
    // The path to the documents directory
    var dataDir = RunExamples.GetDataDir_AsposePdf_DocumentConversion_PDFToHTMLFormat();
           
    // Create HtmlSaveOption with tested feature
    var htmlSaveOptions = new HtmlSaveOptions();
           
    // Option to save images in PNG format as background for each page.
    htmlSaveOptions.RasterImagesSavingMode = HtmlSaveOptions.RasterImagesSavingModes.AsEmbeddedPartsOfPngPageBackground;

    using (var document = new Aspose.Pdf.Document(dataDir + "input.pdf"))
    {
       document.Save(dataDir + "imagesAsPngBackground_out.html", htmlSaveOptions);         
    }
}

Menentukan Folder Gambar

Kita juga dapat menentukan folder tempat gambar akan disimpan selama konversi PDF ke HTML:

// For complete examples and data files, visit https://github.com/aspose-pdf/Aspose.PDF-for-.NET
private static void SavePDFtoHTMLWithSeparateImageFolder()
{
    // The path to the documents directory
    var dataDir = RunExamples.GetDataDir_AsposePdf();

    // Open PDF document
    using (var document = new Aspose.Pdf.Document(dataDir + "PDFToHTML.pdf"))
    {
        // Create HtmlSaveOptions with tested feature
        var newOptions = new Aspose.Pdf.HtmlSaveOptions
        {
            // Specify the separate folder to save images
            SpecialFolderForAllImages = dataDir
        };

        // Save the output HTML
        document.Save(dataDir + "HTMLWithSeparateImageFolder_out.html", newOptions);
    }
}

Membuat File Berikutnya dengan Konten Body Saja

Baru-baru ini, kami diminta untuk memperkenalkan fitur di mana file PDF diubah menjadi HTML dan pengguna dapat mendapatkan hanya konten dari tag <body> untuk setiap halaman. Ini akan menghasilkan satu file dengan CSS, detail <html>, <head> dan semua halaman di file lain hanya dengan konten <body>.

Untuk memenuhi persyaratan ini, properti baru, HtmlMarkupGenerationMode, diperkenalkan ke kelas HtmlSaveOptions.

Dengan cuplikan kode sederhana berikut, Anda dapat memisahkan output HTML menjadi halaman. Di halaman output, semua objek HTML harus pergi persis ke tempat mereka sekarang (proses font dan output, pembuatan CSS dan output, pembuatan gambar dan output), kecuali bahwa output HTML akan berisi konten yang saat ini ditempatkan di dalam tag (sekarang tag “body” akan dihilangkan). Namun, saat menggunakan pendekatan ini, tautan ke CSS adalah tanggung jawab kode Anda, karena hal-hal seperti akan dihapus. Untuk tujuan ini, Anda dapat membaca CSS melalui File.ReadAllText() dan mengirimkannya melalui AJAX ke halaman web di mana itu akan diterapkan oleh jQuery.

// For complete examples and data files, visit https://github.com/aspose-pdf/Aspose.PDF-for-.NET
private static void ConvertPDFToHTMLWithBodyContent()
{
    // The path to the documents directory
    var dataDir = RunExamples.GetDataDir_AsposePdf();

    // Open PDF document
    using (var document = new Aspose.Pdf.Document(dataDir + "PDFToHTML.pdf"))
    {
        // Initialize HtmlSaveOptions
        var options = new Aspose.Pdf.HtmlSaveOptions
        {
            // Set HtmlMarkupGenerationMode to generate only body content
            HtmlMarkupGenerationMode =
                Aspose.Pdf.HtmlSaveOptions.HtmlMarkupGenerationModes.WriteOnlyBodyContent,

            // Specify to split the output into multiple pages
            SplitIntoPages = true
        };

        // Save the output HTML
        document.Save(dataDir + "CreateSubsequentFiles_out.html", options);
    }
}

Rendering Teks Transparan

Jika file PDF sumber/input mengandung teks transparan yang dibayangi oleh gambar latar depan, maka mungkin ada masalah rendering teks. Jadi untuk mengatasi skenario seperti itu, properti SaveShadowedTextsAsTransparentTexts dan SaveTransparentTexts dapat digunakan.

// For complete examples and data files, visit https://github.com/aspose-pdf/Aspose.PDF-for-.NET
private static void ConvertPDFToHTMLWithTransparentTextRendering()
{
    // The path to the documents directory
    var dataDir = RunExamples.GetDataDir_AsposePdf();

    // Open PDF document
    using (var document = new Aspose.Pdf.Document(dataDir + "PDFToHTML.pdf"))
    {
        // Initialize HtmlSaveOptions
        var htmlOptions = new Aspose.Pdf.HtmlSaveOptions
        {
            // Enable transparent text rendering
            SaveShadowedTextsAsTransparentTexts = true,
            SaveTransparentTexts = true
        };

        // Save the output HTML
        document.Save(dataDir + "TransparentTextRendering_out.html", htmlOptions);
    }
}

Rendering lapisan dokumen PDF

Kita dapat merender lapisan dokumen PDF dalam elemen tipe lapisan terpisah selama konversi PDF ke HTML:

// For complete examples and data files, visit https://github.com/aspose-pdf/Aspose.PDF-for-.NET
private static void ConvertPDFToHTMLWithLayersRendering()
{
    // The path to the documents directory
    var dataDir = RunExamples.GetDataDir_AsposePdf();

    // Open PDF document
    using (var document = new Aspose.Pdf.Document(dataDir + "PDFToHTML.pdf"))
    {
        // Instantiate HTML SaveOptions object
        var htmlOptions = new Aspose.Pdf.HtmlSaveOptions
        {
            // Enable rendering of PDF document layers separately in the output HTML
            ConvertMarkedContentToLayers = true
        };

        // Save the output HTML
        document.Save(dataDir + "LayersRendering_out.html", htmlOptions);
    }
}

Lihat Juga

Artikel ini juga mencakup topik-topik berikut. Kode sama seperti di atas.

Format: HTML