Analyzing your prompt, please hold on...
An error occurred while retrieving the results. Please refresh the page and try again.
Este artigo explica como converter PDF para HTML usando C#. Ele cobre os seguintes tópicos.
O seguinte trecho de código também funciona com a biblioteca Aspose.PDF.Drawing.
Aspose.PDF for .NET oferece muitos recursos para converter vários formatos de arquivo em documentos PDF e converter arquivos PDF em vários formatos de saída. Este artigo discute como converter um arquivo PDF em HTML. Aspose.PDF for .NET fornece a capacidade de converter arquivos HTML em formato PDF usando a abordagem InLineHtml. Recebemos muitos pedidos por uma funcionalidade que converte um arquivo PDF em formato HTML e fornecemos esse recurso. Observe que esse recurso também suporta XHTML 1.0.
Aspose.PDF for .NET suporta os recursos para converter um arquivo PDF em HTML. As principais tarefas que você pode realizar com a biblioteca Aspose.PDF estão listadas:
Tente converter PDF para HTML online
Aspose.PDF for .NET apresenta a você um aplicativo online gratuito “PDF para HTML”, onde você pode tentar investigar a funcionalidade e a qualidade com que funciona.
Aspose.PDF for .NET fornece um código de duas linhas para transformar um arquivo PDF de origem em HTML. A SaveFormat enumeration
contém o valor Html que permite salvar o arquivo de origem em HTML. O seguinte trecho de código mostra o processo de conversão de um arquivo PDF em HTML.
// 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);
}
}
Ao converter um grande arquivo PDF com várias páginas para o formato HTML, a saída aparece como uma única página HTML. Isso pode acabar sendo muito longo. Para controlar o tamanho da página, é possível dividir a saída em várias páginas durante a conversão de PDF para HTML. Tente usar o seguinte trecho de código.
// 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);
}
}
Durante a conversão de PDF para HTML, é possível especificar a pasta onde as imagens SVG devem ser salvas. Use a HtmlSaveOption class
SpecialFolderForSvgImages property
para especificar um diretório especial para imagens SVG. Esta propriedade obtém ou define o caminho para o diretório onde as imagens SVG devem ser salvas quando encontradas durante a conversão. Se o parâmetro estiver vazio ou nulo, então quaisquer arquivos SVG são salvos junto com outros arquivos de imagem.
// 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);
}
}
Para compactar imagens SVG durante a conversão de PDF para HTML, tente usar o seguinte código:
// 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);
}
}
O formato de saída padrão para salvar imagens é SVG. Durante a conversão, algumas imagens do PDF são transformadas em imagens vetoriais SVG. Isso pode ser lento. Em vez disso, as imagens podem ser transformadas em um arquivo de fundo PNG para cada página.
// 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);
}
}
Também podemos especificar a pasta onde as imagens serão salvas durante a conversão de PDF para 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);
}
}
Recentemente, fomos solicitados a introduzir um recurso onde arquivos PDF são convertidos em HTML e o usuário pode obter apenas os conteúdos da tag <body>
para cada página. Isso produziria um arquivo com detalhes de CSS, <html>
, <head>
e todas as páginas em outros arquivos apenas com conteúdos de <body>
.
Para atender a essa exigência, uma nova propriedade, HtmlMarkupGenerationMode, foi introduzida na classe HtmlSaveOptions.
Com o seguinte trecho de código simples, você pode dividir a saída HTML em páginas. Nas páginas de saída, todos os objetos HTML devem ir exatamente para onde vão agora (processamento e saída de fontes, criação e saída de CSS, criação e saída de imagens), exceto que o HTML de saída conterá conteúdos atualmente colocados dentro das tags (agora as tags “body” serão omitidas). No entanto, ao usar essa abordagem, o link para o CSS é responsabilidade do seu código, porque coisas como serão removidas. Para esse propósito, você pode ler o CSS via File.ReadAllText() e enviá-lo via AJAX para uma página da web onde será aplicado pelo 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);
}
}
Caso o arquivo PDF de origem/entrada contenha textos transparentes sombreado por imagens de primeiro plano, pode haver problemas de renderização de texto. Portanto, para atender a tais cenários, as propriedades SaveShadowedTextsAsTransparentTexts e SaveTransparentTexts podem ser usadas.
// 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);
}
}
Podemos renderizar camadas de documentos PDF em um elemento de tipo camada separado durante a conversão de PDF para 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);
}
}
Este código mostra um exemplo de salvar o arquivo recebido em um stream. Qualquer tipo de stream pode ser usado para salvar. Este fragmento de código também descreve como funcionam as estratégias de salvamento personalizadas.
// Para exemplos completos e arquivos de dados, visite https://github.com/aspose-pdf/Aspose.PDF-for-.NET
private static string _folderForReferencedResources;
private static void ConvertPDFtoHTMLWithStream()
{
// O caminho para o diretório de documentos
var dataDir = RunExamples.GetDataDir_AsposePdf();
// Abrir documento PDF
using (var doc = new Aspose.Pdf.Document(dataDir + "PDFToHTML.pdf"))
{
var streamFilePath = dataDir + "saveToStream.html";
_folderForReferencedResources = dataDir + @"/saveFolder/";
// Limpando arquivos existentes
if (Directory.Exists(_folderForReferencedResources))
{
Directory.Delete(_folderForReferencedResources, true);
}
// Limpando arquivos existentes
if (File.Exists(streamFilePath))
{
File.Delete(streamFilePath);
}
var saveOptions = new Aspose.Pdf.HtmlSaveOptions();
// Configurando estratégias personalizadas para conversão
saveOptions.CustomResourceSavingStrategy = new Aspose.Pdf.HtmlSaveOptions.ResourceSavingStrategy(StrategyCustomSaveResources);
saveOptions.CustomCssSavingStrategy = new Aspose.Pdf.HtmlSaveOptions.CssSavingStrategy(StrategyCssSaving);
saveOptions.CustomStrategyOfCssUrlCreation = new Aspose.Pdf.HtmlSaveOptions.CssUrlMakingStrategy(StrategyCssNaming);
using (Stream saveStream = File.OpenWrite(streamFilePath))
{
// Salvar documento no stream
doc.Save(saveStream, saveOptions);
}
}
}
private static void StrategyCssSaving(Aspose.Pdf.HtmlSaveOptions.CssSavingInfo resourceInfo)
{
// Limpando arquivos existentes
if (!System.IO.Directory.Exists(_folderForReferencedResources))
{
System.IO.Directory.CreateDirectory(_folderForReferencedResources);
}
// Criar um caminho para um css
string path = _folderForReferencedResources + Path.GetFileName(resourceInfo.SupposedURL);
var reader = new System.IO.BinaryReader(resourceInfo.ContentStream);
// Gravando um css no caminho criado
System.IO.File.WriteAllBytes(path, reader.ReadBytes((int)resourceInfo.ContentStream.Length));
}
private static string StrategyCssNaming(Aspose.Pdf.HtmlSaveOptions.CssUrlRequestInfo requestInfo)
{
return _folderForReferencedResources + "css_style{0}.css";
}
private static string StrategyCustomSaveResources(Aspose.Pdf.SaveOptions.ResourceSavingInfo resourceSavingInfo)
{
// Limpando arquivos existentes
if (!System.IO.Directory.Exists(_folderForReferencedResources))
{
System.IO.Directory.CreateDirectory(_folderForReferencedResources);
}
// Criar um caminho para um recurso
var resourcePath = _folderForReferencedResources + System.IO.Path.GetFileName(resourceSavingInfo.SupposedFileName);
var binaryReader = new System.IO.BinaryReader(resourceSavingInfo.ContentStream);
// Gravando um recurso no caminho criado
System.IO.File.WriteAllBytes(resourcePath, binaryReader.ReadBytes((int)resourceSavingInfo.ContentStream.Length));
var urlInHtml = _folderForReferencedResources.Replace(@"\", "/") + System.IO.Path.GetFileName(resourceSavingInfo.SupposedFileName);
// Retornar o nome do recurso para inserir no html
return urlInHtml;
}
Analyzing your prompt, please hold on...
An error occurred while retrieving the results. Please refresh the page and try again.