view pdf in asp net mvc : Changing pdf to text Library SDK class asp.net wpf web page ajax memman32-part888

15.3. Verbatims
\newcommand{\nobvbox}{%
\bvperpagefalse
\renewcommand{\bvtoprulehook}{}%
\renewcommand{\bvleftsidehook}{}%
\renewcommand{\bvrightsidehook}{}%
\renewcommand{\bvendrulehook}{}%
\renewcommand{\bvtopmidhook}{\rule{0pt}{2\fboxsep} \hss}%
}
The definitions of the other styles,
\bvtopandtail
and
\bvsides
,are intermediate be-
tween
\bvbox
and
\nobvbox
in the obvious manner.
\linenumberfrequency{
nth
}
\resetbvlinenumber
\setbvlinenums{
first
}{
startat
}
\linenumberfont{
font declaration
}
The command
\linenumberfrequency
controls the numbering of lines in a
boxedverbatim
—every nth line will be numbered. If nth is0 or less, thenno lines are
numbered, if nth is 1 then each line is numbered, and if nth is
n
,where
n
is 2 or more,
then only every
n
th line is numbered. Line numbering is continuous from one instance of
the
boxedverbatim
environment to the next. Outside the environment the line numbers
can be reset at any time by the command
\resetbvlinenumber
.
The
\setbvlinenums
macro can be used to specify that the number of the first line of
the following
boxedverbatim
shallbe first and the first printed number shall be startat.
The
\linenumberfont
declaration sets font declaration as the font for the line num-
bers. The default specification for this is:
\linenumberfont{\footnotesize\rmfamily}
Line numbers are always set at the left of the lines because there is no telling how long a
line might be and it might clash with a line number set at the right.
\bvnumbersinside
\bvnumbersoutside
Line numbers are typeset inside the box after the declaration
\bvnumberinside
and are
typeset outside the box after the declaration
\bvnumbersoutside
.The default is to print
the numbers inside the box.
Verbatim tabbing, but not wrapping, applies to the
boxedverbatim
environment.
15.3.2 New verbatims
The class implementation of verbatims lets you define your own kind of verbatim envi-
ronment. Unfortunately this is not quite as simple as saying
\newverbatim{myverbatim}{...}{...}
as you can for defining normal environments. Instead, the general scheme is
\newenvironment{myverbatim}%
{<non-verbatim stuff> \verbatim <more non-verbatim stuff>}%
{\endverbatim}
In particular, you cannot use either the
\begin
or
\end
macros inside the definition of the
new verbatim environment. For example, the following code will not work
283
Changing pdf to text - Library SDK class:C# PDF Convert to Text SDK: Convert PDF to txt files in C#.net, ASP.NET MVC, WinForms, WPF application
C# PDF to Text (TXT) Converting Library to Convert PDF to Text
www.rasteredge.com
Changing pdf to text - Library SDK class:VB.NET PDF Convert to Text SDK: Convert PDF to txt files in vb.net, ASP.NET MVC, WinForms, WPF application
VB.NET Guide and Sample Codes to Convert PDF to Text in .NET Project
www.rasteredge.com
15. B
OXES
,
VERBATIMS AND FILES
\newenvironment{badverbatim}%
{NBG\begin{verbatim}}{\end{verbatim}}
and this won’t work either
\newenvironment{badverbatim}%
{\begin{env}\verbatim}{\endverbatim\end{env}}
And, as with the standard
verbatim
environment, you cannot use the new one in the
definition of a new command.
For an example of something that does work, this next little piece of typesetting was
done in anew verbatimenvironment I have called
verbexami
,whichstartsand endswith
ahorizontal rule, and it shows the definition of
verbexami
.
The verbexami environment
\newenvironment{verbexami}%
{\par\noindent\hrule The verbexami environment \verbatim}%
{\endverbatim\hrule}
And this is a variation on the theme, with the environment again being enclosed by
horizontal rules.
Verbexamii
Is this fun?
\newenvironment{verbexamii}%
{\vspace{0.5\baselineskip}\hrule \vspace{0.2\baselineskip}
Verbexamii \verbatim \textsc{Is this fun?}}%
{\endverbatim\hrule\vspace{0.3\baselineskip}}
As no doubt you agree, these are not memorable examples of the typesetter’s art but
do indicate that you can define your own verbatim environments and may need to take a
bit of care to get something that passes muster.
Iwill give some more useful examples, but mainly based on environments for writing
verbatim files as I think that these provide a broader scope.
15.3.3 Example: the
lcode
environment
Inthismanual all the example LaTeXcode has beentypeset in the
lcode
environment; this
is a verbatim environment defined especially for the purpose. Below I describe the code
for defining my
lcode
environment, but first here is a simple definition of a verbatim
environment, which I will call
smallverbatim
,that uses the
\small
font instead of the
normalsize font.
\newenvironment{smallverbatim}%
{\setverbatimfont{\normalfont\ttfamily\small}%
\verbatim}%
{\endverbatim}
The
verbatim
environment is implemented as a kind of
trivlist
,and lists usually
have extra vertical space before and after them. For my environment I did not want any
extra spacing so I defined the macro
\@zeroseps
to zero the relevant list spacings. I also
284
Library SDK class:C# PDF Page Rotate Library: rotate PDF page permanently in C#.net
Enable batch changing PDF page orientation without other PDF reader control. Support to overwrite PDF and save rotation changes to original PDF file.
www.rasteredge.com
Library SDK class:VB.NET Word: Word Conversion SDK for Changing Word Document into
VB.NET Word - Convert Word to PDF Using VB. How to Convert Word Document to PDF File in VB.NET Application. Visual C#. VB.NET. Home
www.rasteredge.com
15.4. Files
wanted the code lines to be inset a little, so I defined a new length called
\gparindent
to
use as the indentation.
\makeatletter
\newcommand{\@zeroseps}{\setlength{\topsep}{\z@}%
\setlength{\partopsep}{\z@}%
\setlength{\parskip}{\z@}}
\newlength{\gparindent} \setlength{\gparindent}{\parindent}
\setlength{\gparindent}{0.5\parindent}
% Now, the environment itself
\newenvironment{lcode}{\@zeroseps
\renewcommand{\verbatim@startline}{%
\verbatim@line{\hskip\gparindent}}
\small\setlength{\baselineskip}{\onelineskip}\verbatim}%
{\endverbatim
\vspace{-\baselineskip}%
\noindent
}
\makeatother
Unlessyou are intimately familiar withthe inner workings of the
verbatim
processing
you deserve an explanation of the
lcode
definition.
Extremely roughly, the code for
\verbatim
looks like this:
\def\verbatim{%
\verbatim@font
% for each line, until \end{verbatim}
\verbatim@startline
% collect the characters in \verbatim@line
\verbatim@processline{\the\verbatim@line\par}
% repeat for the next line
}
The code first calls
\verbatim@font
to set the font to be used. Then, for each line it does
the following:
 Calls the macro
\verbatim@startline
to start off the output version of the line.
 Collects all the characters comprising the line as a single token called
\verbatim@line
.
 If the characters are the string ‘
\end{verbatim}
’it finishes the verbatim environ-
ment.
 Otherwise it callsthe macro
\verbatim@processline
whose argument is the char-
acters in the line, treated as a paragraph. It then starts all over again with the next
line.
Iconfigured the
\verbatim@startline
macro to indent the line of text using a hori-
zontal skip of
\gparindent
.The rest of the initialisation code, before calling
\verbatim
to do the real processing, just sets up the vertical spacing.
15.4 F
ILES
LaTeX reads and writes various files as it processes a document. Obviously it reads the
document source file, or files, and it writes the
log
file recording what it has done. It also
reads and writes the
aux
file, and may read and write other files like a
toc
file.
285
Library SDK class:C# PDF Convert to Tiff SDK: Convert PDF to tiff images in C#.net
PDF. Supports tiff compression selection. Supports for changing image size. Also supports convert PDF files to jpg, jpeg images. C#
www.rasteredge.com
Library SDK class:VB.NET PDF File Merge Library: Merge, append PDF files in vb.net
to the target one, this PDF file merge function will put the two target PDF together and save as new PDF, without changing the previous two PDF documents at all
www.rasteredge.com
15. B
OXES
,
VERBATIMS AND FILES
On occasionsit can be useful to get LaTeX to read and/or write other files of your own
choosing. Unfortunately standard LaTeXdoesnot provide any easy method for doing this.
Thememoirclass tries to rectify this.
\jobname
When you run LaTeX on your source file, say
fred.tex
,LaTeX stores the name of this file
(
fred
)in the macro
\jobname
.LaTeX uses this to name the various files that it writesout
—the
dvi
or
pdf
file, the
log
file, the
aux
file, etc.
TeX can read from 16 input streams and can write to 16 output streams. Normally an
input stream is allocated for each kind of file that will be read and an output stream for
each kind of file that will be written. On the input side, then, at least two streams are
allocated, one for the source
tex
file and one for the
aux
file. On the output side again at
least two streams are allocated, one for the
log
file and one for the
aux
file. When
toc
and
other similar files are also part of the LaTeX process you can see that many of the 16 input
and output streams may be allocated before you can get to use one yourself.
\newoutputstream{
stream
}
\newinputstream{
stream
}
The macros
\newoutputstream
and
\newinputstream
respectively create a new output
and input streamcalledstream, where stream should be a string of alphabeticcharacters,
like
myout
or
myin
. The stream names must be unique, you cannot use the same name
for two streams even if one is a input stream and the other is an output stream. If all the
16 streams of the given type have already been allocated TeX will issue a message telling
you about this, of the form:
No room for a new write
% for an output stream
No room for a new read
% for an input stream
The two
\new...stream
commands also provide two empty macros called
\atstreamopen<stream>
and
\atstreamclose<stream>
.If these macrosalready exist
then they are left undisturbed. For example if you do:
\newcommand{\atstreamopenmyout}{...}
\newoutputstream{myout}
\newinputstream{myin}
Then you will find that three new commands have been created like:
\newcommand{\atstreamclosemyout}{}
\newcommand{\atstreamopenmyin}{}
\newcommand{\atstreamclosemyin}{}
You can use
\renewcommand
to change the definitions of these if you wish.
\IfStreamOpen{
stream
}{
true-code
}{
false-code
}
The macro
\IfStreamOpen
checks whether or not the stream stream is open. If it is then
the true-code argument is processed, while when it is not open the false-code argument
is processed.
286
Library SDK class:C# PDF Password Library: add, remove, edit PDF file password in C#
Able to perform PDF file password adding, deleting and changing in Visual Studio .NET project use C# source code in .NET class. Allow
www.rasteredge.com
Library SDK class:VB.NET Image: How to Generate Freehand Annotation Through VB.NET
you to make annotations with graphics and text messages using VB images and documents, such as PDF, TIFF, PNG in VB.NET application without changing the original
www.rasteredge.com
15.4. Files
15.4.1 Writing to a file
One stream may be used for writing to several different files, althoughnot simultaneously.
\openoutputfile{
filename
}{
stream
}
\closeoutputstream{
stream
}
The command
\openoutputfile
opens the file called filename, either creating it if it
does not exist, or emptying it if it already exists. It then attaches the file to the output
stream called stream so that it can be written to, and then finally calls the macro named
\atstreamopen<stream>
.
The
command
\closeoutputstream
firstly
calls
the
macro
named
\atstreamclose<stream>
then closes the output stream stream, and finally detaches
and closes the associated file.
\addtostream{
stream
}{
text
}
The
\addtostream
command writes text to the output stream stream, and hence to
whatever file is currently attached to the stream. The stream must be open. Any com-
mands within the text argument will be processed before being written. To prevent com-
mand expansion, precede the command in question with
\protect
.
Writing verbatim text to a file is treated specially as it is likely to be the most common
usage.
\begin{verbatimoutput}{
file
}
anything
\end{verbatimoutput}
\begin{writeverbatim}{
stream
}
anything
\end{writeverbatim}
The text within a
verbatimoutput
environment is written verbatim to the file file. Al-
ternatively, the contents of the
writeverbatim
environment are written verbatim to the
stream stream.
Specifically,
verbatimoutput
opens the specified file, writes to it, and then closes the
file. This means that if
verbatimoutput
is used more than once to write to a given file,
then only the contents of the last of these outputsis captured inthe file. Onthe other hand,
you can use
writeverbatim
several times to write to the file attached to the stream and,
providing the stream has not been closed in the meantime, all will be captured.
15.4.2 Reading from a file
One stream may be used for reading from several files, although not simultaneously.
\openinputfile{
filename
}{
stream
}
\closeinputstream{
stream
}
The command
\openinputfile
opens the file called filename and attaches it to the in-
put stream called stream so that it can be read from. Finally it calls the macro named
\atstreamopen<stream>
.It is an error if filename can not be found.
The command
\closeinputstream
callsthe macronamed
\atstreamclose<stream>
,
closes the output stream stream, and then detachesand closes the associated file.
\readstream{
stream
}
287
Library SDK class:VB.NET PDF File & Page Process Library SDK for vb.net, ASP.NET
creating, loading, merge and splitting PDF pages and Files, adding a page into PDF document, deleting unnecessary page from PDF file and changing the position
www.rasteredge.com
Library SDK class:VB.NET Image: Easy to Create Ellipse Annotation with VB.NET
tutorial means ellipse-shaped objects with text placed inside annotation to document files, like PDF & Word on your document or image by changing its parameters
www.rasteredge.com
15. B
OXES
,
VERBATIMS AND FILES
The command
\readstream
reads the entire contents of the file currently associated with
the input stream stream. This providesthe same functionality as
\input{
filename
}
.
\readaline{
stream
}
The
\readaline
reads what TeX considers to be one line from the file that is currently
associated with the input stream stream.
Multiple lines can be read by calling
\readaline
multiple times. A warning is issued
if there are no more lines to be read (i.e., the end of the file has been reached).
Just as for writing, reading files verbatim is treated specially.
\verbatiminput{
file
}\verbatiminput*{
file
}
\boxedverbatiminput{
file
}\boxedverbatiminput*{
file
}
\readverbatim{
stream
}\readverbatim*{
stream
}
\readboxedverbatim{
stream
}\readboxedverbatim*{
stream
}
The commands
\verbatiminput
and
\boxedverbatiminput
, and their starred ver-
sions, act like the
verbatim
and
boxedverbatim
environments, except that they get their
text from the file file. It is an error if file cannot be found. Similarly,
\readverbatim
and
\readboxedverbatim
get their text from the file currently attached to the stream
input stream. It is an error if stream is not open for input.
15.4.3 Example: endnotes
In an earier version of the manual, this section contained an example as to how one could make
endnotes. The example is now irrelevant, since memoir contain something similar to end notes
called page notes, see section 12.6 on page 245.
Those interested in the code from the old example, can find it in the manual source (it has just
been commented out).
15.4.4 Example: end floats
There are some documents where all figures are required to be grouped in one place, for
instance at the end of the document or perhaps at the end of each chapter. Grouping at the
end of a document with chapters is harder, so we’ll tackle that one.
The basic idea is to write out verbatim each figure environment and then read them all
back in at the end. We will use a stream, let’s call it
tryout
,and call our file for figures
tryout.fig
.
\newoutputstream{tryout}
\openoutputfile{tryout.fig}{tryout}
If all were simple, in the document we could then just do
\begin{writeverbatim}{tryout}
\begin{figure} ... \end{figure}
\end{writeverbatim}
...
\closeoutputstream{tryout}
\input{tryout.fig}
So, what’s the problem?
By default figure captions are numbered per chapter, and are preceeded by the chapter
number; more precisely, the definition of a figure number is
288
Library SDK class:C# Excel - Excel Page Processing Overview
C#.NET programming. Allow for changing the order of pages in an Excel document in .NET applications using C# language. Enable you
www.rasteredge.com
Library SDK class:C#: How to Edit XDoc.HTML5 Viewer Toolbar Commands
_viewerTopToolbar.removeTab(_tabRedact); _tabSignature.removeCommand(Text); applies equally to changing tabs order var _userCmdDemoPdf = new UserCommand("pdf");
www.rasteredge.com
15.4. Files
\thechapter.\arabic{figure}
If we simply lump all the figures at the end, then they will all be numbered as if they were
in the final chapter. For the sake of argument assume that the last chapter is number 10.
The nth figure will then be numbered 10.n. One thing that we can do rather simply is to
change the definition of the figure by using another counter, let’s call it
pseudo
,instead of
the chapter.
\newcounter{pseudo}
\renewcommand{\thepseudo}{\arabic{pseudo}}
\renewcommand{\thefigure}{\thepseudo.\arabic{figure}}
Now, all we should have to do is arrange that the proper value of
pseudo
is available
before each figure is typeset at the end. The code around the
figure
environments might
then look like this
\addtostream{tryout}{\protect\setcounter{pseudo}{\thechapter}}
\begin{writeverbatim}{tryout}
\begin{figure}...
and a part of the file might then look like
...
\setcounter{pseudo}{4}
\begin{figure}...
The
\protect
before the
\setcounter
command will stop it from expanding before it is
written to the file, while the
\thechapter
command will be expanded to give the actual
number of the current chapter. Thislooksbetter asnow at least the figure will be numbered
4.n instead of 10.n.
There is one last snag — figure numbers are reset at the start of each chapter — but
if we just dump the figures at the end of the document then although the chapter part of
the number will alter appropriately because of the
pseudo
process, the second part of the
number will just increase continuously. It looks as though we should write out a change
to the chapter counter at the start of each chapter. If we do that, then we should be able
to get rid of the
pseudo
counter, which sounds good. But, and this is almost the last but,
what if there are chapters after we have read in the figure file? To cater for this the chapter
number of the last chapter before the file must be saved, and then restored after the figures
have been processed.
Finally, wouldn’t it be much better for the user if everything was wrapped up in an
environment that handled all the messy stuff?
Here is the final code that I am going to produce which, by the way, isdisplayed in the
boxedverbatim
environment with line numbers and the following settings, just in case
there is a page break in the middle of the box.
\nobvbox
\bvperpagetrue
\bvtopofpage{\begin{center}\normalfont%
(Continued from previous page)\end{center}}
\bvendofpage{}
\resetbvlinenumber
\linenumberfrequency{1}
\bvnumbersoutside
\linenumberfont{\footnotesize\rmfamily}
289
15. B
OXES
,
VERBATIMS AND FILES
\begin{boxedverbatim}
...
1
\newoutputstream{tryout}
2
\openoutputfile{\jobname.fig}{tryout}
3
\newcounter{pseudo}
4
\renewcommand{\thefigure}{\thepseudo.\arabic{figure}}
5
\newenvironment{writefigure}{%
6
\ifnum\value{chapter}=\value{pseudo}\else
7
\setcounter{pseudo}{\value{chapter}}
8
\addtostream{tryout}{\protect\stepcounter{chapter}}
9
\addtostream{tryout}{\protect\addtocounter{chapter}{-1}}
10
\addtostream{tryout}{%
11
\protect\setcounter{pseudo}{\thechapter}}
12
\fi
13
\addtostream{tryout}{\protect\begin{figure}}
14
\writeverbatim{tryout}}%
15
{\endwriteverbatim\finishwritefigure}
16
\newcommand{\finishwritefigure}{%
17
\addtostream{tryout}{\protect\end{figure}}}
18
\newcommand{\printfigures}{%
19
\closeoutputstream{tryout}%
20
\input{\jobname.fig}%
21
}
The above code should be either put in the preamble or in a separate package file.
The first four lines of the code perform the initial setup described earlier. Lines 1 and 2
set up for outputting to a file
\jobname.fig
,which iswhere the figures will be collected.
Lines 3 and 4 create the new counter we need and change the construction of the figure
number. The rest of the code definesa new environment
writefigure
which isto be used
instead of the
figure
environment. It writes its content out to the
tryout
stream.
In line 6 a check is made to see if the current values of the
chapter
and
pseudo
coun-
ters are the same; nothing is done if they are. If they are different, it means that this is
the first figure in the chapter and we have to put appropriate information into the figure
file. Line 7 sets the
pseudo
counter to the value of the
chapter
counter (if there is another
writefigure
in the chapter it will then skip over the code in lines 7 to 11). The next lines
put (where N is the number of the current chapter):
\stepcounter{chapter}
\addtocounter{chapter}{-1}
\setcounter{pseudo}{N}
into the figure file. Stepping the chapter number (by one) resets the following figure num-
ber, and then subtracting one from the stepped number returns the chapter number to its
original value. Finally the counter
pseudo
is set to the number of the current chapter.
Line 13 puts
290
15.4. Files
\begin{figure}
into the figure file, and line 14 starts the
writeverbatim
environment.
For the end of the
writefigure
environment (line 15), the
writeverbatim
environ-
ment is ended and after that the
\finishwritefigure
macro is called. This is defined in
lines 16 and 17, and simply writes
\end{figure}
out to the figure file. The
\endwriteverbatim
,and any other kind of
\end...verbatim
,
command is very sensitive to anything that follows it, and in this case did not like to be
immediately followed by an
\addtostream{...}
,but did not mind it being wrapped up
in the
\finishwritefigure
macro.
The
\printfigures
macro defined in the last three lines of the code simply closes the
output stream and then inputs the figures file.
As an example of how this works, if we have the following source code:
\chapter{The fifth chapter}
...
\begin{writefigure}
%% illustration and caption
\end{writefigure}
...
\begin{writefigure}
%% another illustration and caption
\end{writefigure}
then the figure file will contain the following (shown verbatim in the
fboxverbatim
en-
vironment).
\stepcounter{chapter}
\addtocounter{chapter}{-1}
\setcounter{pseudo}{5}
\begin{figure}
%% illustration and caption
\end{figure}
\begin{figure}
%% another illustration and caption
\end{figure}
15.4.5 Example: questions and answers
Text books often have questions at the end of a chapter. Sometimes answers are also pro-
vided at the end of the book, or in a separate teachers guide. During the draft stages of
such a book it isuseful to keep the questions and answerstogether in the source and paper
drafts, only removing or repositioning the answers towards the end of the writing process.
This example provides an outline for meeting these desires. For pedagogical purposes
Iuse a
\label
and
\ref
technique although there are better methods. The example also
showsthat not everything works as expected — it is areasonably accurate rendition of the
process that I actually went through in designing it.
First we need a counter for the questions and we’ll use an environment for questions
as these may be of any complexity. The environment takes one argument — a unique key
to be used in a
\label
.
291
15. B
OXES
,
VERBATIMS AND FILES
\newcounter{question} \setcounter{question}{0}
\renewcommand{\thequestion}{\arabic{question}}
\newenvironment{question}[1]%
{\refstepcounter{question}
\par\noindent\textbf{Question \thequestion:}\label{#1}}%
{\par}
Ihave used
\refstepcounter
to increment the counter so that the
\label
will refer to
it, and not some external counter.
We will use a file, called
\jobname.ans
to collect the answers and this will be written
to by a stream. There is also a convenience macro,
\printanswers
,for the user to call to
print the answers.
\newoutputstream{ansout}
Amatching environment for answers is required. The argument to the environment is
the key of the question.
Indraftmode it is simple, just typeset the answer and no need to bother with any file
printing (remember that
\ifdraftdoc
is
true
for adraftmode document).
\ifdraftdoc
% when in draft mode
\newenvironment{answer}[1]%
{\par\noindent\textbf{Answer \ref{#1}:}}%
{\par}
\newcommand{\printanswers}{}
\else
% when not in draft mode
Infinalmode the
answer
environment must write its contents verbatim to the
ans
file
for printing by
\printanswers
.Dealing with these in reverse order, this is the definition
of
\printanswer
when not indraftmode.
\newcommand{\printanswers}{%
\closeoutputstream{ansout}
\input{\jobname.ans}}
Now for the tricky bit, the
answer
environment. First define an environment that
makessure our output streamisopen, and whichthen writesthe answer title to the stream.
\newenvironment{@nswer}[1]{\@bsphack
\IfStreamOpen{ansout}{}{%
\openoutputfile{\jobname.ans}{ansout}%
}%
\addtostream{ansout}{\par\noindent\textbf{Answer \ref{#1}:}}%
}{\@esphack}
The macros
\@bsphack
and
\@esphack
are LaTeX kernel macrosthat will gobble extrane-
ous spaces around the environment. In other words, this environment will take no space
in the typeset result. The
\IfStreamOpen
macro is used to test whether or not the stream
is open, and if it isn’t then it opens it. The answer title is then written out to the stream.
Now we can define the
answer
environment so that its contents get written out verbatim.
\newenvironment{answer}[1]%
{\@bsphack\@nswer{#1}\writeverbatim{ansout}}%
292
Documents you may be interested
Documents you may be interested