Примеры генерации HTML в PDF на стороне ASP.NET / C#
Если вам необходима конвертация HTML в PDF из приложений ASP.NET C#, вы можете использовать наш веб-сервис. Для этого вам не придется устанавливать или загружать какие-либо библиотеки или компоненты, достаточно реализовать простой API.
Это простой и удобный способ создания PDF версий документов для отчетов, счетов-фактур, накладных, электронных билетов и т.п. Можно создать нужную HTML-страницу и использовать ее в качестве источника для создания файла PDF или изображения.
Наш сервис может считывать любые веб-страницы в интернет по передаваемоогу адресу и динамически генерировать HTML в PDF или файлы изображений. Сервис может обрабатывать достаточно сложные документы и макеты, в том числе ссылки на изображения, инструкции JavaScript, CSS.
Пример №1 - Вывод PDF в броузер конечному пользователю через ASP.NET MVC C#
Закомментировав строку "HttpContext.Response.AddHeader....", вы можете отобразить файл непосредственно в окне броузере, в противном случае пользователю будет предложено сохранить его.
public
ActionResult Run()
{
string
apiKey =
"ВАШ_КЛЮЧ_API";
string
value =
"http://www.yandex.ru";
using
(var client =
new
WebClient())
{
NameValueCollection options =
new
NameValueCollection();
options.Add(
"apikey"
, apiKey);
options.Add(
"value"
, value);
MemoryStream ms =
new
MemoryStream(client.UploadValues(
"http://api.pdf4b.ru/pdf"
, options));
HttpContext.Response.AddHeader(
"content-disposition"
,
"attachment; filename=my-file.pdf"
);
return
new
FileStreamResult(ms,
"application/pdf"
);
}
}
Дополнительно смотрите список опций для генерации
PDF или
JPEG
Пример №2 - Конвертация HTML в картинку с испольльзованием ASP.NET C#
В данном примере используется вывод картинки в формате JPEG - options.Add("OutputFormat", "jpg"), но вы можете использовать любые форматы изображений, например "png", "bmp" or "svg". Закомментировав строку "HttpContext.Response.AddHeader....", вы можете отобразить файл непосредственно в окне броузере, в противном случае пользователю будет предложено сохранить его.
public
void
Run()
{
string
apiKey =
"ВАШ_КЛЮЧ_API";
string
value =
"http://www.yandex.ru";
using
(var client =
new
WebClient())
{
NameValueCollection options =
new
NameValueCollection();
options.Add(
"apikey"
, apiKey);
options.Add(
"value"
, value);
options.Add(
"OutputFormat"
,
"jpg"
);
byte
[] result = client.UploadValues(
"http://api.pdf4b.ru/pdf"
, options);
System.IO.File.WriteAllBytes(Server.MapPath(Path.Combine(
"~/"
,
@"c:\temp\my-file.jpg"
)), result);
}
}
Дополнительно смотрите список опций для генерации
PDF или
JPEG
Пример №3 - Конвертация исходного HTML в файл PDF с испольльзованием ASP.NET C#
Вы можете преобразовывать непосредственно HTML код в PDF напрямую. Это может быть любой HTML, включающий ссыли на изображения, простые инструкции JavaScript, CSS
public
void
Run()
{
string
apiKey =
"ВАШ_КЛЮЧ_API";
string
value =
"<h1>Какой-то <strong>текст</strong>HTML</h1>"
;
using
(var client =
new
WebClient())
{
NameValueCollection options =
new
NameValueCollection();
options.Add(
"apikey"
, apiKey);
options.Add(
"value"
, value);
byte
[] result = client.UploadValues(
"http://api.pdf4b.ru/pdf"
, options);
System.IO.File.WriteAllBytes(Server.MapPath(Path.Combine(
"~/"
,
@"c:\temp\my-file.pdf"
)), result);
}
}
Дополнительно смотрите список опций для генерации
PDF или
JPEG
Пример №4 - Использование C# MVC для преобразования HTML страницы по URL и добавление в footer своего содержимого
По умолчанию все отступы от края страницы (margin) равны 0. В этом примере, мы увеличиваем отступ до нижнего края до 30, чтобы дать пространство для включаемого содержимого (footer).
public
ActionResult TestC()
{
string
apiKey =
"ВАШ_КЛЮЧ_API";
string
value =
"http://www.yandex.ru"
;
using
(var client =
new
WebClient())
{
NameValueCollection options =
new
NameValueCollection();
options.Add(
"apikey"
,apiKey);
options.Add(
"value"
, value);
options.Add(
"MarginBottom"
,
"30"
);
options.Add(
"FooterUrl"
,
"http://your-site.ru/footer.htm"
);
MemoryStream ms =
new
MemoryStream(client.UploadValues(
"http://api.pdf4b.ru/pdf"
, options));
HttpContext.Response.AddHeader(
"Content-Disposition:attachment;"
,
"filename=my-file.pdf"
);
return
new
FileStreamResult(ms,
"application/pdf"
);
}
}
Дополнительно смотрите список опций для генерации
PDF или
JPEG
Пример №5 - Конвертация HTML в PDF и вывод в броузер на скачивание используя ASP.NET C#
public
void
Run()
{
string
apiKey =
"ВАШ_КЛЮЧ_API";
string
value =
"http://www.yandex.ru";
using
(var client =
new
WebClient())
{
NameValueCollection options =
new
NameValueCollection();
options.Add(
"apikey"
, apiKey);
options.Add(
"value"
, value);
byte
[] result = client.UploadValues(
"http://api.pdf4b.ru/pdf"
, options);
Response.Clear();
Response.ContentType =
"application/pdf"
;
Response.AddHeader(
"content-disposition"
,
"attachment; filename=my-file.pdf"
);
Response.BinaryWrite(result);
Response.End();
}
}
Дополнительно смотрите список опций для генерации
PDF или
JPEG
Пример №6 - Использование ASP.NET 5 and C# MVC 6
В ASP.NET 5 WebClient был заменен на HttpClient. Остальное без изменений.
using
(var client =
new
HttpClient())
{
var content =
new
FormUrlEncodedContent(
new
[]
{
new
KeyValuePair<
string
,
string
=
""
>(
"apikey"
, apiKey),
new
KeyValuePair<
string
,
string
=
""
>(
"value"
, url)
});
var result = client.PostAsync(
"http://api.pdf4b.ru/pdf"
, content).Result;
if
(result.IsSuccessStatusCode)
{
MemoryStream stream =
new
MemoryStream(result.Content.ReadAsByteArrayAsync().Result);
return
File(stream,
"application/pdf"
,
"my-file.pdf"
);
}
}
</
string
,></
string
,>
Дополнительно смотрите список опций для генерации
PDF или
JPEG