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 to 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();
}
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");
}
}
Для соответствия требованиям доступности PDF‑документ должен включать логические элементы структуры, определяющие порядок чтения, предоставляющие альтернативный текст для скрин‑ридеров и описывающие иллюстративные части документа, а также разметку иерархии его содержимого.
Многие HTML‑документы уже содержат такой тип логической структуры. Aspose.PDF может сохранять и переносить её в PDF во время преобразования HTML‑в‑PDF.
Установите свойство HtmlLoadOptions.CreateLogicalStructure в true, чтобы воспроизвести структуру исходного HTML‑документа с помощью логических элементов структуры PDF.
Преобразование веб‑страницы немного отличается от преобразования локального HTML‑документа. Чтобы преобразовать содержимое веб‑страницы в PDF, можно сначала получить HTML‑содержимое с помощью экземпляра HttpClient, создать объект Stream, передать содержимое объекту Document и отрендерить результат в 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();
}
}
Попробуйте преобразовать MHTML в PDF онлайн
Aspose.PDF for .NET предоставляет бесплатное онлайн‑приложение “MHTML to 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.