itextsharp text to pdf c# : Exporting data from pdf to excel Library SDK component .net asp.net web page mvc exams21-part131

Achim Zeileis, Nikolaus Umlauf, Friedrich Leisch
11
Figure 5: Display of exercise 1 (boxplots) from myexam in Moodle (as rendered by a Firefox
browser).
[1] "exam1.pdf"
"exam2.pdf"
"exam3.pdf"
"metainfo.rda"
[5] "moodlequiz.xml" "qti12.zip"
"solution1.pdf" "solution2.pdf"
[9] "solution3.pdf"
The ZIP file can again be easily imported into an OLAT test configuration where further cus-
tomization can be performed
6
. The first boxplots exercise from the exam generated above
is shown in OLAT in Figure6 (again as rendered by a Firefox browser). The corresponding
solutions are displayed in OLAT immediately after incorrectly completing an individual exer-
cise. The display of solutions can also be suppressed completely by setting solutionswitch
= FALSE in exams2qti12().
7
The main difference of the generated ZIP file for QTI 1.2, compared to the Moodle XML
6
While customization of the features of the overall assessment was always possible for us, OLAT typically
did not allow for modification of the individual exercise items. We were not able to track down which part of
the QTI 1.2 XML specification causes this.
7
In our e-learning exams, we typically employ these default settings (i.e., maxattemps = 1 and
solutionswitch = TRUE). Alternatively, we give the students an unlimited number of attempts to solve an
exercise(maxattempts = Inf) but then suppress solutions completely(solutionswitch = FALSE) becauseoth-
erwise the correct solution would be displayed after the first incorrect attempt.
Exporting data from pdf to excel - extract form data from PDF in C#.net, ASP.NET, MVC, Ajax, WPF
Help to Read and Extract Field Data from PDF with a Convenient C# Solution
how to save a filled out pdf form in reader; extracting data from pdf into excel
Exporting data from pdf to excel - VB.NET PDF Form Data Read library: extract form data from PDF in vb.net, ASP.NET, MVC, Ajax, WPF
Convenient VB.NET Solution to Read and Extract Field Data from PDF
how to fill out a pdf form with reader; vb extract data from pdf
12
Flexible Generation of E-Learning Exams in R
Figure 6: Display of exercise 1 (boxplots) from myexam in OLAT (as rendered by a Firefox
browser).
output, is that in addition to the qti.xml file further supplementary files can be included.
Hence, supplements in all potentialformats can be easily includedand uploaded in one go into
OLAT.Therefore, by default, Base64 is employed only for graphics but not for other files (such
as data sets etc.) but either approach can be used optionally for all types of supplements.
The QTI 1.2 standard allows for rather fine control of the properties of the exercises (also
knownas items inQTI1.2) and the exams (also knownas assessments). Hence,exams2qti12()
provides a variety of options for controlling the appearance of exam/exercises, see the manual
page ?exams2qti12 for details. Also, the underlying XML template can be adapted.
2.3. Creating the first exam
When creating the first “real” exam with exams, i.e., when starting to prepare course mate-
How to C#: Basic SDK Concept of XDoc.PDF for .NET
C# project, such as annotation creating, deleting, modifying, importing, exporting, and so a PDF document from file or query data and save the PDF document
how to save a pdf form in reader; cannot save pdf form in reader
VB.NET PDF: Basic SDK Concept of XDoc.PDF
project, such as annotation creating, deleting, modifying, importing, exporting, and so a PDF document from file or query data and save the PDF document.
extract pdf form data to excel; extract table data from pdf to excel
Achim Zeileis, Nikolaus Umlauf, Friedrich Leisch
13
rials with the help of the package, it is our experience that it works best to start (almost)
from scratch with some simple examples. The package provides a wide range of examples for
typical exercises (see Table3 in the appendix for an overview) which can serve as a starting
point and it is often useful to copy parts of these exercises to create new ones. In particular,
we recommend to keep the formatting as simple as possible for two reasons: (1) The resulting
exercises are typically more robust and work well with different exams2xyz() interfaces (espe-
cially both in LAT
E
Xand in HTML). (2) Some formatting issues require attention to technical
details, e.g., as discussed in Section3.
Thus, we recommend to start with exercises taking inspiration from the available examples
and only using basic L
A
T
E
Xmarkup for mathematical notation and formatting. To aid this
process, exams provides the function exams_skeleton() (or equivalently exams.skeleton())
which creates a directory with a copy of the exercises from Table3 (in the appendix) and the
required templates (e.g., for L
A
T
E
X, HTML, or XML) along with a ‘demo.R’ script illustrating
the use of the various exams2xyz() interfaces.
As an illustration, assume that we are interested in using exams2moodle() and exams2pdf()
for generating both Moodle and PDF exams (for printout). To test that the LAT
E
X-to-HTML
conversion for Moodle actually works for all exercises, we additionally want to inspect the
results of exams2html(). Hence, the code below calls exams_skeleton() specifying these
three writers. Here, we employ a temporary directory but users may set the dir argument to
something like "C:/myexam/" or "~/myexam/" etc.
R> mydir <- file.path(tempdir(), "myexam")
R> exams_skeleton(dir = mydir, absolute = TRUE,
+
writer = c("exams2html", "exams2pdf", "exams2moodle"))
R> dir(mydir)
[1] "demo-all.R"
"demo-html.R"
"demo-moodle.R" "demo-pdf.R"
[5] "exercises"
"templates"
The directory then contains the files ‘demo-all.R’ which can be opened in any editor for
R scripts – as well as separate ‘demo-*.R’ scripts for the different interfaces. These illus-
trate how to create various kinds of output using the exams2html(), exams2pdf(), and
exams2moodle() functions based on the exercises and templates in the subdirectories of the
same name. Absolute paths are employed in the script to refer to these subdirectories (while
the default absolute = FALSE would result in relative paths being used).
The function exams_skeleton() always copies all exercise files to the directory but the
‘demo-*.R’ scripts only employ some selected files for each exercise type. It is easy to modify
the ‘demo-*.R’ scripts, omitting or adding exercises that are readily available in the subdi-
rectory.
Finally, to illustrate how different encodings can be used, exams_skeleton() can also be
called with an encoding argument, e.g., setting encoding = "UTF-8". This modifies the
demo-*.R scripts as well as the HTML and LAT
E
X templates accordingly. The encodings
"latin1" (or "ISO-8859-1") and "latin9" (or "ISO-8859-15") have also been tested. As
usual, employing Sweave files in a particular encoding can be very convenient for special
characters (such as accents or umlauts) but might also lead to problems if they are used in
different locales (e.g., on different operating systems). An alternative route (employed by the
C# PDF Convert to Word SDK: Convert PDF to Word library in C#.net
PDF Library in C#.NET Class. Best C#.NET PDF to Microsoft Office Word converter SDK for exporting PDF to Word in Visual Studio .NET.
extract pdf form data to xml; extracting data from pdf to excel
C# PDF Convert to SVG SDK: Convert PDF to SVG files in C#.net, ASP
without quality loss. C# sample code for quick integration in .NET framework program for exporting PDF from SVG. In some situations
extract data from pdf to excel online; how to save editable pdf form in reader
14
Flexible Generation of E-Learning Exams in R
authors of the exams package) is to employ Sweave ASCII files only, using L
A
T
E
Xcommands
for special characters.
3. Design
All the new exams2xyz() interfaces for generating exams in different formats (with currently
xyz ∈ {pdf, html, moodle, qti12}) are built by combining the modular building blocks
provided by version 2 of exams. All functions have the same goal, i.e., to write exam files in
acertain format to the hard disk. The approach is that the Sweave exercises are first weaved
to LAT
E
X, read into R, potentially transformed (e.g., to HTML), and then written to suitable
output file formats on the disk. Different customizable driver functions (or even driver-
generating functions) for performing the weave/read/transform/write steps are available in
exams. Internally, all the exams2xyz() interfaces choose certain drivers and then call the
new function xexams() (for extensible exams) that handles all temporary files/directories
and suitably executes the drivers. In the following subsections, all these building blocks are
introduced in detail.
3.1. Extended specification of exercises
As discussed in Section2 and illustrated in Figure1, each exercise is simply an Sweave file
containing R code for data generation, question/solution environments with L
A
T
E
Xtext,
and metainformation about the type of exercise and the correct solution etc. This design was
introduced byGr
¨
un and Zeileis(2009)butisslightlyextendedinthenewversiontoprovide
some more options for the generation of e-learning exams. See Table2 for an overview for a
list of exercise types and corresponding metainformation commands.
Each exercise must specify at least an \extype{} and an \exsolution{} and should typically
also have a short \exname{}. There are now five different extypes. Two types that have a
single question and answer:
num for questions with a numeric answer, e.g., \exsolution{1.23}.
string for questions with a (short) text answer, e.g., \exsolution{glm}.
Three types have a list of questions (or statements):
mchoice for multiple-choice questions where each element of the question/statement
can either be true or false, e.g., \exsolution{01011}.
schoice for single-choice questions where exactly one of the questions/statements is
true and all others are false, e.g., \exsolution{01000}.
cloze for a combination of questions/statements with num, string, or mchoice answers.
Thus, each element of the question has either a numeric, short text, or single/multiple-
choice answer, e.g., \exsolution{1.23|001|glm}. To specify the individual cloze
types, a clozetype has to be given, e.g., \exclozetype{num|schoice|string}.
The types schoice and cloze have been newly introduced. The purpose of the former is
mainly to allow for different processing of options (e.g., for assigning points to correct/wrong
C# PDF Convert to Text SDK: Convert PDF to txt files in C#.net
Free evaluation library for exporting PDF to Text in both C#.NET WinForms application and ASP.NET WebForms. RasterEdge.XDoc.Excel.dll. RasterEdge.XDoc.PDF.dll.
save data in pdf form reader; pdf data extraction
C# Create PDF from images Library to convert Jpeg, png images to
Create PDF from images in both .NET WinForms and ASP.NET application. .NET converter control for exporting high quality PDF from images in C#.NET.
pdf form save with reader; extract data from pdf c#
Achim Zeileis, Nikolaus Umlauf, Friedrich Leisch
15
Command
Description
\extype{}
Specification of the type of exercise (required): num for questions with
anumeric answer, mchoice for questions with multiple-choice answers,
schoice for questions with single-choice answers (i.e., multiple-choice
with exactly one correct solution), string for questions with a (short)
text answer, or cloze for cloze solutions (i.e., combinations of the
above).
\exname{}
Short name/description (to be used for printing within R).
\extitle{}
Pretty longer title (for Moodle).
\exsection{}
Section of the exercise (for Moodle, with slashes for subsections as in
aURL).
\exversion{}
Version of the exercise.
\exsolution{}
Correct solution (required). It must contain a numeric solution for
num, a string of zeros/ones for mchoice/schoice, or a character string
of string. For cloze a combination of these can be specified, e.g.,
\exsolution{1.23|001|glm}.
\extolerance{} Tolerance for num solutions or a vector of tolerances (expanded if nec-
essary) for cloze solutions. If unspecified the tolerance is 0.
\exclozetype{} List of types for the elements of a cloze exercise, e.g.,
\exclozetype{num|schoice|string} for the example above.
\expoints{}
Points for (fully) correct solution. Default is 1.
\exextra[]{}
Additional metainformation to be read and stored, e.g., for new
custom interfaces.
The default storage type is character, e.g.,
\exextra[myinfo]{1.23} yields a metainformation element myinfo
of "1.23".
The type can also be numeric or logical, e.g.,
\exextra[myinfo,logical]{FALSE|FALSE|TRUE}.
Table 2: Overview of metainformation commands in exercises. The commands in the first
section allow for a general description, those in the second section for question/answer spec-
ification. Only extype and exsolution are always required (but exname is recommended
additionally for nice printing in R).
results) between mchoice and schoice. The cloze type was introduced because both Moodle
and QTI 1.2 have support for it (albeit in slightly different ways, for details see below).
Possible evaluation strategies (with/without partial credits and/or with/without negative
points) are discussed below for exams2moodle() and exams2qti12() and in AppendixB for
further functionality within R.
For the three types with lists of questions (mchoice, schoice, cloze), the question and
solution environments should each contain at the end an answerlist environment. In the
question this should list an \item for each question/statement and in the solution the
corresponding answers/explanations can be provided (if any). The answerlist environment
can either be written as usual “by hand” or by using the answerlist() function provided
by the exams package. For illustration, we set up a multiple-choice question with three
statements about Switzerland. First, we generate an answerlist with statements for the
question.
R> qu <- c("Zurich is the capital of Switzerland.",
VB.NET PDF - Convert PDF with VB.NET WPF PDF Viewer
Data. Data: Auto Fill-in Field Data. Field: Insert PDF, VB.NET Word, VB.NET Excel, VB.NET part illustrates some conversion tabs and features for PDF exporting.
pdf data extraction to excel; using pdf forms to collect data
C# WPF PDF Viewer SDK to convert and export PDF document to other
Data. Data: Auto Fill-in Field Data. Field: Insert PDF, VB.NET Word, VB.NET Excel, VB.NET part illustrates some conversion tabs and features for PDF exporting.
extract data from pdf using java; extract pdf data into excel
16
Flexible Generation of E-Learning Exams in R
+
"Italian is an official language in Switzerland.",
+
"Switzerland is part of the European Union (EU).")
R> answerlist(qu)
\begin{answerlist}
\item Zurich is the capital of Switzerland.
\item Italian is an official language in Switzerland.
\item Switzerland is part of the European Union (EU).
\end{answerlist}
Then the corresponding answerlist for the solution is set up.
R> sol <- c(FALSE, TRUE, FALSE)
R> ex <- c("The capital of Switzerland is Bern.",
+
"The official languages are: German, French, Italian, Romansh.",
+
"Switzerland is part of the Schengen Area but not the EU.")
R> answerlist(ifelse(sol, "True", "False"), ex)
\begin{answerlist}
\item False. The capital of Switzerland is Bern.
\item True. The official languages are: German, French, Italian, Romansh.
\item False. Switzerland is part of the Schengen Area but not the EU.
\end{answerlist}
For more examples see the exercise files in the inst/exercises directoy of the exams source
package. There are various multiple-choice questions with and without figures and/or ver-
batim R output (e.g., anova, boxplots, cholesky, among others). The files tstat and
tstat2 illustrate how the same type of exercise can be coded as a num or schoice question,
respectively. The cloze type is employed in, e.g., boxhist or fourfold (with more flexible
formatting specifically for Moodle in boxhist2 and fourfold2, respectively). See also Table3
in the appendix for an overview and AppendixC for more details on cloze exercises.
3.2. The xexams() wrapper function
To avoid recoding certain tedious tasks –such as copying/reading files andhandling temporary
directories – for each of the user interfaces introduced in Section2, the new exams package
provides a modular and extensible framework for building new exam-generating functions.
This framework is tied together by the xexams() function which is typically not called by
users directly but forms the basis for all new exams2xyz interfaces.
To accomplish this, xexams() also takes the arguments listed in Table1 (except name and
template), draws exams from the exercise file list, and does all the necessary file/directory
handling. Furthermore, it takes a driver argument that needs to be a list of four functions
driver = list(sweave, read, transform, write). These are utilized as follows:
1. Weave: For eachof the selected exercise files (withinalln exams) driver$sweave(file)
is run to weave the .Rnw file into a .tex file. If sweave = NULL (the default), the
standard Sweave() function is used. If sweave = list(...) is a list, e.g., list(pdf
= FALSE, png = TRUE), this is passed as arguments to Sweave().
C# PDF Convert to Images SDK: Convert PDF to png, gif images in C#
NET. Support exporting PDF to multiple image forms, including Jpg, Png, Bmp, Gif, Tiff, Bitmap, .NET Graphics, and REImage. Support
pdf form field recognition; extracting data from pdf forms to excel
VB.NET Create PDF from images Library to convert Jpeg, png images
REImage. .NET converter control for exporting high quality PDF from images. Turn multiple image formats into one or multiple PDF file.
extracting data from pdf files; how to save pdf form data in reader
Achim Zeileis, Nikolaus Umlauf, Friedrich Leisch
17
list(
## of
exams
, length: n
list(
## of
exercises
, length: k
list(
## of exercise content, length: 6
question,
questionlist,
solution,
solutionlist,
metainfo,
supplements
)
)
)
Figure 7: Structure of the return value of xexams(), when used with the default read driver
read_exercises().
2. Read: Each resulting .tex file is read into R using driver$read(file). By default
(read = NULL), the function read_exercise() is used (see below), resulting in a list of
character vectors with the L
A
T
E
Xcode for question/solution plus metainformation.
3. Transform: Each of these exercise-wise list objects can subsequently be transformed by
driver$transform(object) which can be leveraged for transformations from L
A
T
E
Xto
HTML etc. By default (transform = NULL), no transformation is applied.
4. Write: The (possibly transformed) lists of exercises, read into R for each exam ob-
ject, can be written out to one ore more files per exam in an output directory via
driver$write(object, dir, info = list(id, n)). By default (write = NULL), no
files are written.
After performing each of the driver functions, xexams() returns invisibly a nested list object
(currently unclassed) as illustrated in Figure 7. It is a list of exams (of length n), each of
which is a list of exercises (whose length depends on the length of file and nsamp), each of
which is a list (whose length/contents depends on driver$read). When used with the default
read_exercise(), each exercise is a list of length 6 containing the question/solution texts,
metainformation, and paths to supplementary files. These will be introduced in more detail
in the next section.
All of the interfaces introduced in Section2 employ the standard Sweave() function for the
weaving step (possibly with custom arguments) and the read_exercise() function for the
reading step. They mainly differ in the transformation and writing step. exams2pdf() needs
no transformation and the writer first sets up a .tex file for each exam, calls texi2dvi(pdf
= TRUE), and then copies the resulting .pdf file to the output dir. exams2html() on the
other hand uses a T
E
X-to-HTML transformation and the writer then sets up a .html file for
each exam and copies it to the output dir. Finally, exams2moodle() and exams2qti12()
both also use a transformation to HTML but have no writer. The reason for this is that they
do not write one file per exam (i.e., with only one replication per exercise) but rather need
18
Flexible Generation of E-Learning Exams in R
to produce XML files that include all different replications of each exercise. Hence, they take
the list returned by xexams() and process it subsequently in different ways. The details for
all these steps are explained in the subsequent subsections.
3.3. The read driver: read_exercise() and read_metainfo()
The function read_exercise() reads the weaved exercises, i.e., files like that shown in Fig-
ure2. It simply extracts the text lines from the question and solution environments and
stores them in vectors of the same name. If these environments contain answerlist en-
vironments, these are extracted and stored separately in questionlist and solutionlist
vectors,respectively. Finally, the metainformation is extractedusing read_metainfo() which
not only stores character vectors but also transforms them to suitable types (depending on
the extype) and performs some sanity checks. The resulting metainformation is a list with
elements essentially corresponding to the commands from Table2.
For illustration, we run xexams() to select the same three exams as used in the Moodle
and OLAT examples above. However, using the default driver specification, xexams() just
performs the weaving and reading steps (and has no transformation or writing step):
R> set.seed(1090)
R> x <- xexams(myexam, n = 3)
The resulting object is a nested list as shown in Figure7 with 3 exams of 5 exercises each
(drawn from the myexam list). Using x[[i]][[j]], the j-th exercise of the i-th exam can
be accessed. Here, we explore the first exercise (boxplots, a multiple-choice question) from
the first exam that is also shown in Figures5 and6. Its general question text (in LAT
E
X) is
printed below – it requires a graphic which is stored in a supplementary file in a temporary
directory.
R> writeLines(x[[1]][[1]]$question)
In the following figure the distributions of a variable
given by two samples (A und B) are represented by parallel boxplots.
Which of the following statements are correct? \emph{(Comment: The
statements are either about correct or clearly wrong.)}
\setkeys{Gin}{width=0.7\textwidth}
\includegraphics{boxplots-002}
R> x[[1]][[1]]$supplements
boxplots-002.pdf
"/tmp/Rtmpdw8buK/file5f28391e03bf/exam1/exercise1/boxplots-002.pdf"
attr(,"dir")
[1] "/tmp/Rtmpdw8buK/file5f28391e03bf/exam1/exercise1"
The corresponding list of statements about the graphic is stored separately. It is shown below
along with the most important metainformation elements.
Achim Zeileis, Nikolaus Umlauf, Friedrich Leisch
19
R> x[[1]][[1]]$questionlist
[1] "The location of both distributions is about the same."
[2] "Both distributions contain no outliers."
[3] "The spread in sample A is clearly bigger than in B."
[4] "The skewness of both samples is similar."
[5] "Distribution A is about symmetric."
R> x[[1]][[1]]$metainfo[c("file", "type", "solution")]
$file
[1] "boxplots"
$type
[1] "mchoice"
$solution
[1] TRUE TRUE FALSE TRUE TRUE
In summary, xexams() combined with the default readers is relatively straightforward to use
in other progams (such as the exams2xyz functions). The return value is somewhat“raw”as
it is not classed and has no dedicated methods for subsetting etc. However, we refrained from
using a more elaborate structure as this function is not meant to be called by end-users while
we expected other developers to find the current structure sufficiently simple to use in their
programs.
3.4. L
A
T
E
X-to-HTML transform driver generator
When embedding statistical/mathematical exercises into web pages or learning management
systems, the exercises’ LAT
E
Xtext – typically containing mathematical notation – has to be
transformed in some way so that it can be rendered by a browser. Until relatively recently,
this posed the notorious problem of how to display the mathematical formulas and often the
only good answer was to embed raster images of the formulas. However, this situation has
clearly changed (see e.g.,Vismor2012) and there are now various convenient options: e.g.,
using the mathematical markup language MathML (W3C2014;Wikipedia2014) or keeping
L
A
T
E
Xformulas in the web page and embedding some JavaScript for rendering them.
Especially the display of MathML in web pages has become very easy: Firefox long had native
support for it and for the Microsoft Internet Explorer the MathPlayer plugin (DesignScience
2013b)haslongbeenavailable.Morerecently,othermajorbrowserslikeOperaorSafarialso
added support for MathML (seeVismor2012, Section 1.2). Google Chrome briefly enabled
MathML support but disabled it again due to instabilities. Furthermore, MathJax (Design
Science 2013a),anopen-sourceJavaScriptengine,canbeusedtorenderMathML(orLAT
E
X)
formulas on a server rather than in the local browser.
Therefore, the new exams package offers functionality for automatically transforming the
LAT
E
Xexercises to HTMLwithin Randby default employs MathML for allmathematicalnota-
tion(e.g., as demonstratedin Figure4). More specifically, the package provides the driver gen-
erator make_exercise_transform_html(). It returns a function suitable for plug-in into the
20
Flexible Generation of E-Learning Exams in R
transform driver in xexams() whichthen replaces theL
A
T
E
Xcode inquestion/questionlist
and solution/solutionlist with HTML code. For illustration, we set up a particular func-
tion trafo() below and apply it to the first exercise in the first exam within the object x
that we had considered before:
R> trafo <- make_exercise_transform_html(converter = "ttm", base64 = FALSE)
R> writeLines(trafo(x[[1]][[1]])$question)
In the following figure the distributions of a variable
given by two samples (A und B) are represented by parallel boxplots.
Which of the following statements are correct? <em>(Comment: The
statements are either about correct or clearly wrong.)</em>
<div class="p"><!----></div>
<img src="boxplots-002.png" alt="boxplots-002.png" />
<div class="p"><!----></div>
It can be seen that the resulting exercise employs HTML text, e.g., uses <em> insteadof \emph
or <img> instead of \includegraphics.
8
Internally, make_exercise_transform_html() can leverage three different converters: ttm
(default), tth, or tex2image. The former two come from the R package tth (Hutchinson
et al. 2013) and d internally y call l the e two o C C functions tth h (T
E
X to HTML) and ttm (T
E
X
to HTML/MathML) taken from the TtH suite of Hutchinson (2012). The last option,
tex2image, is a function provided by the exams package itself. It proceeds by first run-
ning texi2dvi(pdf = TRUE) from the base R package tools and subsequently converting the
resulting PDF to a raster image in a system() call to ImageMagick’s convert function (Im-
ageMagick Studio LLC 2014).Thus,forthisfunctionImageMagickisassumedtobeinstalled
and in the search path. All three converters have their benefits and drawbacks:
tth is typically preferable if there is no or only very simple mathematical notation. The
resulting HTML can then be rendered in any modern browser.
ttm is preferable if there is some standard mathematical notation (e.g., fractions or
equation arrays etc.). As argued above this can still be easily displayed in suitable
browsers or by employing MathJax in the web page.
tex2image is the “last resort” if neither of the two previous approaches work, e.g., if
more complex LAT
E
Xcommands/packages need to be used which are not supported by
tth/ttm. It is fairly slow while tth/ttm are typically even faster than calling LAT
E
X.
To explore the differences of the results, the converters can also be called directly on character
strings containing LAT
E
X. Below we use two simple code lines for which tth() would probably
be sufficient:
8
It may be noteworthy to that the conversion (a) assumes the graphics to be in .png format and (b) does
not resolve the figure reference at the beginning of the text correctly. For (a), we just need to make sure that
the sweave driver in xexams() has png = TRUE (and pdf = FALSE) which is accounted for in exams2html()
etc. Issue (b), however, needs to be avoided by formulating the underlying .Rnw differently (or by tolerating
the missing number).
Documents you may be interested
Documents you may be interested