\membersection{Printing}\label{printing}

The wxHTML library provides printing facilities. 

You can redirect output displayed by \helpref{wxHtmlWindow}{wxhtmlwindow}
to the printer DC using this (or similar) code (see {\bf printing} sample for
more details) :

\begin{verbatim}
//
//  This method prints page number one to dc:
//

void MyPrintout::DrawPageOne(wxDC *dc)
{
  int leftMargin = 20;
  int topMargin = 50;
         // You must compute the margins there. 
	 // Caution! These values are NOT in printer DC's units.
	 // These values are in screen pixels.
	 // (see bellow)

  // Here we obtain internal cell representation of HTML document:
  // (html is our pointer to wxHtmlWindow object)
  wxHtmlContainerCell *cell = html -> GetInternalRepresentation();

  // Now we have to check in case our real page size is reduced
  // (e.g. because we're drawing to a print preview memory DC)
  int pageWidth, pageHeight;
  int w, h;
  dc->GetSize(&w, &h);                        // DC size
  GetPageSizePixels(&pageWidth, &pageHeight); // real size

  // Now we must scale it. This equation will map wxHtmlWindow
  // to page in this way:
  // |--this is whole page as printed---------|
  // |        |                      |        |
  // |        |                      |        |
  // |-margin-|-----wxHtmlWindow-----|-margin-|
  //
  // So page width is 2*leftMargin + [wxHtmlWindow size]
  // (measured in screen pixels).
  // We will scale the printer DC so that wxHtmlWindow's content
  // spreads from left to right:
  float scale = (float)(
                  (float)(pageWidth) /
                  (float)(2 * leftMargin + cell -> GetMaxLineWidth()));

  // If printer pageWidth == current DC width, then this doesn't
  // change. But w might be the preview bitmap width, so scale down.
  float overallScale = scale * (float)(w/(float)pageWidth);

  // Set the user scale so that our computations take effect:
  dc->SetUserScale(overallScale, overallScale);
  dc->SetBackgroundMode(wxTRANSPARENT);

  // And this is - finally - HTML stuff:
  cell -> Draw(*dc, leftMargin, topMargin, 0, cell -> GetHeight());
}
\end{verbatim}

(Thanks to Julian Smart for sample)
