It's not impossible without using XeLaTeX, but it doesn't work very well. You can use the CJKvert package to combine horizontal and vertical text, but the kerning is terrible and characters often overlap (although bkai looks alright).

\documentclass{article}
\usepackage{CJKutf8}
\usepackage[usebaselinestretch]{CJKvert}
\usepackage{setspace,rotating}
\usepackage[usestackEOL]{stackengine}
\usepackage[encoding=UTF8]{zhnumber}
\def\nZH#1{{\scriptsize\bfseries#1} \zhnumber{#1}}
\begin{document}
\begin{CJK*}{UTF8}{bkai}\CJKhorz
\begin{minipage}[t]{8em}
\centering
Example: 5625
\rotatebox{-90}{
\CJKvert\zhnumber{5625}
}
\end{minipage}
\qquad
\belowbaseline{\Longstack[r]{
0 \zhnumber{0}\\
1 \zhnumber{1}\\
2 \zhnumber{2}\\
3 \zhnumber{3}\\
4 \zhnumber{4}\\
5 \zhnumber{5}\\
6 \zhnumber{6}\\
7 \zhnumber{7}\\
8 \zhnumber{8}\\
9 \zhnumber{9}\\
10 \zhnumber{10}\\
100 \zhnumber{100}\\
1000 \zhnumber{1000}\\
10000 \zhnumber{10000}\\
}
\qquad
\Longstack[r]{
\nZH{0}\\
\nZH{1}\\
\nZH{2}\\
\nZH{3}\\
\nZH{4}\\
\nZH{5}\\
\nZH{6}\\
\nZH{7}\\
\nZH{8}\\
\nZH{9}\\
\nZH{10}\\
\nZH{100}\\
\nZH{1000}\\
\nZH{10000}\\
}
\qquad
\Longstack[r]{
\zhdigits{0}\\
\zhdigits{1}\\
\zhdigits{2}\\
\zhdigits{3}\\
\zhdigits{4}\\
\zhdigits{5}\\
\zhdigits{6}\\
\zhdigits{7}\\
\zhdigits{8}\\
\zhdigits{9}\\
\zhdigits{10}\\
\zhdigits{100}\\
\zhdigits{1000}\\
\zhdigits{10000}\\
}
}
\end{CJK*}
\end{document}