flextable icon indicating copy to clipboard operation
flextable copied to clipboard

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

Open cmhh opened this issue 11 months ago • 4 comments

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:

error

cmhh avatar Mar 05 '24 23:03 cmhh

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.

cmhh avatar Mar 05 '24 23:03 cmhh

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

davidgohel avatar Mar 06 '24 07:03 davidgohel

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.

cmhh avatar Mar 06 '24 07:03 cmhh

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

davidgohel avatar Mar 06 '24 07:03 davidgohel