davidgohel / flextable

table farming
https://ardata-fr.github.io/flextable-book/
545 stars 79 forks source link

docx files rendered with Quarto are broken when images are included (e.g. using as_image, or colformat_image) #612

Open cmhh opened 4 months ago

cmhh commented 4 months ago

docx files rendered with Quarto fail to open if table cells include images, for example using the as_image or colformat_image functions. For example, if we include the example provided by ?as_image in a Quarto document, the result is broken. A minimal file is:

---
format: docx
---

```{r}
library(flextable)

img.file <- file.path(
  R.home("doc"),
  "html", "logo.jpg"
)

if (require("magick")) {
  myft <- flextable(head(iris))
  myft <- compose(
    myft,
    i = 1:3, j = 1,
    value = as_paragraph(
      as_image(src = img.file),
      " ",
      as_chunk(
        Sepal.Length,
        props = fp_text_default(color = "red")
      )
    ),
    part = "body"
  )
  ft <- autofit(myft)
  ft
}


The typical error I get when opening the generated file is:

<img width="255" alt="error" src="https://github.com/davidgohel/flextable/assets/8145662/57a46e91-20fc-491a-996c-e51036f6a5a3">
cmhh commented 4 months ago

Interestingly, outputting to RTF works. This might prove a useful workaround in the short-term.

Edit: wait, not really--the tables in my RTF output are bitmap images.

davidgohel commented 4 months ago

Yes see https://davidgohel.github.io/flextable/reference/as_image.html#note

It works with officer, officedown with r markdown but not quarto

We can't do anything about that

cmhh commented 4 months ago

Okay, thanks. Is there something that Posit need to do on their end, or is it just a dead end? I don't know anything about the implementation, but I'd naively thought Quarto was something like a superset wrt rmarkdown.

davidgohel commented 4 months ago

no I don't think so, flextable output raw HTML, raw latex, raw OOXML code. Quarto manage markdown.