2017-06-22 31 views
6

Mam problem z nową możliwością zrobienia zrzutu widżetów HTML do dalszej implementacji, na przykład w dokumencie PDF. Zrzut ekranu pakietu datatable (DT) ma zbyt wysoką wysokość, która pojawia się jako biała przestrzeń w dokumencie (jest łatwo zauważalna w pozycji fig.cap, czyli poniżej końca datatable) .i nie może zrozumieć, dlaczego to się dzieje i chciałbym usunąć go (bez białej spacji pod datatable). Rzucić okiem na poniższy dla test.Rmd przykład, który w pełni pokazuje problem:Biała przestrzeń ze zrzutu danych datowalnych w Rmarkdown PDF

--- 
output: 
    pdf_document: 
    toc: yes 
header-includes: 
    - \usepackage{fancyhdr} 
    - \usepackage[ngerman]{babel} 
--- 
\addtolength{\headheight}{1.0cm} 
\pagestyle{fancyplain} 
\renewcommand{\headrulewidth}{0.4pt} 
\renewcommand{\footrulewidth}{0.4pt} 
\chead{Test} 
\lhead{\scriptsize\today} 


```{r, fig.align='center', fig.pos='htb!', fig.width=12, fig.cap="The height of screenshot is too high!!",fig.height=3,echo=FALSE, cache=FALSE, warning = FALSE, message = FALSE, tidy=TRUE} 
library(DT) 
library(webshot) 
datatable(mtcars[1:2,],rownames=FALSE, options = list(dom='t',ordering=F)) 
``` 

enter image description here

  • Dodatkowo Próbowałem inną liczbę wyświetlanych wierszy datatable, a ja zauważyłem, jeśli datatablema> 20 wierszy, a następnie rysunek jest dobrze wyświetlany z podpisem.
  • Jednak mój stół w oryginalnym pliku PDF ma na przykład 2 rzędy (może być nieco bardziej -> liczba wierszy jest reaktywna, jak to jest raport downloable należący do shiny app), to dlaczego w przykład użyłem tylko dwóch wierszy z zestawu danych mtcars.
+0

Czy jesteś na Mac lub Windows lub ...? Czy możesz publikować wyniki devtools :: session_info()? – swihart

+0

Witaj. Czy udało Ci się znaleźć rozwiązanie twojego problemu? – AK88

+0

Witaj @ AK88 nie, niestety nie udalo mi sie znalezc odpowiedniego rozwiazania –

Odpowiedz

1

można spróbować dodać następujące r chunk i sprawdzić, czy to działa:

screenshot.opts = list(delay = 1, cliprect = c(0, 0, 1000, 150)), dev='jpeg' 

enter image description here

+0

Niestety nie działa –

+0

Czy możesz wypróbować moją zmienioną opcję? – AK88

+1

+1 dla dobrego pomysłu, jednak jest jeden problem, ten kod przycina obraz (stała wysokość), ale co, jeśli mój obraz będzie bardziej wierszy (3, a nie 2)? Dzieje się tak, ponieważ ten "rmarkdown" jest raportem do pobrania z błyszczącej aplikacji. –

0

Na stronie, z którego są chwytając tabeli, czy istnieje selektor CSS? Jeśli znajdziesz taki, który otacza tylko stół, może po prostu chwycić stół, a nie ujęcie całej strony. Zobacz ten przykład:

webshot("http://www.nfl.com/superbowl/results/superbowl/", "nfl.png", 
     selector = "div.columnStats") 

Aby znaleźć selektor CSS, poszedłem na stronie internetowej (w tym przypadku http://www.nfl.com/superbowl/results/superbowl/) w przeglądarce, a następnie naciśnij Ctrl + U, aby wyświetlić źródło. I przewijane aż znalazłem tabelę i na linii 1374 znalezionych

<!-- Records table --> 
    <div class="columnStats"> 

przetłumaczyłem div class="columnStats" do opcji div.columnStats, którą określony dla selektora.

Okna

udało mi się odtworzyć swój błąd. W twojej aktualnej aplikacji jest selektor CSS, który możesz określić? (patrz przykład NFL powyżej).

MAC

Żadnych problemów z białymi znakami. Oto co zrobiłem:

Nigdy nie używałam DT, webshot ani PhantomJS.Więc po:

install.packages("DT") 
install.packages("webshot") 
webshot::install_phantomjs() 

I knit'd się test.Rmd ty pisał na moim mac i otrzymała:

enter image description here

+0

Hi @ swihart, tabela jest renderowana w Rmarkdown, więc nie ma strony internetowej. Po drugie: Mój R jest zainstalowany na serwerze Linux –

Powiązane problemy