PDF'den HTML'ye dönüştürme

PDF(Taşınabilir Belge Formatı), platformlar arası veri ve bilgi paylaşımı için yaygın olarak kullanılan belge formatlarından biridir. Benzersiz özelliklerinden biri, Adobe spesifikasyonlarına uygun olarak uygulamayı kullanan herhangi bir platformda görüntülerken belgenin aslına uygunluğunun bozulmadan kalmasıdır. Ayrıca, HTML(HyperText Markup Language) aynı zamanda web sayfası geliştirmede önde gelen bir dosya formatıdır ve çoğu web tarayıcısı bu formatı desteklemektedir. Ancak PDF, belge formatını kaybetmeden herhangi bir cihazda kolayca görüntülenebildiği için yaygın olarak kabul görmektedir. Bu nedenle bu yazımızda .NET API kullanarak HTML dosyasının PDF formatına nasıl dönüştürüleceğine ilişkin adımları ele alacağız.

HTML’yi PDF’ye Dönüştürmek için C# API’si

Dönüştürme işlemini gerçekleştirebilmek için öncelikle sisteme Aspose.PDF for .NET kurmamız gerekiyor. API, NuGet kitaplığında mevcuttur. Yüklemek için lütfen Paket Yönetici Konsolu’nda aşağıdaki komutu çalıştırın:

Install-Package Aspose.Pdf

Kurulum tamamlandıktan sonra Aspose.PDF for .NET, çözüm gezginindeki Paketler klasörü altında görünecektir.

C#’ta HTML’yi PDF’ye dönüştürün

Aşağıda C# kullanarak HTML’yi PDF’ye nasıl dönüştürebileceğinize ilişkin adımlar verilmiştir.

  1. PDF dosyası oluşturma işlemi sırasında tüm sınırlamaları kaldırmak için License sınıfının bir örneğini oluşturun.
  2. Giriş HTML temel URL’sini [HtmlLoadOptions(…)](https:// /apireference.aspose.com/pdf/net/aspose.pdf/htmlloadoptions) yapıcısı.
  3. Document sınıfının nesnesini başlatın ve HtmlLoadOptions iletin. pdf/htmlloadoptions) nesnesini yapıcısının argümanı olarak kullanabilirsiniz.
  4. Belge nesnesinin Save(…) yöntemini çağırın ve çıktıyı PDF formatında oluşturun.
// lisansı başlatmak için bir nesne oluşturun
Aspose.Pdf.License license = new Aspose.Pdf.License();

// lisans dosyasının yolunu sağlayın
license.SetLicense("/Downloads/Conholdate.Total.NET.lic");

// HtmlLoadOptions sınıfının bir örneğini oluşturun
Aspose.Pdf.HtmlLoadOptions htmlLoadOptions = new Aspose.Pdf.HtmlLoadOptions("User/Documents/");

// Belge nesnesi oluşturun ve giriş HTML dosyası yolunu sağlayın
Aspose.Pdf.Document document = new Aspose.Pdf.Document("/Documents/input.html", htmlLoadOptions);

// ortaya çıkan HTML'yi PDF formatına kaydedin
document.Save("/Documents/Converted.pdf");

Dönüştürme sırasında yazı tiplerini gömün

Çoğu HTML sayfası sıklıkla yazı tiplerini kullanır (örn. yerel klasörlerdeki yazı tipleri, Google Yazı Tipleri, vb.) ve sayfaların düzenini korumak için, aynı yazı tipleri oluşturma işlemi sırasında gömülür. Bu nedenle, ortaya çıkan belgeye yazı tiplerinin yerleştirilmesini kontrol etmek için IsEmbedFonts özelliğini kullanmamız gerekir.

// Dönüştürme sırasında yazı tiplerini gömün
HtmlLoadOptions options = new HtmlLoadOptions {IsEmbedFonts = true};

Aspose.PDF’deki ölçü birimi Puan’dır. A3’ün 297 × 420 milimetre veya 11,69 × 16,54 inç boyutlarında olduğunu biliyoruz. Böylece boyutlar 842 × 1190 puana yuvarlanır. Aşağıdaki kod parçasında ortaya çıkan belgenin sayfa boyutunu A3, sayfa yönünü ise Yatay olarak ayarlıyoruz.

// Sayfa boyutunu A3 ve sayfa yönünü Yatay olarak ayarlayın
HtmlLoadOptions options = new HtmlLoadOptions(url)
{
  PageInfo = {Width = 842, Height = 1191, IsLandscape = true}
};

Web sayfasını PDF’ye dönüştürün

HTML dosyalarının dönüştürülmesi dışında, bir web sayfasını doğrudan PDF formatına dönüştürme gereksinimimiz de olabilir. Bu gereksinimi yerine getirmek için öncelikle HttpClient örneğini kullanarak uzak Web sayfası içeriklerini getireceğiz, bir Stream nesnesi oluşturacağız ve ardından Stream örneğini Document nesnesine aktaracağız. Stream’de içeriğe ihtiyaç duymamızın nedeni, Belge örneğinin yalnızca dosyaları veya Steam nesnelerini kabul etmesidir.

Aşağıdaki bölümde C# kullanarak bir Web sayfasını PDF’ye dönüştürme adımları açıklanmaktadır.

  1. Bir HttpClient nesnesini kullanarak sayfanın içeriğini okuyun.
  2. HtmlLoadOptions nesnesini örnekleyin ve temel URL’yi ayarlayın.
  3. Bir Document nesnesini başlatın ve akış nesnesini ve HtmlLoadOptions örneğini bağımsız değişken olarak iletin.
  4. Çıktıyı oluşturmak için Document sınıfından Save(String) yöntemini çağırın.
public static void ConvertHTMLtoPDFAdvanced_WebPage()
{
    const string url = "https://en.wikipedia.org/wiki/Aspose_API";
    
    // Sayfa boyutunu A3 ve Yatay yönünü ayarlayın; 
    HtmlLoadOptions options = new HtmlLoadOptions(url)
    {
        // Sayfa boyutlarını ayarlayın
        PageInfo = {Width = 842, Height = 1191, IsLandscape = true}
    };
    
    // Document nesnesinin bir örneğini oluşturun
    Document pdfDocument= new Document(GetContentFromUrlAsStream(url), options);
    
    // Sonucu kaydet
    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))
    {
        // akış örneğinde sonuçları getir ve döndür
        return httpClient.GetStreamAsync(url).GetAwaiter().GetResult();
    }
}

HTML’nin tamamını tek sayfada oluşturma

HTML’den PDF’ye dönüştürme sırasında, ortaya çıkan dosyanın uzunluğu, giriş HTML belgesinin içerik uzunluğuna göre değişir. Bu nedenle, eğer giriş HTML’si birden fazla sayfadan oluşuyorsa, ortaya çıkan dosya da birden fazla sayfaya yayılacaktır. Ancak çıktıyı tek bir PDF sayfasıyla sınırlandırabiliriz. Bu gereksinimi gerçekleştirmek için HtmlLoadOptions sınıfının IsRenderToSinglePage özelliği kullanılabilir.

Aşağıda, C# kullanarak tüm HTML içeriğini tek bir PDF sayfasında oluşturmaya yönelik kod pasajı verilmiştir.

// Örneklerin ve veri dosyalarının tamamı için lütfen https://github.com/aspose-pdf/Aspose.PDF-for-.NET adresine gidin.
// HtmlLoadOptions nesnesini başlatın
HtmlLoadOptions options = new HtmlLoadOptions();

// Oluşturmayı tek sayfa özelliğine ayarla
options.IsRenderToSinglePage = true;

// Belge kaynağı HTML içeriğini yükle
Document pdfDocument= new Document("/Documents/HTMLToPDF.html", options);

// Ortaya çıkan PDF dosyasını kaydedin
pdfDocument.Save("/Documents/MyRenderContentToSamePage.pdf");

Ücretsiz Lisans Alın

API’yi herhangi bir değerlendirme sınırlaması olmadan denemek için ücretsiz bir geçici lisans talep edebilirsiniz.

Çözüm

Bu yazımızda HTML dosyalarını .NET API kullanarak PDF formatına dönüştürme yaklaşımını öğrendik. Aspose.PDF for .NET tarafından sunulan diğer heyecan verici özellikler hakkında daha fazla bilgi edinmek istiyorsanız lütfen Anahtar özellikler sayfasını ziyaret edin. Örneklerin tam bir setini GitHub deposunda bulabilirsiniz.

Hızlı ipucu

API’lerimizin sunduğu özellikleri hızlı bir şekilde kontrol etmek için ücretsiz çevrimiçi uygulamalar da geliştirdik. HTML dosyasını PDF formatına dönüştürmek için Aspose.PDF Conversion App‘u kontrol edebilirsiniz. Ayrıca, diğer çeşitli dosya formatlarını da kullanabilir ve dönüştürme gereksinimlerinizi karşılayabilirsiniz.