Analyzing your prompt, please hold on...
An error occurred while retrieving the results. Please refresh the page and try again.
Эта статья объясняет, как конвертировать PDF в HTML с использованием C#. Она охватывает следующие темы.
Следующий фрагмент кода также работает с библиотекой Aspose.PDF.Drawing.
Aspose.PDF for .NET предоставляет множество функций для конвертации различных форматов файлов в PDF документы и конвертации PDF файлов в различные форматы вывода. Эта статья обсуждает, как конвертировать PDF файл в HTML. Aspose.PDF for .NET предоставляет возможность конвертировать HTML файлы в формат PDF с использованием подхода InLineHtml. Мы получили много запросов на функциональность, которая конвертирует PDF файл в формат HTML и предоставили эту функцию. Обратите внимание, что эта функция также поддерживает XHTML 1.0.
Aspose.PDF for .NET поддерживает функции для конвертации PDF файла в HTML. Основные задачи, которые вы можете выполнить с помощью библиотеки Aspose.PDF, перечислены:
Попробуйте конвертировать PDF в HTML онлайн
Aspose.PDF for .NET предлагает вам бесплатное онлайн приложение “PDF в HTML”, где вы можете попробовать исследовать функциональность и качество работы.
Aspose.PDF for .NET предоставляет двухстрочный код для преобразования исходного PDF файла в HTML. Перечисление SaveFormat
содержит значение Html, которое позволяет вам сохранить исходный файл в HTML. Следующий фрагмент кода показывает процесс конвертации PDF файла в 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);
}
}
При конвертации большого PDF файла с несколькими страницами в формат HTML, вывод появляется как одна HTML страница. Это может оказаться очень длинным. Чтобы контролировать размер страницы, возможно разделить вывод на несколько страниц во время конвертации PDF в HTML. Пожалуйста, попробуйте использовать следующий фрагмент кода.
// 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);
}
}
Во время конвертации PDF в HTML возможно указать папку, в которую должны сохраняться SVG изображения. Используйте класс HtmlSaveOption
SpecialFolderForSvgImages property
для указания специального каталога для SVG изображений. Это свойство получает или устанавливает путь к каталогу, в который SVG изображения должны быть сохранены при встрече во время конвертации. Если параметр пуст или равен null, то любые SVG файлы сохраняются вместе с другими изображениями.
// 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);
}
}
Чтобы сжать SVG изображения во время конвертации PDF в HTML, пожалуйста, попробуйте использовать следующий код:
// 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);
}
}
Формат вывода по умолчанию для сохранения изображений - SVG. Во время конвертации некоторые изображения из PDF преобразуются в векторные изображения SVG. Это может быть медленно. Вместо этого изображения могут быть преобразованы в один PNG файл фона для каждой страницы.
// 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);
}
}
Мы также можем указать папку, в которую изображения будут сохранены во время конвертации PDF в 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);
}
}
Недавно нас попросили ввести функцию, при которой PDF файлы конвертируются в HTML, и пользователь может получить только содержимое тега <body>
для каждой страницы. Это приведет к созданию одного файла с CSS, <html>
, <head>
и всех страниц в других файлах только с содержимым <body>
.
Чтобы удовлетворить это требование, в класс HtmlSaveOptions было введено новое свойство HtmlMarkupGenerationMode.
С помощью следующего простого фрагмента кода вы можете разделить выходной HTML на страницы. В выходных страницах все HTML объекты должны находиться точно там, где они находятся сейчас (обработка шрифтов и вывод, создание и вывод CSS, создание и вывод изображений), за исключением того, что выходной HTML будет содержать содержимое, которое в настоящее время находится внутри тегов (теперь теги “body” будут опущены). Однако при использовании этого подхода ссылка на CSS является ответственностью вашего кода, потому что такие вещи, как будут удалены. Для этой цели вы можете прочитать CSS через File.ReadAllText() и отправить его через AJAX на веб-страницу, где он будет применен с помощью 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);
}
}
В случае, если исходный/входной PDF файл содержит прозрачные тексты, затененные передними изображениями, могут возникнуть проблемы с рендерингом текста. Поэтому, чтобы учесть такие сценарии, можно использовать свойства SaveShadowedTextsAsTransparentTexts и SaveTransparentTexts.
// 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);
}
}
Мы можем рендерить слои PDF документа в отдельном элементе типа слоя во время конвертации PDF в 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);
}
}
Этот код показывает пример сохранения полученного файла в поток. Любой тип потока может быть использован для сохранения. Этот фрагмент кода также описывает, как работают пользовательские стратегии сохранения.
// Для полных примеров и файлов данных посетите https://github.com/aspose-pdf/Aspose.PDF-for-.NET
private static string _folderForReferencedResources;
private static void ConvertPDFtoHTMLWithStream()
{
// Путь к каталогу документов
var dataDir = RunExamples.GetDataDir_AsposePdf();
// Открыть PDF документ
using (var doc = new Aspose.Pdf.Document(dataDir + "PDFToHTML.pdf"))
{
var streamFilePath = dataDir + "saveToStream.html";
_folderForReferencedResources = dataDir + @"/saveFolder/";
// Очистка существующих файлов
if (Directory.Exists(_folderForReferencedResources))
{
Directory.Delete(_folderForReferencedResources, true);
}
// Очистка существующих файлов
if (File.Exists(streamFilePath))
{
File.Delete(streamFilePath);
}
var saveOptions = new Aspose.Pdf.HtmlSaveOptions();
// Настройка пользовательских стратегий для конвертации
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))
{
// Сохранить документ в поток
doc.Save(saveStream, saveOptions);
}
}
}
private static void StrategyCssSaving(Aspose.Pdf.HtmlSaveOptions.CssSavingInfo resourceInfo)
{
// Очистка существующих файлов
if (!System.IO.Directory.Exists(_folderForReferencedResources))
{
System.IO.Directory.CreateDirectory(_folderForReferencedResources);
}
// Создание пути для css
string path = _folderForReferencedResources + Path.GetFileName(resourceInfo.SupposedURL);
var reader = new System.IO.BinaryReader(resourceInfo.ContentStream);
// Запись css по созданному пути
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)
{
// Очистка существующих файлов
if (!System.IO.Directory.Exists(_folderForReferencedResources))
{
System.IO.Directory.CreateDirectory(_folderForReferencedResources);
}
// Создание пути для ресурса
var resourcePath = _folderForReferencedResources + System.IO.Path.GetFileName(resourceSavingInfo.SupposedFileName);
var binaryReader = new System.IO.BinaryReader(resourceSavingInfo.ContentStream);
// Запись ресурса по созданному пути
System.IO.File.WriteAllBytes(resourcePath, binaryReader.ReadBytes((int)resourceSavingInfo.ContentStream.Length));
var urlInHtml = _folderForReferencedResources.Replace(@"\", "/") + System.IO.Path.GetFileName(resourceSavingInfo.SupposedFileName);
// Возврат имени ресурса для вставки в html
return urlInHtml;
}
Analyzing your prompt, please hold on...
An error occurred while retrieving the results. Please refresh the page and try again.