django-xhtml2pdf的使用(加入图片,指定字体,设置样式)

新博客地址:http://muker.net/django-xhtml2pdf.html

这里仅仅讨论直接利用html生成pdf这种最常见也最简单的情况。

1、要利用html生成带中文的pdf要指定中文字体

即在要用的html中的style标签下要添加如下代码:

@font-face {
    font-family: simsun;
    src: url({{url}});
    }

上面指定了字体和字体路径。

2、生成包含图片的pdf

其实xhtml2pdf是支持图片的,但是很多时候并不能显示图片是因为没有给出正确的图片路径。
如上一步中的url,模板渲染结束后必须是绝对路径(如:F:\test)才能使字体的设置生效。
相应的,图片我们也需要为其指定绝对路径。
所以我们可以添加如下函数:

def fetch_resources(uri, rel):
    path = settings.BASE_DIR + uri
    return path

函数功能是返回实际路径,如 uri为/static/123.jpg 则返回 F:\test/static/123.jpg(注意 \ 和 / 在这里的效果是一样的)
然后生成pdf的时候调用此函数:

pdf = pisa.CreatePDF(logohtml, result,link_callback=fetch_resources)

上面的语句的作用是将logohtml中的网页转为pdf存储到result中,网页中的路径通过fetch_resources处理。

3、设置样式

有时候网页转为pdf后样式发生了改变,这主要是因为xhtml2pdf并不是支持所有的CSS样式,其支持的样式如下:

background-color
border-bottom-color, border-bottom-style, border-bottom-width
border-left-color, border-left-style, border-left-width
border-right-color, border-right-style, border-right-width
border-top-color, border-top-style, border-top-width
colordisplay
font-family, font-size, font-style, font-weight
height
line-height, list-style-type
margin-bottom, margin-left, margin-right, margin-top
padding-bottom, padding-left, padding-right, padding-top
page-break-after, page-break-before
size
text-align, text-decoration, text-indent
vertical-align
white-space
width
zoom

如果需要float等功能,可以考虑用text-align代替
或者从 这里 查看更高级的说明

时间: 2024-11-06 03:50:45

django-xhtml2pdf的使用(加入图片,指定字体,设置样式)的相关文章

java给图片添加图片水印,设置样式平铺,拉伸

import javax.imageio.ImageIO; import java.awt.*; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; public class ImageUtil { /** * 给图片添加水印 * @param originImgPath 原始图片的路径 * @param targetImgPath 添加水印后图片的保存路径 * @param

Android开发之动态设置字体的样式和粗细

字体设置通常有两种形式: 1:在xml中直接设置 android:textStyle="bold" android:typeface="sans" 2:用java代码的形式设置 在Android SDK中使用Typeface类来定义字体,可以通过常用字体类型名称进行设置,如设置斜体: TextView quehuo = (TextView)findViewById(R.id.quehuo);//为TextView显示的字体设置样式 quehuo.setTypefac

img只显示图片一部分 或 css设置背景图片只显示图片指定区域

17:14 2016/3/22img只显示图片一部分 或 css设置背景图片只显示图片指定区域 background-position: 100% 56%; 设置背景图片显示图片的哪个坐标区域,图片左上角为0,0或0%,0%,右下角为高度和宽度,或100%,100%. clip:rect(300px 100px 300px 0px); 设置显示图片的某个区域,分别是上右下左的顺序设置 部分代码:<style type="text/css">img {position:abs

Django上传并显示图片

Django上传并显示图片 非常详细的教程,教大家一步步用Django上传与显示图片.用例子学习是一个不错的方法,下面我用一个非常简单的例子为大家讲解Django中图片的上传与显示. 1. 创建名称为'a'的项目 1 $django-admin startproject a 2.在项目'a'中创建名为'b'的app 12 $cd a$python manage.py startapp b 3.把b加入到settings.py中的INSTALLED_APPS中 123456789 INSTALLE

nginx集群中图片指定一个地址中

#user  nobody;worker_processes  1; #error_log  logs/error.log;#error_log  logs/error.log  notice;#error_log  logs/error.log  info; #pid        logs/nginx.pid; worker_rlimit_nofile 65535;events {    worker_connections  65535;} http {    include      

CSS中文字体设置

字体的选择,是网页开发的关键因素之一. 合适的字体,对网页的美观度(或可读性)有着举足轻重的影响. 但是,相比英文字体,中文字体的网页开发有着极大的局限性.因为,一套中文字体最少也要有几千个字符,体积为几个MB:单单为了浏览网页,开发者不可能让用户去下载字体,只能依靠操作系统的预装字体.(*注:确实有网站提供中文字体的web服务,从技术角度,我不推荐这样做.) 不同的操作系统.不同的版本预装不同的字体(因为版权),几乎没有交集.因此,大多数开发者索性忽略中文字体,让操作系统自行渲染,或者用图片呈

ios字体设置

我们在日常的项目开发中,经常需要为某些字体进行个性化的设置,改变字体的风格:所以就引入了UIFont来设置字体 经常用到是UIFont的一个类函数: +fontWithName:(NSString *)fontName   size:(CGFloat) fontSize 创建并且返回一个指定字体类型和大小的字体对象,fontName指定字体集的名字和风格(例如宋体,楷书等这一类型的),fontsize设置字体的大小. 例如: _Label = [[UILabel alloc] initWithF

VBA在WORD中给表格外的字体设置为标题

使用VB可以将表外的字体设置标题字体实际操作如下: VB代码如下: Sub oliver_1() Selection.EndKey Unit:=wdStory '光标移到文末 For i = 1 To ActiveDocument.Tables.Count '有几个表格,下面操作就循环几次 With Application.Browser .Target = wdBrowseTable '插入点在表格中 .Previous '插入点移至前一张表格之前 End With Selection.Mov

Button 文字阴影,自定义图片,代码绘制样式,添加音效的方法

1.Button自己在xml文件中绑定监听器 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent&qu