R/BSkyExportOutputPro.r

Defines functions BSkyExportOutputPro

BSkyExportOutputPro <- function(pandocPath, exportDirPath, exportFilename, exportFormat) #
{
	BSkyFunctionInit()
	
	BSkyErrMsg = paste("BSkyExportOutputPro: Error exporting output : ",sep="")
	BSkyWarnMsg = paste("BSkyExportOutputPro: Warning exporting output : ",sep="")
	BSkyStoreApplicationWarnErrMsg(BSkyWarnMsg, BSkyErrMsg)
	success = FALSE

	tryCatch({
	
			withCallingHandlers({
			
				#Check pandoc path. This is in JS code
				
				##normalizePath(file.path("folder", "subfolder", "file.txt"), mustWork = FALSE)
				RMDfilename = normalizePath(file.path(exportDirPath, paste(exportFilename, ".Rmd", sep='')), mustWork = FALSE)
				HTMLfilename = normalizePath(file.path(exportDirPath, paste(exportFilename, ".html", sep='')), mustWork = FALSE)
				DOCXfilename = paste(exportFilename, ".docx", sep='')			
			
				library(rmarkdown);
				library(pagedown);
				#Need to add the pandoc installation directory path
				Sys.setenv(PATH = paste(Sys.getenv("PATH"), '"',pandocPath,'"', sep = .Platform$path.sep));

				#Save the BSky App's current Kable output table styling settings
				bsky_orig_BSkyGetKableAndRmarkdownFormatting = BSkyGetKableAndRmarkdownFormatting();
				bsky_orig_BSkyKabletableStylingOptions = uadatasets.sk$BSkyKabletableStylingOptions;

				# DOCX, PDF requires HTML so no need of 'if' because it is always needed
				#if(exportFormat == 'HTML' || exportFormat == 'DOCX'){ 
					output_html = rmarkdown::render(RMDfilename, output_format = c("html_document"));
					success = TRUE
				#}

				# Use do.call to unpack the list of four values and pass arguments in the correct order automatically
				do.call(BSkySetKableAndRmarkdownFormatting, unname(bsky_orig_BSkyGetKableAndRmarkdownFormatting));
				uadatasets.sk$BSkyKabletableStylingOptions = bsky_orig_BSkyKabletableStylingOptions;

				if(exportFormat == 'DOCX'){
					rmarkdown::pandoc_convert(HTMLfilename, to = "docx", output = DOCXfilename);
					success = TRUE
				}
				if(exportFormat == 'PDF'){
					pagedown::chrome_print(HTMLfilename);
					success = TRUE
				}
				if(exportFormat == 'PPTX'){
					#output_html = rmarkdown::render(RMDfilename, output_format = c("powerpoint_presentation"));
					success = TRUE
				}
			
			}, warning = BSkyOpenDatafileCommandErrWarnHandler, silent = TRUE)
		}, error = BSkyOpenDatafileCommandErrWarnHandler, silent = TRUE)
		

	BSkyFunctionWrapUp()	
	return(success)
}
BlueSkyStatistics/BlueSky documentation built on April 14, 2025, 7:39 a.m.