Konwersja PDF do HTML

PDF(Portable Document Format) to jeden z powszechnie używanych formatów dokumentów do międzyplatformowego udostępniania danych i informacji. Jedną z jego unikalnych możliwości jest to, że wierność dokumentu pozostaje nienaruszona podczas przeglądania na dowolnej platformie przy użyciu aplikacji zgodnie ze specyfikacjami Adobe. Co więcej, HTML(HyperText Markup Language) jest także wiodącym formatem plików do tworzenia stron internetowych i większość przeglądarek internetowych obsługuje ten format. Jednak format PDF jest powszechnie akceptowany, ponieważ można go łatwo przeglądać na dowolnym urządzeniu bez utraty formatowania dokumentu. Dlatego w tym artykule omówimy kroki, jak przekonwertować plik HTML do formatu PDF przy użyciu .NET API.

API C# do konwersji HTML na PDF

Aby wykonać operację konwersji, w pierwszej kolejności musimy zainstalować w systemie Aspose.PDF for .NET. Interfejs API jest dostępny w bibliotece NuGet. Aby go zainstalować, uruchom następującą komendę w konsoli Menedżera pakietów:

Install-Package Aspose.Pdf

Po zakończeniu instalacji plik Aspose.PDF for .NET pojawi się w folderze Packages w Eksploratorze rozwiązań.

Konwertuj HTML na PDF w C#

Poniżej znajdują się kroki, w jaki sposób można przekonwertować HTML na PDF za pomocą C#

  1. Utwórz instancję klasy License, aby usunąć wszelkie ograniczenia podczas procesu generowania pliku PDF.
  2. Utwórz obiekt klasy HtmlLoadOptions, przekazując wejściowy bazowy adres URL HTML jako argument do [HtmlLoadOptions(…)](https:/ /apireference.aspose.com/pdf/net/aspose.pdf/htmlloadoptions) konstruktor.
  3. Zainicjuj obiekt klasy Document i przekaż [HtmlLoadOptions](https://apireference.aspose.com/pdf/net/aspose. pdf/htmlloadoptions) jako argument jego konstruktora.
  4. Wywołaj metodę Save(…) obiektu Document i wyrenderuj wynik w formacie PDF.
// utwórz obiekt, aby zainicjować licencję
Aspose.Pdf.License license = new Aspose.Pdf.License();

// podaj ścieżkę pliku licencji
license.SetLicense("/Downloads/Conholdate.Total.NET.lic");

// utwórz instancję klasy HtmlLoadOptions
Aspose.Pdf.HtmlLoadOptions htmlLoadOptions = new Aspose.Pdf.HtmlLoadOptions("User/Documents/");

// utwórz obiekt Dokument i podaj ścieżkę wejściowego pliku HTML
Aspose.Pdf.Document document = new Aspose.Pdf.Document("/Documents/input.html", htmlLoadOptions);

// zapisz wynikowy kod HTML w formacie PDF
document.Save("/Documents/Converted.pdf");

Osadzaj czcionki podczas konwersji

Większość stron HTML często korzysta z czcionek (np. czcionek z folderów lokalnych, czcionek Google itp.) i aby zachować układ stron, te same czcionki zostaną osadzone podczas procesu renderowania. Aby więc kontrolować osadzanie czcionek w powstałym dokumencie, musimy użyć właściwości IsEmbedFonts.

// Osadzaj czcionki podczas konwersji
HtmlLoadOptions options = new HtmlLoadOptions {IsEmbedFonts = true};

Jednostką miary w Aspose.PDF są punkty. Wiemy, że format A3 ma wymiary 297 × 420 milimetrów lub 11,69 × 16,54 cala. Zatem wymiary są zaokrąglane do 842 × 1190 punktów. W poniższym fragmencie kodu dostosowujemy rozmiar strony wynikowego dokumentu do formatu A3 i orientację strony do poziomej.

// Ustaw Rozmiar strony na A3 i orientację strony na Poziomą
HtmlLoadOptions options = new HtmlLoadOptions(url)
{
  PageInfo = {Width = 842, Height = 1191, IsLandscape = true}
};

Konwertuj stronę internetową do formatu PDF

Oprócz konwersji plików HTML może być również wymagana bezpośrednia konwersja strony internetowej do formatu PDF. Aby więc spełnić to wymaganie, najpierw pobierzemy zawartość zdalnej strony WWW za pomocą instancji HttpClient, utworzymy obiekt Stream, a następnie przekażemy instancję Stream do obiektu Document. Powodem, dla którego potrzebujemy treści w Streamie, jest to, że instancja Document akceptuje tylko pliki lub obiekty Steam.

W poniższej sekcji opisano kroki konwertowania strony internetowej do formatu PDF przy użyciu języka C#

  1. Przeczytaj zawartość strony za pomocą obiektu HttpClient.
  2. Utwórz instancję obiektu HtmlLoadOptions i ustaw podstawowy adres URL.
  3. Zainicjuj obiekt Document i przekaż obiekt strumienia oraz instancję HtmlLoadOptions jako argumenty.
  4. Wywołaj metodę Save(String) z klasy Document, aby wygenerować dane wyjściowe.
public static void ConvertHTMLtoPDFAdvanced_WebPage()
{
    const string url = "https://en.wikipedia.org/wiki/Aspose_API";
    
    // Ustaw rozmiar strony A3 i orientację poziomą; 
    HtmlLoadOptions options = new HtmlLoadOptions(url)
    {
        // Ustaw wymiary strony
        PageInfo = {Width = 842, Height = 1191, IsLandscape = true}
    };
    
    // Utwórz instancję obiektu Document
    Document pdfDocument= new Document(GetContentFromUrlAsStream(url), options);
    
    // Zapisz wynik
    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))
    {
        // pobieraj i zwracaj wyniki w instancji strumienia
        return httpClient.GetStreamAsync(url).GetAwaiter().GetResult();
    }
}

Renderuj cały kod HTML na jednej stronie

Podczas konwersji HTML na PDF długość wynikowego pliku jest zgodna z długością zawartości wejściowego dokumentu HTML. Dlatego też, jeśli wejściowy kod HTML składa się z wielu stron, wynikowy plik również będzie obejmował wiele stron. Możemy jednak ograniczyć dane wyjściowe do pojedynczej strony PDF. Aby spełnić ten wymóg, można wykorzystać właściwość IsRenderToSinglePage klasy HtmlLoadOptions.

Poniżej podano fragment kodu umożliwiający renderowanie całej zawartości HTML na pojedynczej stronie pliku PDF przy użyciu języka C#.

// Kompletne przykłady i pliki danych można znaleźć na stronie https://github.com/aspose-pdf/Aspose.PDF-for-.NET
// Zainicjuj obiekt HtmlLoadOptions
HtmlLoadOptions options = new HtmlLoadOptions();

// Ustaw renderowanie na właściwość pojedynczej strony
options.IsRenderToSinglePage = true;

// Załaduj źródłową treść HTML dokumentu
Document pdfDocument= new Document("/Documents/HTMLToPDF.html", options);

// Zapisz wynikowy plik PDF
pdfDocument.Save("/Documents/MyRenderContentToSamePage.pdf");

Zdobądź bezpłatną licencję

Możesz poprosić o bezpłatną licencję tymczasową, aby wypróbować interfejs API bez żadnych ograniczeń ewaluacyjnych.

Wniosek

W tym artykule poznaliśmy podejście do konwersji plików HTML do formatu PDF za pomocą .NET API. Jeśli chcesz dowiedzieć się więcej o innych ekscytujących funkcjach oferowanych przez Aspose.PDF for .NET, odwiedź stronę Kluczowe funkcje. Kompletny zestaw przykładów można znaleźć w repozytorium GitHub.

Szybka wskazówka

Opracowaliśmy także bezpłatne aplikacje internetowe umożliwiające szybkie sprawdzenie funkcjonalności oferowanych przez nasze API. Możesz więc sprawdzić Aplikację do konwersji Aspose.PDF, aby przekształcić plik HTML do formatu PDF. Ponadto możesz także używać różnych innych formatów plików i spełniać swoje wymagania dotyczące konwersji.