소스 검색

rerun r-fit-text based on printed slide size, fixes overflow when printing to PDF #2865

Hakim El Hattab 4 년 전
부모
커밋
f576b98fbd
4개의 변경된 파일15개의 추가작업 그리고 2개의 파일을 삭제
  1. 0 0
      dist/reveal.esm.js
  2. 0 0
      dist/reveal.js
  3. 4 0
      js/controllers/print.js
  4. 11 2
      js/controllers/slidecontent.js

파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 0 - 0
dist/reveal.esm.js


파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 0 - 0
dist/reveal.js


+ 4 - 0
js/controllers/print.js

@@ -59,6 +59,10 @@ export default class Print {
 				let left = ( pageWidth - slideWidth ) / 2,
 					top = ( pageHeight - slideHeight ) / 2;
 
+				// Re-run the slide layout so that r-fit-text is applied based on
+				// the printed slide size
+				this.Reveal.slideContent.layout( slide );
+
 				let contentHeight = slide.scrollHeight;
 				let numberOfPages = Math.max( Math.ceil( contentHeight / pageHeight ), 1 );
 

+ 11 - 2
js/controllers/slidecontent.js

@@ -167,11 +167,20 @@ export default class SlideContent {
 
 		}
 
+		this.layout( slide );
+
+	}
+
+	/**
+	 * Applies JS-dependent layout helpers for the given slide,
+	 * if there are any.
+	 */
+	layout( slide ) {
+
 		// Autosize text with the r-fit-text class based on the
 		// size of its container. This needs to happen after the
 		// slide is visible in order to measure the text.
-		Array.from( slide.querySelectorAll( '.r-fit-text:not([data-fitted])' ) ).forEach( element => {
-			element.dataset.fitted = '';
+		Array.from( slide.querySelectorAll( '.r-fit-text' ) ).forEach( element => {
 			fitty( element, {
 				minSize: 24,
 				maxSize: this.Reveal.getConfig().height * 0.8,

이 변경점에서 너무 많은 파일들이 변경되어 몇몇 파일들은 표시되지 않았습니다.