| Marc Kupietz | d2be736 | 2023-06-14 07:17:27 +0200 | [diff] [blame] | 1 | #' Posterdown IDS-CD based on HTML format (using pagedown::poster_relaxed) |
| 2 | #' |
| 3 | #' @inheritParams pagedown::poster_relaxed |
| 4 | #' @param ... Additional arguments to `rmarkdown::html_document` |
| 5 | #' |
| 6 | #' @return R Markdown output format to pass to |
| 7 | #' [rmarkdown::render()] |
| 8 | #' |
| 9 | #'@examples |
| 10 | #'\donttest{ |
| 11 | #'file <- file.path(tempdir(),"foo.rmd") |
| Marc Kupietz | a39d0cc | 2024-05-31 12:45:45 +0200 | [diff] [blame] | 12 | #'rmarkdown::draft(file, template="posterdown_ids", package="posterdown.ids") |
| Marc Kupietz | d2be736 | 2023-06-14 07:17:27 +0200 | [diff] [blame] | 13 | #'} |
| 14 | #' |
| Marc Kupietz | a39d0cc | 2024-05-31 12:45:45 +0200 | [diff] [blame] | 15 | #' @description The output format `posterdown_ids()` mimics the IDS Mannheim |
| Marc Kupietz | d2be736 | 2023-06-14 07:17:27 +0200 | [diff] [blame] | 16 | #' corporate design posters. |
| Marc Kupietz | a39d0cc | 2024-05-31 12:45:45 +0200 | [diff] [blame] | 17 | #' @rdname posterdown_ids |
| Marc Kupietz | d2be736 | 2023-06-14 07:17:27 +0200 | [diff] [blame] | 18 | #' @export |
| 19 | posterdown_ids <- function(..., |
| 20 | template = find_resource("posterdown_ids", "template.html"), |
| 21 | css = NULL) { |
| 22 | pagedown::poster_relaxed(..., css = css, template = template) |
| 23 | } |
| 24 | |
| Marc Kupietz | cbe8b14 | 2023-06-24 17:48:20 +0200 | [diff] [blame] | 25 | |
| Marc Kupietz | 60a299b | 2026-08-05 17:45:56 +0200 | [diff] [blame^] | 26 | #' @param url Target URL for the QR code |
| 27 | #' @param logo Optional path to a logo image to place in the center of the QR code |
| 28 | #' @param text Optional text/caption to display below the QR code (alias: \code{caption}) |
| 29 | #' @param caption Alias for \code{text} |
| Marc Kupietz | cbe8b14 | 2023-06-24 17:48:20 +0200 | [diff] [blame] | 30 | #' @description Print html code for a linked qr code to the given url |
| 31 | #' @importFrom qrcode add_logo qr_code generate_svg |
| 32 | #' @export |
| Marc Kupietz | 60a299b | 2026-08-05 17:45:56 +0200 | [diff] [blame^] | 33 | qrlink <- function(url, logo = NULL, text = NULL, caption = text) { |
| Marc Kupietz | cbe8b14 | 2023-06-24 17:48:20 +0200 | [diff] [blame] | 34 | tmp <- tempfile(fileext = ".svg") |
| 35 | qrcode <- qrcode::qr_code(url, ecl = if(is.null(logo)) "L" else "H") |
| 36 | if(!is.null(logo)) { |
| 37 | qrcode <- qrcode::add_logo(qrcode, logo, ecl = "L") |
| 38 | } |
| 39 | qrcode::generate_svg(qrcode, tmp, show = FALSE) |
| Marc Kupietz | 60a299b | 2026-08-05 17:45:56 +0200 | [diff] [blame^] | 40 | |
| 41 | cap_html <- if (!is.null(caption) && nchar(trimws(caption)) > 0) { |
| 42 | sprintf('<span class="qrcode-caption">%s</span>', caption) |
| 43 | } else { |
| 44 | "" |
| 45 | } |
| 46 | |
| 47 | if (nchar(cap_html) > 0) { |
| 48 | return(paste0( '<div class="qrcode-container"><a class="qrcode" href="', url, '"><img class="qrcode">', |
| 49 | gsub("\r?\n|\r", "", readChar(tmp, 1e7)), |
| 50 | '</img></a>', |
| 51 | cap_html, |
| 52 | '</div>' |
| 53 | )) |
| 54 | } else { |
| 55 | return(paste0( sprintf('<a class="qrcode" href="%s"><img class="qrcode">', url), |
| 56 | gsub("\r?\n|\r", "", readChar(tmp, 1e7)), |
| 57 | '</img></a>' |
| 58 | )) |
| 59 | } |
| Marc Kupietz | cbe8b14 | 2023-06-24 17:48:20 +0200 | [diff] [blame] | 60 | } |
| 61 | |