Analyzing your prompt, please hold on...
An error occurred while retrieving the results. Please refresh the page and try again.
Эта статья объясняет, как конвертировать HTML в PDF с помощью C#. Она охватывает следующие темы.
Следующий фрагмент кода также работает с библиотекой Aspose.PDF.Drawing.
Aspose.PDF for .NET — это API для манипуляции PDF, который позволяет бесшовно конвертировать любые существующие HTML-документы в PDF. Процесс конвертации HTML в PDF можно гибко настраивать.
Следующий пример кода на C# показывает, как конвертировать HTML-документ в PDF.
// For complete examples and data files, visit https://github.com/aspose-pdf/Aspose.PDF-for-.NET
private static void ConvertHTMLtoPDF()
{
// The path to the documents directory
var dataDir = RunExamples.GetDataDir_AsposePdf();
// Load the HTML file into a document using HtmlLoadOptions
var options = new Aspose.Pdf.HtmlLoadOptions();
// Open HTML document
using (var document = new Aspose.Pdf.Document(dataDir + "test.html", options))
{
// Save PDF document
document.Save(dataDir + "ConvertHTMLtoPDF_out.pdf");
}
}
Попробуйте конвертировать HTML в PDF онлайн
Aspose предлагает вам онлайн бесплатное приложение “HTML в PDF”, где вы можете попробовать исследовать функциональность и качество его работы.
Движок конвертации HTML имеет несколько параметров, которые позволяют контролировать процесс конвертации.
Медиа-запросы — это популярная техника для предоставления адаптированной таблицы стилей для различных устройств. Мы можем установить тип устройства, используя свойство HtmlMediaType
.
// For complete examples and data files, visit https://github.com/aspose-pdf/Aspose.PDF-for-.NET
private static void ConvertHTMLtoPDFAdvancedMediaType()
{
// The path to the documents directory
var dataDir = RunExamples.GetDataDir_AsposePdf();
// Load the HTML file into a document using HtmlLoadOptions with Print media type
var options = new HtmlLoadOptions
{
// Set Print or Screen mode
HtmlMediaType = Aspose.Pdf.HtmlMediaType.Print
};
// Open HTML document
using (var document = new Aspose.Pdf.Document(dataDir + "test.html", options))
{
// Save PDF document
document.Save(dataDir + "ConvertHTMLtoPDFAdvancedMediaType_out.pdf");
}
}
HTML-страницы часто используют шрифты (например, шрифты из локальной папки, Google Fonts и т. д.). Мы также можем контролировать встраивание шрифтов в документ, используя свойство IsEmbedFonts
.
// For complete examples and data files, visit https://github.com/aspose-pdf/Aspose.PDF-for-.NET
private static void ConvertHTMLtoPDFAdvancedEmbedFonts()
{
// The path to the documents directory
var dataDir = RunExamples.GetDataDir_AsposePdf();
// Load the HTML file into a document using HtmlLoadOptions with the font embedding option set
var options = new Aspose.Pdf.HtmlLoadOptions
{
// Disable font embedding
IsEmbedFonts = false
};
// Open HTML document
using (var document = new Aspose.Pdf.Document(dataDir + "test_fonts.html", options))
{
// Save PDF document
document.Save(dataDir + "ConvertHTMLtoPDFAdvanced_EmbedFonts_out.pdf");
}
}
Движок конвертации предоставляет механизм, который позволяет контролировать загрузку определенных ресурсов, связанных с HTML-документом. Класс HtmlLoadOptions
имеет свойство CustomLoaderOfExternalResources
, с помощью которого мы можем определить поведение загрузчика ресурсов. Предположим, нам нужно заменить все изображения PNG на одно изображение test.jpg
и заменить внешние URL на внутренние для других ресурсов. Для этого мы можем определить пользовательский загрузчик SamePictureLoader
и указать CustomLoaderOfExternalResources
на это имя.
// For complete examples and data files, visit https://github.com/aspose-pdf/Aspose.PDF-for-.NET
private static void ConvertHTMLtoPDFAdvanced_DummyImage()
{
// The path to the documents directory
var dataDir = RunExamples.GetDataDir_AsposePdf();
// Load the HTML file into a document with a custom resource loader for external images
var options = new Aspose.Pdf.HtmlLoadOptions
{
CustomLoaderOfExternalResources = SamePictureLoader
};
// Open HTML document
using (var document = new Aspose.Pdf.Document(dataDir + "test.html", options))
{
// Save PDF document
document.Save(dataDir + "html_test.pdf");
}
}
private static Aspose.Pdf.LoadOptions.ResourceLoadingResult SamePictureLoader(string resourceURI)
{
// The path to the documents directory
var dataDir = RunExamples.GetDataDir_AsposePdf();
Aspose.Pdf.LoadOptions.ResourceLoadingResult result;
if (resourceURI.EndsWith(".png"))
{
byte[] resultBytes = File.ReadAllBytes(dataDir + "test.jpg");
result = new Aspose.Pdf.LoadOptions.ResourceLoadingResult(resultBytes)
{
// Set MIME Type
MIMETypeIfKnown = "image/jpeg"
};
}
else
{
result = new Aspose.Pdf.LoadOptions.ResourceLoadingResult(GetContentFromUrl(resourceURI));
}
return result;
}
private static byte[] GetContentFromUrl(string url)
{
var httpClient = new System.Net.Http.HttpClient();
return httpClient.GetByteArrayAsync(url).GetAwaiter().GetResult();
}
Конвертация веб-страницы немного отличается от конвертации локального HTML-документа. Чтобы конвертировать содержимое веб-страницы в формат PDF, мы можем сначала получить содержимое HTML-страницы, используя экземпляр HttpClient, создать объект Stream, передать содержимое объекту Document и отобразить выходные данные в формате PDF.
При конвертации веб-страницы, размещенной на веб-сервере, в PDF:
Конвертация веб-страницы в PDF
// For complete examples and data files, visit https://github.com/aspose-pdf/Aspose.PDF-for-.NET
private static void ConvertHTMLtoPDFAdvanced_WebPage()
{
// The path to the documents directory
var dataDir = RunExamples.GetDataDir_AsposePdf();
const string url = "https://en.wikipedia.org/wiki/Aspose_API";
// Set page size A3 and Landscape orientation;
var options = new Aspose.Pdf.HtmlLoadOptions(url)
{
PageInfo =
{
Width = 842,
Height = 1191,
IsLandscape = true
}
};
// Load the web page content as a stream and create a PDF document
using (var document = new Aspose.Pdf.Document(GetContentFromUrlAsStream(url), options))
{
// Save PDF document
document.Save(dataDir + "html_test.pdf");
}
}
private static Stream GetContentFromUrlAsStream(string url, System.Net.ICredentials credentials = null)
{
using (var handler = new System.Net.Http.HttpClientHandler { Credentials = credentials })
using (var httpClient = new System.Net.Http.HttpClient(handler))
{
return httpClient.GetStreamAsync(url).GetAwaiter().GetResult();
}
}
Иногда нам нужно выполнить конвертацию HTML-файлов, которые требуют аутентификации и прав доступа, чтобы только авторизованные пользователи могли получить содержимое страницы. Это также включает сценарий, когда некоторые ресурсы/данные, на которые ссылаются внутри HTML, загружаются с внешнего сервера, который требует аутентификации, и для удовлетворения этого требования в класс HtmlLoadOptions
добавлено свойство ExternalResourcesCredentials
. Следующий фрагмент кода показывает шаги для передачи учетных данных для запроса HTML и его соответствующих ресурсов при конвертации HTML-файла в PDF.
// For complete examples and data files, visit https://github.com/aspose-pdf/Aspose.PDF-for-.NET
private static void ConvertHTMLtoPDFAdvancedAuthorized()
{
// The path to the documents directory
var dataDir = RunExamples.GetDataDir_AsposePdf();
const string url = "http://httpbin.org/basic-auth/user1/password1";
var credentials = new System.Net.NetworkCredential("user1", "password1");
var options = new Aspose.Pdf.HtmlLoadOptions(url)
{
ExternalResourcesCredentials = credentials
};
using (var document = new Aspose.Pdf.Document(GetContentFromUrlAsStream(url, credentials), options))
{
// Save PDF document
document.Save(dataDir + "HtmlTest_out.pdf");
}
}
private static Stream GetContentFromUrlAsStream(string url, System.Net.ICredentials credentials = null)
{
using (var handler = new System.Net.Http.HttpClientHandler { Credentials = credentials })
using (var httpClient = new System.Net.Http.HttpClient(handler))
{
return httpClient.GetStreamAsync(url).GetAwaiter().GetResult();
}
}
Aspose.PDF for .NET предоставляет возможность отображать все содержимое на одной странице при конвертации HTML-файла в формат PDF. Например, если у вас есть некоторый HTML-контент, размер выходных данных которого превышает одну страницу, вы можете использовать опцию для отображения выходных данных на одной странице PDF. Для использования этой опции класс HtmlLoadOptions был расширен флагом IsRenderToSinglePage. Ниже приведен фрагмент кода, который показывает, как использовать эту функциональность.
// For complete examples and data files, visit https://github.com/aspose-pdf/Aspose.PDF-for-.NET
private static void ConvertHTMLtoPDFAdvancedSinglePageRendering()
{
// The path to the documents directory
var dataDir = RunExamples.GetDataDir_AsposePdf();
// Initialize HtmlLoadOptions
var options = new Aspose.Pdf.HtmlLoadOptions
{
// Set Render to single page property
IsRenderToSinglePage = true
};
// Open PDF document
using (var document = new Aspose.Pdf.Document(dataDir + "HTMLToPDF.html", options))
{
// Save PDF document
document.Save(dataDir + "RenderContentToSamePage_out.pdf");
}
}
Aspose.PDF for .NET предоставляет возможность конвертировать HTML-страницу в PDF-документ. Поскольку HTML позволяет добавлять графический элемент SVG в качестве тега на странице, Aspose.PDF также поддерживает конвертацию таких данных в результирующий PDF-файл. Следующий фрагмент кода показывает, как конвертировать HTML-файлы с тегами графики SVG в помеченные PDF-документы.
// For complete examples and data files, visit https://github.com/aspose-pdf/Aspose.PDF-for-.NET
private static void ConvertHTMLtoPDFWithSVG()
{
// The path to the documents directory
var dataDir = RunExamples.GetDataDir_AsposePdf();
// Initialize HtmlLoadOptions
var options = new Aspose.Pdf.HtmlLoadOptions(Path.GetDirectoryName(dataDir + "HTMLSVG.html"));
// Initialize Document object
using (var document = new Aspose.Pdf.Document(dataDir + "HTMLSVG.html", options))
{
// Save PDF document
document.Save(dataDir + "RenderHTMLwithSVGData_out.pdf");
}
}
Попробуйте конвертировать MHTML в PDF онлайн
Aspose.PDF for .NET предлагает вам онлайн бесплатное приложение “MHTML в PDF”, где вы можете попробовать исследовать функциональность и качество его работы.
MHTML, сокращение от MIME HTML, — это формат архива веб-страниц, используемый для объединения ресурсов, которые обычно представлены внешними ссылками (такими как изображения, Flash-анимации, Java-апплеты и аудиофайлы), с HTML-кодом в один файл. Содержимое файла MHTML кодируется так, как если бы это было HTML-сообщение электронной почты, с использованием типа MIME multipart/related. Aspose.PDF for .NET может конвертировать HTML-файлы в формат PDF, и с выпуском Aspose.PDF for .NET 9.0.0 мы представили новую функцию, которая позволяет вам конвертировать файлы MHTML в формат PDF. Следующий фрагмент кода показывает, как конвертировать файлы MHTML в формат PDF с помощью C#:
// For complete examples and data files, visit https://github.com/aspose-pdf/Aspose.PDF-for-.NET
private static void ConvertMHTtoPDF()
{
// The path to the documents directory
var dataDir = RunExamples.GetDataDir_AsposePdf();
// Initialize MhtLoadOptions with page setup
var options = new Aspose.Pdf.MhtLoadOptions()
{
PageInfo = { Width = 842, Height = 1191, IsLandscape = true }
};
// Initialize Document object using the MHT file and options
using (var document = new Aspose.Pdf.Document(dataDir + "fileformatinfo.mht", options))
{
// Save PDF document
document.Save(dataDir + "MhtmlTest_out.pdf");
}
}
Analyzing your prompt, please hold on...
An error occurred while retrieving the results. Please refresh the page and try again.