private Map<String, Object> buildVelocityContext(final SearchResult searchResult, final SearchResultRenderContext renderContext, final AbstractPage page, final List<ThumbnailInfo> thumbnails) { final Map<String, Object> ctx = defaultVelocityContext(); ctx.put(CTX_IMAGE_COUNT, thumbnails.size()); if (thumbnails.size() > THUMBNAIL_LIMIT) { ctx.put(CTX_THUMBNAILS, thumbnails.subList(0, THUMBNAIL_LIMIT)); } else { ctx.put(CTX_THUMBNAILS, thumbnails); } ctx.put(CTX_SEARCH_RESULTS, searchResult); ctx.put(CTX_EXCERPT, new HtmlFragment(getHitHighlighter(renderContext.getQueryString()) .getSummary(searchResult.getContent()))); ctx.put(CTX_PAGE_ID, page.getId()); return ctx; } }
public File createPdfForPage(User user, AbstractPage page, String contextPath, PageExportMetrics pageExportMetrics) throws ImportExportException { final long startTime = System.currentTimeMillis(); try { pageExportMetrics.setPageId(page.getId()); pageExportMetrics.setPageRevision(page.getConfluenceRevision().hashCode()); final File result = doCreatePdfForPage(user, page, contextPath); pageExportMetrics.getExportResults().setExportStatus(ExportStatus.OK); pageExportMetrics.getExportResults().setPdfPagesTotal(PdfUtils.numberOfPages(result)); pageExportMetrics.getExportResults().setPdfFileSizeBytes(result.length()); return result; } finally { pageExportMetrics.setTimeMs((int) (System.currentTimeMillis() - startTime)); } }
private RenderedPdfFile createPdf(AbstractPage page, String contextPath, LinkRenderingDetails linkDetails, String filePrefix, PageExportMetrics pageExportMetrics, DecorationPolicy decoration) throws ImportExportException { log.debug("Exporting page {}", page.getId()); final Document xhtml; if (page instanceof Page) { xhtml = createDocument((Page) page, linkDetails, decoration); } else { xhtml = createDocument((BlogPost) page); } final long startTime = System.currentTimeMillis(); try { pageExportMetrics.setPageId(page.getId()); pageExportMetrics.setPageRevision(page.getConfluenceRevision().hashCode()); final RenderedPdfFile result = renderPdf(contextPath, page.getTitle(), xhtml, filePrefix, pageExportMetrics); pageExportMetrics.getExportResults().setExportStatus(ExportStatus.OK); pageExportMetrics.getExportResults().setPdfPagesTotal(result.getNumPages()); pageExportMetrics.getExportResults().setPdfFileSizeBytes(result.getFile().length()); return result; } finally { pageExportMetrics.setTimeMs((int) (System.currentTimeMillis() - startTime)); } }
public List<Bookmark> getBookmarks() { AbstractPage bookmarkPage = getPage(); List<Bookmark> bookmarks; if (null != bookmarkPage) { bookmarks = Arrays.asList(bookmarkUtils.getBookmark(bookmarkPage.getId())); } else { boolean isNotForSpace = !isForSpaceMode(); bookmarks = bookmarkUtils.getBookmarkList( new HashSet<String>(Arrays.asList(isNotForSpace ? getSpace().getKey() : BookmarkUtils.SPACES_ALL)), isNotForSpace ? getLabels() : new StringBuilder(BookmarkUtils.FORLABEL_PREFIX).append(getSpace().getKey()).toString(), getCreators(), getSort(), getMaxBookmarksToList(), 1, isReverseSort()).getBookmarkList(); } return bookmarks; }
private String renderToHtml(AbstractPage page, ContentTree fullContentTree) { if (LOG.isDebugEnabled()) LOG.debug("Rendering to exported XHTML page id=" + page.getId() + " (" + page.getTitle() + ")"); PageContext context = page.toPageContext(); context.setBaseUrl(settingsManager.getGlobalSettings().getBaseUrl()); context.setOutputType(RenderContext.PDF); DefaultConversionContext conversionContext = new DefaultConversionContext(context); if (fullContentTree != null) { conversionContext.setContentTree(fullContentTree); } final String html = xhtmlRenderer.render(page, conversionContext); return renderPageTemplate(page.getTitle(), html); }
private File doCreatePdfForPage(User user, AbstractPage page, String contextPath) throws ImportExportException { exportPermissionChecker.checkAuthorization(user, page); Document xhtml; if (page instanceof Page) { ContentTree tree = newContentTree(); tree.addRootNode(new ContentNode((Page) page)); xhtml = intermediateHtmlBuilder.buildHtml(tree, page.getSpace(), LinkRenderingDetails.anchors(), DecorationPolicy.none()); } else if (page instanceof BlogPost) { xhtml = intermediateHtmlBuilder.buildHtml((BlogPost) page); } else { throw new IllegalArgumentException("Only pages and blog post are supported"); } String spaceKey = getSpaceKeyForExportFileName(page.getSpaceKey()); File pdf; try { String filename = spaceKey + "-" + ((page.getTitle() == null) ? page.getId() : page.getTitle().replaceAll("\\s", "")); if (!GeneralUtil.isSafeTitleForFilesystem(filename)) { filename = spaceKey + "-" + page.getId(); } pdf = flyingPdfDocumentConverter.convertXhtmlToPdf(filename, xhtml, contextPath); } catch (ImportExportException e) { if (e.getCause() instanceof FileNotFoundException) { String filename = spaceKey + "-" + page.getId(); pdf = flyingPdfDocumentConverter.convertXhtmlToPdf(filename, xhtml, contextPath); } else { throw e; } } return pdf; }
@Override public File createPdfForPage(User user, AbstractPage page, String contextPath, PageExportMetrics pageExportMetrics) throws ImportExportException { pageExportMetrics.setPageId(page.getId()); pageExportMetrics.setPageRevision(page.getConfluenceRevision().hashCode()); pageExportMetrics.getEnvironmentInfo().setExportScope(ExportScope.PAGE); fillEnvironmentData(page.getSpace(), pageExportMetrics.getEnvironmentInfo()); try { return delegate.createPdfForPage(user, page, contextPath, pageExportMetrics); } catch (Exception e) { pageExportMetrics.getExportResults().setFailureLocation(FailureLocation.PAGE); setGenericError(pageExportMetrics.getExportResults()); throw e; } finally { sendToAnalytics(new PdfExportAnalyticEvent(pageExportMetrics)); } }