AbcPdf - документ без применения CSS - PullRequest
6 голосов
/ 20 января 2010

Это может быть больше проблемой технической поддержки, но мне интересно, сталкивались ли с этим другие разработчики:

Я использую Abcpdf в своем коде ASP.NET для создания PDF из HTML. Он работает нормально, но один пользователь генерирует PDF-файлы, к которым не применяется CSS (IE8, последняя версия Adobe Acrobat - так же, как и все остальные). Так как это единственный пользователь, жалующийся, я уверен, что это локальная настройка, но я не могу понять, что помешает загрузке css - настройка браузера? Настройка Acrobat?

У кого-нибудь есть предложения?

Ответы [ 6 ]

3 голосов
/ 09 ноября 2012

убедитесь, что у вас есть media = "print" для таблицы стилей CSS! Просто потратил целую вечность, глядя на это, потянув меня за волосы, и собирался написать по электронной почте WebSuperGoo, а затем эта мысль пришла ко мне. Я собираюсь отменить все изменения, которые я сделал в своем коде, и протестировать снова, но похоже, что с EngineType.Gecko это должно быть media = "print", где, как и с EngineType.MSHtml, это может быть media = "screen". ....

очень странно, но надеюсь, что это кому-то поможет!

3 голосов
/ 22 января 2010

Возможно, проблема в разных версиях Acrobat Reader? Я бы посмотрел на это.

Это не имеет большого смысла, потому что AbcPdf использует логику на стороне службы для создания PDF-файла на основе того, какие методы вы используете для создания документа (например, AddImageUrl против рисования документа вручную и т. *

Сотрудники компании WebSuperGoo (поставщик AbcPdf) прекрасно справляются с ответами на такие вопросы, как этот. Я сталкивался с несколькими крайними случаями с их продуктом, в которых они всегда находили обходные пути или альтернативы для своевременного решения.

1 голос
/ 28 марта 2016

Я использую версию 10 ABCpdf и обнаружил, что путь к таблице стилей должен быть абсолютным, а не относительным.

Я изменил путь к таблице стилей с "C: \ MyProject \ Resources \ Styles.css" на "http: \ www.MyDomain.com \ Resources \ Styles.css" и это сработало.

Хотя версия 6, похоже, работает с относительными путями. Я не проверял это с другими версиями

Согласно WebSuperGoo поддержка :

(Запрос №: 6,17)

HTML не существует в файле и поэтому не имеет местоположения.

На внешние таблицы стилей и изображения часто ссылаются через относительные URL. Поскольку у HTML нет местоположения, невозможно разрешить эти относительные ссылки.

Таким образом, вы должны предоставить свои таблицы стилей и ссылки на изображения в качестве абсолютных ссылок. Или вы можете использовать элемент HTML BASE, чтобы указать подходящее базовое местоположение. Или вы можете сохранить свой HTML в файл в соответствующее местоположение и затем используйте AddImageUrl.

1 голос
/ 29 мая 2014

Вы можете попробовать следующее в версии 9

doc.HtmlOptions.PageLoadMethod = 
     PageLoadMethodType.WebBrowserNavigate;
1 голос
/ 13 апреля 2012

Убедитесь, что CSS является абсолютным URL, а не относительным, или добавьте базовый тег в заголовок HTML

Например, вместо

<style type="text/css" href="/styles/somecss.css" rel="stylesheet" />

использование

<style type="text/css" href="http://myserver.com/styles/somecss.css" rel="stylesheet" />

Также, если ваш сайт SSL или аутентифицирован, вам придется либо сделать область с таблицей стилей не аутентифицированной, либо установить атрибуты пароля и имени пользователя для объекта PDF, чтобы ABCPdf мог аутентифицировать

0 голосов
/ 16 февраля 2015

Вы пробовали;

theDoc.HtmlOptions.DoMarkup = true;

Это заставляет движок обрабатывать HTML перед рендерингом.

...