virtual void Visit(const WCHAR *name, const WCHAR *url, int level) {
     if (!url || IsExternalUrl(url))
         return;
     ScopedMem<WCHAR> plainUrl(str::ToPlainUrl(url));
     if (added.FindI(plainUrl) != -1)
         return;
     ScopedMem<char> urlUtf8(str::conv::ToUtf8(plainUrl));
     size_t pageHtmlLen;
     ScopedMem<unsigned char> pageHtml(doc->GetData(urlUtf8, &pageHtmlLen));
     if (!pageHtml)
         return;
     html.AppendFmt("<pagebreak page_path=\"%s\" page_marker />", urlUtf8);
     html.AppendAndFree(doc->ToUtf8(pageHtml, ExtractHttpCharset((const char *)pageHtml.Get(), pageHtmlLen)));
     added.Append(plainUrl.StealData());
 }