PDF 中 flextable 的保真度使用 R Markdown

问题描述

我在 RMD 中使用 flextable 将表格直接生成为 PDF。但是,即使我的表格在 R 中正确显示,我也会遇到 PDF 格式的问题。可以在 here 或本问题的末尾找到代码,并附上 PDF 的图片

我希望所有列标题底部对齐。但是,我有几个长而重的列标题,当 flextable 被编织到 PDF 时,只有那些保持底部对齐;较短的标题被颠倒了。

我还注意到,当我编织到 PDF 时,顶部单元格边框消失了,并且调整 padding() 没有任何效果

这既是关于这两个具体问题的问题,也是关于 flextable 如何在 PDF 中呈现的问题。是否存在已知的保真度问题?解决这些问题的方法

我还想指出,我使用 flextable 是因为它具有条件格式化能力,所以我不是特别愿意使用不同的表创建包。

感谢您的帮助!

---
output: 
  pdf_document:
    latex_engine: xelatex
classoption: landscape
geometry: paperheight=9in,paperwidth=15in,margin=1in
mainfont: Verdana
header-includes:
   - \usepackage{fancyhdr}
   - \usepackage{lastpage}
   - \pagestyle{fancy}
   - \renewcommand{\headrulewidth}{0pt}
   - \fancyfoot[C]{\thepage\ of \pageref{LastPage}}
   - \fancyhead[C]{\color{red} Header Text Goes Here}
editor_options:
  chunk_output_type: console
---

```{r setup,include=FALSE}
knitr::opts_chunk$set(echo = F)
knitr::opts_chunk$set(message = F)
knitr::opts_chunk$set(warning = F)
```

```{r packages}
library(tidyverse)
library(flextable)
library(Hmisc)
library(tinytex)
```
```{r table}

vals=seq(1,1000,by=0.25)

cols=14

col_names<-str_c(let=letters[1:cols]," ",lab=c(rep("Extra long column text soooooo many words",cols/2),rep("Shorter text",cols/2)))

table<-data.frame(matrix(sample(vals,cols*5,replace=T),nrow=5,ncol=cols))

names(table)<-col_names

```

```{r flextable}
table %>%
  flextable()%>%
  fontsize(size = 9,part = "all") %>% 
  colformat_char(na_str="--") %>%
  
  border_inner(part="body",border=officer::fp_border(color="gray50") )%>%
  border_outer(part="body",border=officer::fp_border(color="gray50") )%>%
  border_inner(part="header",border=officer::fp_border(color="gray50") )%>%
  border_outer(part="header",border=officer::fp_border(color="gray50") )%>%
  align(i=1:nrow(table),j=1:ncol(table),"center",part="body") %>%
  align(i=1,part="header") %>%
  valign(i=1,"bottom",part="header") %>%
  font(i=1:nrow(table),"Verdana",part="body") %>% 
  font(i=1,part="header") %>% 
  
  add_header_lines(c(rep("",6))) %>% 
  compose(i=1,j=NULL,part="header",as_paragraph(as_chunk("TABLE NAME",props = officer::fp_text(bold = TRUE,font.size = 9,font.family="Verdana")))) %>% 
  compose(i=2,as_paragraph(as_chunk("REPORT",props = officer::fp_text(font.size = 9,font.family="Verdana"))))%>%
  compose(i=3,as_paragraph(as_chunk("MORE DETAILS",font.family="Verdana"))))%>%
  compose(i=4,as_paragraph(as_chunk("YET MORE DETAILS",font.family="Verdana"))))%>%
  compose(i=5,as_paragraph(as_chunk("ADDRESS",font.family="Verdana"))))%>%
  compose(i=6,as_paragraph(as_chunk("DRAFT - A WORK IN PROGRESS",font.family="Verdana",color="red"))))%>%
  width(j=1:ncol(table),width=ncol(table)/17)
```

PDF 格式的表格如下所示:

enter image description here

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)