Я использую AbcPdf
и мне становится сложно использовать стиль Alpha/Opacity
для рендеринга в .AddImageHtml()
.
Это нужно добавить как таблицу стилей, потому что я создаю pdf файл из своего html.
Некоторые изображения имеют непрозрачность, но не все, поэтому мне нужно поместить непрозрачность только для изображений, которые имеют непрозрачность как таблицу стилей.
Версия AbcPdf
которую я использую, - 8.1.1.5
ОБРАЗЕЦ КОДА
[HttpPost]
[ValidateInput(false)]
public virtual ActionResult GeneratePDF(string pdf)
{
Doc theDoc = new Doc();
theDoc.AddImageHtml(pdf);
theDoc.Rect.Inset(20, 20);
string pathForSaving = Server.MapPath("~/Uploads");
theDoc.Save(Path.Combine(pathForSaving, "htmlimport.pdf"));
theDoc.Clear();
return Json(new { }, "text/html");
}
[ОБНОВЛЕНО]
У меня все еще есть проблема, но я применяю непрозрачность в своем изображении перед загрузкой. Другими словами, мое изображение было сохранено с непрозрачностью.
Несмотря на применение непрозрачности, отображаемое изображение не имеет непрозрачности. (Я проверил папку Upload
и сохраненное изображение имеет непрозрачность)
Что здесь происходит?
[/ОБНОВЛЕНО]
Любая помощь будет оценена.
Благодарю.
Это не ответ, но добавить к вопросу пример, который может быть более легко поддающимся проверке. Я получаю два серых ящика, где должны быть изображения. Я использую ABCPdf 9.1.
Doc docPDF = new Doc();
docPDF.HtmlOptions.Engine = EngineType.Gecko;
docPDF.HtmlOptions.ForGecko.RequestMethod = UrlRequestMethodType.Get;
//docPDF.HtmlOptions.ForGecko.Media = MediaType.Screen;
docPDF.HtmlOptions.ForGecko.UseScript = true;
docPDF.HtmlOptions.ForGecko.OnLoadScript =
"window.ABCpdf_go = false; " +
"setTimeout(function() {window.ABCpdf_go = true;}, 5000);";
docPDF.AddImageUrl("http://www.w3schools.com/css/tryit.asp?filename=trycss_image_transparency");
docPDF.Save(@".\out.pdf");
Существует много возможных причин поведения, которое вы видите.
Опция 1
Css, который используется на вашей странице, не передается в AddImageHtml
. Значение переменной pdf
не имеет Css. Вы можете исправить это, добавив Css в html в теге стиля. Пример:
pdf += @"<style> your css code</style>";
Вариант 2
Версия IE на вашем сервере - IE8, и вы используете свойство Css Opacity, которое не поддерживается IE8. Чтобы исправить это, вы можете
а. используйте двигатель Gecko, добавив эту линию
doc.HtmlOptions.Engine = WebSupergoo.ABCpdf9.EngineType.Gecko;
б. обновить IE на сервере до IE9
с. измените свой Css на совместимость с IE8. проверьте этот поток Непрозрачность CSS не работает в IE8