Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/91.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用pdfkit.from_文件将html转换为pdf时,颜色将消失_Python_Html_Pandas_Pdf_Pdfkit - Fatal编程技术网

Python 使用pdfkit.from_文件将html转换为pdf时,颜色将消失

Python 使用pdfkit.from_文件将html转换为pdf时,颜色将消失,python,html,pandas,pdf,pdfkit,Python,Html,Pandas,Pdf,Pdfkit,我使用样式器为熊猫数据框添加颜色,然后将其保存为html,结果如下: 这些颜色在html版本中,但当我将文件转换为PDF时,它们就丢失了。 我做错了什么 以下是可复制代码: import pandas as pd import pdfkit # CREATE A DUMMY DF d = {'population': [60, 46, 10], 'language': ['it', 'es', 'el']} df = pd.DataFrame(data=d,index=['Italy','

我使用样式器为熊猫数据框添加颜色,然后将其保存为html,结果如下:

这些颜色在html版本中,但当我将文件转换为PDF时,它们就丢失了。

我做错了什么

以下是可复制代码:

import pandas as pd
import pdfkit

# CREATE A DUMMY DF
d = {'population': [60, 46, 10], 'language': ['it', 'es', 'el']}
df = pd.DataFrame(data=d,index=['Italy','Spain','Greece'])

# ADD SOME COLORS
s = df.style.bar(subset=['population'], color=['#2ECC71'])

# WRITE AN HTML FILE
f = open('dummy.html','w')
f.write(s.render())
f.close()

# CONVERT THE FILE TO A PDF
pdfkit.from_file('dummy.html', 'dummy.pdf')

我明白了。部分地。我不得不补充一句!每次我设置背景时都很重要。示例|:

我的代码现在如下所示:

import pandas as pd
import pdfkit

# CREATE A DUMMY DF
d = {'population': [60, 46, 10], 'language': ['it', 'es', 'el']}
df = pd.DataFrame(data=d,index=['Italy','Spain','Greece'])

# ADD SOME COLORS
s = df.style.bar(subset=['population'], color=['#2ECC71'])

# GET THE HTML STRING
my_html_string = s.render()

# ADD !important TO ALL THE BACKGROUND STATEMENTS
# locate all of them:
import re
p = re.compile('background: (.*);')
unique_bg_statements = list(set(p.findall(my_html_string)))
for bs in unique_bg_statements:
    my_html_string = my_html_string.replace(bs,bs+" !important") #add !important

# replace transparent with white:
my_html_string = my_html_string.replace("transparent","white")


# WRITE AN HTML FILE
f = open('dummy.html','w')
f.write(my_html_string)
f.close()
pdf看起来更接近我需要的内容:


我在某个地方读到,如果标识符以大写字母开头(在本例中为“T_9cc19e…”中的“T”),则转换为pdf包时会出现错误,并将其更改为“T”修复了该问题。可能是和另一个pdf作者在一起。