Here's an example that puts stars and snowflakes around the body of the text. You can adapt the code to add baubles, trees, angels etc as required.
\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage{tikz}
\usepackage{pifont}
\usepackage{flowfram}
\usepackage{lipsum}
\usetikzlibrary{shapes.geometric}
\usetikzlibrary{decorations.shapes}
\newcommand{\snowflake}{\resizebox{2cm}{!}{\ding{102}}}
\newcommand{\myfancyframe}[1]{%
\begin{tikzpicture}[baseline=(n.base),
decoration={shape backgrounds,shape=star,shape size=10pt,
shape sep=1cm},
star points=8]%
\node[draw,decorate,fill=yellow,inner sep=5mm] (n) {#1};
\path (n.north east) ++(1cm,1cm) node {\snowflake};
\path (n.north west) ++(-1cm,1cm) node {\snowflake};
\path (n.south west) ++(-1cm,-1cm) node {\snowflake};
\path (n.south east) ++(1cm,-1cm) node {\snowflake};
\useasboundingbox (n.north west) rectangle (n.south east);
\end{tikzpicture}%
}
\onecolumn
\setflowframe{1}{border=myfancyframe,offset=-2.6cm}
\begin{document}
\lipsum[1-5]
\end{document}
This sets up one frame the size of the typeblock (via \onecolumn). Since there's only one frame, I haven't bothered assigning a label to it, so I've just referenced it by its number (1) when setting the frame attributes (via \setflowframe). The command \myfancyframe puts stars and snowflakes around its argument. (I adapted the example given at the end of Framed Boxes.) This can then be used as a border for the frame. The border is set using the border key with the name of the command without the leading backslash. (See chapter 3 of the flowfram user guide.) The offset compensates for the thick border that shifts the frame out of whack. This value will need changing if you modify \myfancyframe. (If you use the flowfram package's draft option, you can see the outline of where the frame contents are expected.)
