Conversão de PDF para HTML

O PDF (Portable Document Format) é um dos formatos de documento amplamente utilizados para compartilhamento de dados e informações entre plataformas. Um de seus recursos exclusivos inclui que a fidelidade de um documento permaneça intacta ao visualizar em qualquer plataforma usando o aplicativo de acordo com as especificações da Adobe. Além disso, o HTML (HyperText Markup Language) também é um formato de arquivo líder para o desenvolvimento de páginas da Web e a maioria dos navegadores da Web suporta esse formato. No entanto, o PDF é amplamente aceito, pois pode ser facilmente visualizado em qualquer dispositivo sem perder a formatação do documento. Portanto, neste artigo, discutiremos as etapas sobre como converter o arquivo HTML para o formato PDF usando a API .NET.

API C# para converter HTML em PDF

Para realizar a operação de conversão, primeiro precisamos instalar o Aspose.PDF for .NET no sistema. A API está disponível na biblioteca NuGet. Execute o seguinte comando no Console do Gerenciador de Pacotes para instalá-lo:

Install-Package Aspose.Pdf

Quando a instalação estiver concluída, o Aspose.PDF para .NET aparecerá na pasta Pacotes no gerenciador de soluções.

Converter HTML para PDF em C#

Abaixo estão as etapas sobre como você pode converter HTML em PDF usando C #

  1. Crie uma instância da classe License para remover quaisquer limitações durante o processo de geração do arquivo PDF.
  2. Crie um objeto da classe HtmlLoadOptions enquanto passa a URL base HTML de entrada como argumento para [HtmlLoadOptions(…)](https:/ /apireference.aspose.com/pdf/net/aspose.pdf/htmlloadoptions) construtor.
  3. Inicialize o objeto da classe Document e passe [HtmlLoadOptions](https://apireference.aspose.com/pdf/net/aspose. pdf/htmlloadoptions) como um argumento para seu construtor.
  4. Chame o método Save(…) do objeto Document e renderize a saída no formato PDF.
// crie um objeto para iniciar a licença
Aspose.Pdf.License license = new Aspose.Pdf.License();

// fornecer o caminho do arquivo de licença
license.SetLicense("/Downloads/Conholdate.Total.NET.lic");

// crie uma instância da classe HtmlLoadOptions
Aspose.Pdf.HtmlLoadOptions htmlLoadOptions = new Aspose.Pdf.HtmlLoadOptions("User/Documents/");

// crie o objeto Document e forneça o caminho do arquivo HTML de entrada
Aspose.Pdf.Document document = new Aspose.Pdf.Document("/Documents/input.html", htmlLoadOptions);

// salve o HTML resultante para o formato PDF
document.Save("/Documents/Converted.pdf");

Incorporar fontes durante a conversão

A maioria das páginas HTML geralmente usa fontes (ig fontes de pastas locais, Google Fonts, etc), e para preservar o layout das páginas, as mesmas fontes devem ser incorporadas durante o processo de renderização. Portanto, para controlar a incorporação de fontes no documento resultante, precisamos usar a propriedade IsEmbedFonts.

// Incorporar fontes durante a conversão
HtmlLoadOptions options = new HtmlLoadOptions {IsEmbedFonts = true};

A unidade de medida em Aspose.PDF é Pontos. E sabemos que o A3 mede 297 × 420 milímetros ou 11,69 × 16,54 polegadas. Assim, as dimensões são arredondadas para 842 × 1190 pontos. No trecho de código a seguir, estamos ajustando o tamanho da página do documento resultante como A3 e a orientação da página como Paisagem.

// Defina o tamanho da página como A3 e a orientação da página como paisagem
HtmlLoadOptions options = new HtmlLoadOptions(url)
{
  PageInfo = {Width = 842, Height = 1191, IsLandscape = true}
};

Converter página da Web em PDF

Além da conversão de arquivos HTML, também podemos ter a necessidade de converter diretamente uma página da Web para o formato PDF. Portanto, para atender a esse requisito, primeiro buscaremos o conteúdo da página da Web remota usando a instância HttpClient, criaremos um objeto Stream e, em seguida, passaremos a instância Stream para o objeto Document. A razão pela qual precisamos do conteúdo em Stream é que a instância Document só aceita arquivos ou objetos steam.

A seção a seguir explica as etapas sobre como converter uma página da Web em PDF usando C#

  1. Leia o conteúdo da página usando um objeto HttpClient.
  2. Instancie o objeto HtmlLoadOptions e defina a URL base.
  3. Inicialize um objeto Document e passe o objeto stream e a instância HtmlLoadOptions como argumentos.
  4. Chame o método Save(String) da classe Document para gerar a saída.
public static void ConvertHTMLtoPDFAdvanced_WebPage()
{
    const string url = "https://en.wikipedia.org/wiki/Aspose_API";
    
    // Defina o tamanho da página A3 e a orientação Paisagem; 
    HtmlLoadOptions options = new HtmlLoadOptions(url)
    {
        // Defina as dimensões da página
        PageInfo = {Width = 842, Height = 1191, IsLandscape = true}
    };
    
    // Criar uma instância do objeto Document
    Document pdfDocument= new Document(GetContentFromUrlAsStream(url), options);
    
    // Salve o resultado
    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))
    {
        // buscar e retornar resultados na instância do stream
        return httpClient.GetStreamAsync(url).GetAwaiter().GetResult();
    }
}

Renderize HTML completo em uma única página

Durante a conversão de HTML para PDF, o comprimento do arquivo resultante está de acordo com o comprimento do conteúdo de um documento HTML de entrada. Portanto, se o HTML de entrada for composto por várias páginas, o arquivo resultante também abrangerá várias páginas. No entanto, podemos limitar a saída a uma única página PDF. Para atender a esse requisito, a propriedade IsRenderToSinglePage da classe HtmlLoadOptions pode ser usada.

Abaixo está o trecho de código para renderizar o conteúdo HTML completo em uma única página PDF usando C#.

// Para exemplos completos e arquivos de dados, acesse https://github.com/aspose-pdf/Aspose.PDF-for-.NET
// Inicialize o objeto HtmlLoadOptions
HtmlLoadOptions options = new HtmlLoadOptions();

// Definir renderização para propriedade de página única
options.IsRenderToSinglePage = true;

// Carregar conteúdo HTML de origem do documento
Document pdfDocument= new Document("/Documents/HTMLToPDF.html", options);

// Salve o arquivo PDF resultante
pdfDocument.Save("/Documents/MyRenderContentToSamePage.pdf");

Obtenha uma licença gratuita

Você pode solicitar uma licença temporária gratuita para experimentar a API sem quaisquer limitações de avaliação.

Conclusão

Neste artigo, aprendemos sobre a abordagem de conversão de arquivos HTML para o formato PDF usando a API .NET. Se você estiver interessado em saber mais sobre outros recursos interessantes oferecidos pelo Aspose.PDF para .NET, visite a página Principais recursos. Um conjunto completo de exemplos pode ser encontrado no repositório GitHub.

Dica rápida

Também desenvolvemos aplicativos online gratuitos para verificar rapidamente os recursos oferecidos por nossas APIs. Portanto, você pode verificar o Aplicativo de conversão Aspose.PDF para transformar o arquivo HTML para o formato PDF. Além disso, você também pode usar vários outros formatos de arquivo e cumprir seus requisitos de conversão.