Не удалось создать гиперссылку изображения с помощью xhtml2pdf

Рассмотрим следующий код:

from xhtml2pdf import pisa

if __name__=="__main__":
    source_HTML = """<html>
<body>
    <a href="http://www.stackoverflow.com">
        <img src="http://i.stack.imgur.com/uQFNA.png"/>
    </a>
    <a href="http://www.stackoverflow.com">
        <p>Stackoverflow</p>
    </a>
</body>
</html>"""

    output_filename = "output.pdf"

    # open output file for writing (truncated binary)
    result_file = open(output_filename, "w+b")

    # convert HTML to PDF
    pisa.CreatePDF(
        source_HTML,
        dest=result_file)

    result_file.close()

HTML должен отображать как изображение гиперссылки, так и текст гиперссылки, но xhtml2pdf отображает изображение без гиперссылки и текст с гиперссылкой. Это проблема с приведенным выше кодом или ограничение/ошибка библиотеки? Заранее благодарим за любую помощь в вышеуказанном вопросе.


person user635090    schedule 29.09.2015    source источник
comment
Я только что столкнулся с той же проблемой в счете в формате PDF, который я пытался сделать с нашим логотипом, ссылающимся на наш сайт. @user635090 user635090 ты смог это понять?   -  person byoungb    schedule 09.02.2016


Ответы (1)


Я нашел способ заставить это тоже работать, но это не очень хорошо.

Вы можете добавить до и после img внутри тега A. А затем установите размер шрифта в теге A равным высоте изображения, а затем также установите для text-decoration значение none.

Итак, как я уже сказал, это работает, но не является отличным решением. Я искал проблемы на странице github xhtml2pdf и не могу найти никого другого с этой проблемой.

person byoungb    schedule 09.02.2016
comment
Спасибо за вашу помощь. Меня не очень воодушевила идея использовать этот обходной путь в моем коде, поэтому я решил заменить xhtml2pdf на weasyprint. - person user635090; 06.03.2016
comment
Да, я тоже использовал weasyprint, но с ним тоже были некоторые проблемы. Каковы ваши первые впечатления от него? - person byoungb; 07.03.2016
comment
Я обнаружил, что работать с weasyprint намного проще. Большая часть того, что работает в браузере, будет выглядеть идентично с weasyprint, а сгладить оставшиеся проблемы до сих пор было довольно легко. - person user635090; 09.03.2016