private void populateLinkFixer(LinkFixer linkFixer, ContentTree contentTree, Collection<Page> additionalInternalPages) { List<ContentNode> contentNodes = contentTree.getAllContentNodes(); for (ContentNode node : contentNodes) { Page p = node.getPage(); linkFixer.addPage(p.getIdAsString(), p.getTitle()); } additionalInternalPages.forEach(p -> linkFixer.addPage(p.getIdAsString(), p.getTitle())); }
/** * Render each of the nodes (Pages) in the supplied List to an HTML formatted String. * * @param nodes The list of nodes to be rendered to HTML * @param tocBuilder the class to be informed as nodes relevant to the table of contents are processed * @param bookmarksBuilder the class to be informed as nodes relevant to the bookmarks are processed * @param level the level in the ContentTree currently being processed. * @param fullContentTree the full content tree from which the nodes being rendered are taken. * @param progress a class interested in progress updates about the process * @return a list of the Strings where each String is an HTML version of the page content for each note. */ private List<String> renderContentTreeNodes(List<ContentNode> nodes, TocBuilder tocBuilder, BookmarksBuilder bookmarksBuilder, int level, ContentTree fullContentTree, PdfExportProgressMonitor progress) { List<String> renderedPagesContent = new ArrayList<>(); for (ContentNode node : nodes) { Page page = node.getPage(); String renderedHtml = renderToHtml(page, fullContentTree); renderedPagesContent.add(renderedHtml); progress.completedExportedHtmlConversionForPage(String.valueOf(page.getId()), page.getTitle()); tocBuilder.addEntry(level, page.getTitle()); bookmarksBuilder.beginEntry(page.getTitle()); List<ContentNode> children = node.getChildren(); if (children != null && !children.isEmpty()) { renderedPagesContent.addAll(renderContentTreeNodes(children, tocBuilder, bookmarksBuilder, level + 1, fullContentTree, progress)); } bookmarksBuilder.endEntry(); } return renderedPagesContent; }
private PdfNode createPdfTreeNode(ContentNode contentNode, String contextPath, PdfExportProgressMonitor progress, Collection<Page> internalPages, SpaceExportMetrics spaceExportMetrics, PageExportMetrics pageExportMetrics) throws ImportExportException { spaceExportMetrics.getPageExportMetrics().add(pageExportMetrics); final Page page = contentNode.getPage(); progress.performingHtmlToPdfConversionForPage(page.getTitle()); final RenderedPdfFile file = createPdf(page, contextPath, new LinkRenderingDetails(internalPages, NORMALISE), page.getTitle(), pageExportMetrics, headerAndFooter()); PdfNode node = new PdfNode(page.getTitle(), file); for (ContentNode child : contentNode.getChildren()) { final PageExportMetrics childInfo = new PageExportMetrics(); node.addChild(createPdfTreeNode(child, contextPath, progress, internalPages, spaceExportMetrics, childInfo)); } return node; }