how to download pdf file from folder in asp.net c# : Delete bookmarks pdf SDK control service wpf azure winforms dnn e12-a040-part1803

EÖtupon Te˜uqoc No. 11/12 — >AprÐlioc 2004
23
On using H
E
V
E
A, a fast L
A
T
E
Xto
html translator
Luc Maranget
1. Introduction
H
E
V
E
Ais a LAT
E
Xto html translator. This article mostly intends to describe
how to use H
E
V
E
A in practice. As everyone who actually tried to translate a
reasonably complex LAT
E
X document to html knows, such a task is seldom
automatic. A successful translation often requires to configure the translator
or to instruct it about particular LAT
E
Xconstructs.
Section 2 explains my views on the difficulty to translate LAT
E
Xinto html
and the basic principles of H
E
V
E
Adesign. The rest of the paper is devoted to
describing the translation of various documents, including the quite involved
task of altering a package.
H
E
V
E
Ais available at http://pauillac.inria.fr/~maranget/hevea/.
2. Dream usage
Most users who discover a LAT
E
Xto html translator such as H
E
V
E
Ahave
the following expectation : getting a html-version of some document doc.tex,
should be as simple as typing “hevea doc.tex”, provided “latex doc.tex”
already works. And indeed, much of the work invested in the development
of H
E
V
E
Aaim at fulfilling this expectation. For instance, the design of H
E
V
E
A
is much inspired by the design of L
A
T
E
X and, more anecdotally, the hevea
command acts much like the latex as regards file searching or the usage of
auxiliary files.
However, H
E
V
E
Ais not a clone of LAT
E
X targeted to output html and we
now explain why.
2.1. What is LAT
E
X?
There is no such thing as a definition of L
A
T
E
X, there is no even such a
thing as a reference implementation of L
A
T
E
X. Nevertheless there exists a latex
Delete bookmarks pdf - add, remove, update PDF bookmarks in C#.net, ASP.NET, MVC, Ajax, WinForms, WPF
Empower Your C# Project with Rapid PDF Internal Navigation Via Bookmark and Outline
creating bookmarks pdf files; how to create bookmarks in pdf file
Delete bookmarks pdf - VB.NET PDF bookmark library: add, remove, update PDF bookmarks in vb.net, ASP.NET, MVC, Ajax, WinForms, WPF
Empower Your VB.NET Project with Rapid PDF Internal Navigation Via Bookmark and Outline
create pdf bookmarks from word; pdf reader with bookmarks
24
Luc Maranget
program, but this program does not define LAT
E
X, it processes T
E
X, with ad-
ditional constructs. Hence, full compatibility at the reference implementation
level with LAT
E
Xmeans producing a clone of tex, or adapting tex so that it
produces html (the latter approach is the one of [1]).
Furthermore, on the one hand, L
A
T
E
Xcan be viewed as a mostly specifying
language, telling more about the structure of a document, than about how it
should be printed on sheets of paper. On the other hand, html is also a mostly
specification language, also telling more about the structure of a document,
than about how it should be displayed on a screen. As a matter of fact, the
viewer’s browser actually takes part to the formatting of the document. The
browser performs the low-level part of the job.
Note that viewing both LAT
E
X and html as defining the structure of a
document is wrong in my opinion. Authors can legitimately claim some con-
trol on the final aspect of their work, either printed or displayed, how much
control is debatable. I would rather view both languages as high-level specifica-
tion of how the final document should be rendered, which of course meets the
document “structure”. High-level formatting means being aware of the final
medium, while ignoring the peculiarities of various medium implementations.
Aconstruct to format a body of text using two columns is an example of such a
high-level specification. Numerous mandatory page break (in LAT
E
X) or lengths
expressed in centimeters (in html) are counter-examples.
Provided that we accept LAT
E
X and html as being mostly specification
languages implementing a LAT
E
X to html translator is by far less involved
than reimplementing tex. For instance, while coping with (ordinary) tables
and arrays, any LAT
E
Xto html translator does little else than translating one
specification into another, and this is quite easy. The same applies to most
LAT
E
X environments that naturally translate into html block level elements,
to L
A
T
E
Xsectioning commands that naturally translate into H elements, etc.
Additionally, we trade T
E
Xexotic lexing conventions for more simple ones and
this is not a small benefit.
To conclude, we intentionally give up the idea of handling the full T
E
X
language and, instead, confine our attention to the LAT
E
X subset. We shall
soon see how we define this subset.
2.2. Different media
Paper and web pages are different. None of the media is more powerful than
the other, they are just different things.
The weaknesses of web-page formatting are met while generating html:
html is not powerful enough to render some L
A
T
E
Xconstructs. Those limita-
VB.NET PDF File Compress Library: Compress reduce PDF size in vb.
But it's too complicated to implement this work. Delete unimportant contents: Bookmarks. VB.NET Demo Code to Optimize An Exist PDF File in Visual C#.NET Project.
how to bookmark a pdf file; create bookmark pdf
C# PDF File Split Library: Split, seperate PDF into multiple files
Split PDF file by top level bookmarks. The following C# codes explain how to split a PDF file into multiple ones by PDF bookmarks or outlines.
add bookmark pdf file; how to add bookmarks to pdf document
On using H
E
V
E
A
25
tions sometimes are arbitrary. For instance, we can render ordinary superscript-
ing such as $x^2$ (x
2
) by <I>x</I><SUP>2</SUP>. But we cannot properly
render limit-like superscripts or “stacked” symbols in the middle of a line —
consider $\stackrel{\star}{\rightarrow}$(
→). By contrast H
E
V
E
Ahandles
such “stacked” symbols in displays, see Section 4.2.
This limitation of inline superscripts in html is particularly annoying in
the case of vectors ($\vec{u}$, u). There is no universally acceptable way to
translate the sentence “Let u be a vector” into html. Instead of choosing a poor
rendering of inline vectors (and other math accents such as \hat, \overline
etc.), H
E
V
E
Adoes not even attempt to translate them. Instead, it issues a warn-
ing. Then, users can choose then own construct to replace vectors
1
.
However, web pages have their own strengths, and hypertext links certainly
are amongst them, But there are others, for instance, color changes are more
acceptable on screen than on paper. Hence, for a particular document it may
be acceptable to translate vectors by color changes.
The example of vectors shows that there cannot be a complete LAT
E
X to
html translator. Or, if there is one, it chooses some rendering of a problematic
construct, where users would have preferred another.
2.3. Guidelines in developing H
E
V
E
A
By the previous discussion, a ”provably” compatible L
A
T
E
Xto html trans-
lator is a reimplementation of tex. Moreover, such a compatible translator may
not exist and not be what we want. . . Of course, compatibility is not be be ne-
glected but focusing on it is not the most productive attitude. While developing
H
E
V
E
Awe focused on the following points
1. From the beginning, we have done our best effort to implement accept-
able practice in LAT
E
X. We define such a practice by a liberal reading of
Leslie Lamport’s’ Blue book [6], enlightened by the LAT
E
Xcompanion [2].
Those books certainly have great impact on users practice. Moreover, the
latter intend to promote a standard practice in writing LAT
E
X, pointing
out packages whose commands have a clean L
A
T
E
Xinterface and are valid
substitute for T
E
X-isms, as the calc package for instance. However imple-
menting T
E
X-isms is rewarding, and we indulge in it from time to time,
without granting full T
E
Xcompatibility.
1
In the case of vectors a suggestion is made: loading the mathaccent package, which pro-
vides a default, quite unsatisfactory, rendering of vectors (u) by superscripted arrows (u).
C# PDF File Compress Library: Compress reduce PDF size in C#.net
But it's too complicated to implement this work. Delete unimportant contents: Bookmarks. Comments, forms and multimedia. C#.NET DLLs: Compress PDF Document.
how to bookmark a pdf document; create pdf bookmark
VB.NET PDF File Split Library: Split, seperate PDF into multiple
Demo Code in VB.NET. The following VB.NET codes explain how to split a PDF file into multiple ones by PDF bookmarks or outlines.
bookmarks pdf; how to bookmark a pdf file in acrobat
26
Luc Maranget
2. More recently, implementing packages became the privileged direction
for enlarging the scope of H
E
V
E
A, as a satisfactory effort against benefit
trade-off .
3. H
E
V
E
Aprovides some constructs to control browser-like display. The ac-
ceptability of those by latex is a minor issue. Here, we may be wrong,
given the emergence of pdf which exhibits hypertext capabilities.
4. Overall, we have considered compatibility at a higher abstraction level.
The commands of L
A
T
E
Xmake it a highly configurable tool, we have in-
sisted on giving users ways to configure hevea by writing code that tastes
like LAT
E
X. Hence, implementing LAT
E
Xcommands and environments, and
most of T
E
Xmacros, in a faithful and predictable manner is one of our
major design choices.
3. H
E
V
E
Ain practice
The rest of this paper describes the production of html versions of docu-
ments written independently by 13 authors (including me).
The documents describe programming projects, they are written in French
and they size up from 2 to 9 pages. Authors provided one LAT
E
Xsource file and
companion files, such as Postscript images or packages believed to be “non-
standard”. In practice only one author shipped an obsolete version of the al-
gorithm package. They were required to do so, since the documents were to be
gathered into a booklet.
Authors are computer scientists, they routinely use L
A
T
E
X. However they
work in different areas and obviously have different habits. For instance, two
authors gave document in old L
A
T
E
X (or 2.09) style, the other authors use
LAT
E
X2
ε
.
Out of these 13 documents, three documents translated without any prob-
lem. However, problems with the remaining 10 documents were minor, and
were solved in a few minutes and (except in one case) without altering the au-
thors source. As a matter of fact, all documents load a specific projetX package,
mostly intended to define page size. Definitions written to alter or complement
the behaviour of H
E
V
E
Acan be regrouped in a projetX.hva file, which will be
loaded by hevea, where latex loads the projetX.sty file. Those definition are
written in the language understood by H
E
V
E
A, which is, well, a dialect of L
A
T
E
X.
At the end of the translation process, the projetX.hva file was made of 41 line
or 25 definitions.
.NET PDF SDK - Description of All PDF Processing Control Feastures
Full page navigation, zooming & rotation; Outlines, bookmarks, & thumbnail display; a blank page or multiple pages to PDF; Allow to delete any current PDF
add bookmarks to pdf file; pdf bookmark
C# PDF Convert to HTML SDK: Convert PDF to html files in C#.net
by C#.NET PDF to HTML converter toolkit SDK, preserves all the original anchors, links, bookmarks and font style that are included in target PDF document file.
add bookmarks to pdf; bookmarks in pdf reader
On using H
E
V
E
A
27
4. Warnings
It is worth noticing that all problems were unveiled thanks to H
E
V
E
Awarn-
ings. Warnings include a source line number which enables to spot quickly the
problematic construct. This method is by far more productive than spotting
problems from visual examination of browser display. The most common warn-
ing is the “Command not found” warning, H
E
V
E
Acannot possess its own version
of every existing LAT
E
Xcommand. They are various reasons :
1. Some constructs may not posses any clear equivalent in html. Then the
warning draw users attention onto the problem and users are thus invited
to choose a rendering.
2. Some command just are T
E
X. Such warnings sometimes reveal a difficult
problem. Fortunately, most L
A
T
E
Xusers use true T
E
Xcode in very limited
areas.
3. Some commands aredefined in packages which heveadoes not implement.
4. Some commands may have been forgotten.
There are others, more specific, warnings. For instance, H
E
V
E
Acannot imple-
ment negative lengths and thus warns users about them.
4.1. Simple “Command not found” warning
As an example of minor problematic rendering, one author used the sym-
bol \odot (⊙). But H
E
V
E
Adoes not provides command \odot. In fact, H
E
V
E
A
provides far less symbols than LAT
E
X, since it knows about two character sets
only : iso-latin1 and a set of about 256 mathematical symbols
2
known as “the
symbol font”. An easy solution is to replace ⊙ by a visually similar symbol,
which hevea can produce. Here, I chose ⊗. Then it suffices to insert the fol-
lowing definition in the projetX.hva file :
\newcommand{\odot}{\otimes}
Other examples of similar harmless unknown commands, are \varepsilon (ε),
defined as \epsilon (ǫ) and \ell (ℓ) defined as the letter “l”.
2
According to html 4.0 definition [7] more symbols are possible, and they can be specified
without the dubious <FACE=symbol>. ..</FONT> element. However not all browsers are able
to display the whole variety of symbols defined as “html entities”
XDoc.Word for .NET, Advanced .NET Word Processing Features
page navigation, zooming & rotation; Outlines, bookmarks, & thumbnail Convert Word to PDF; Convert Word to HTML5; multiple page to Word document; Delete a single
how to add a bookmark in pdf; adding bookmarks in pdf
VB.NET PDF: Basic SDK Concept of XDoc.PDF
you may easily create, load, combine, and split PDF file(s), and add, create, insert, delete, re-order This class describes bookmarks in a PDF document.
copy pdf bookmarks to another pdf; export bookmarks from pdf to excel
28
Luc Maranget
As an example of chunks of T
E
X code inside a document, one document
defines fonts the T
E
Xway in its preamble. This can be solved using the image
facility (see Section 5 below).
Case (3) (non-existent package) occurred in two occasions. We examine
the first (and easiest) case. One document loads the fguill package. This small
package defines two commands \guillemotleft and \guillemotright( and
). A clean solution is to implement the fguill package in H
E
V
E
A. That is, we
need to create a fguill.hva file that defines both commands and to put this
file somewhere in hevea search path, since hevea reacts to \usepackage{pgk}
by searching the file pgk.hva. Here, given our french computer, the fguill.hva
file simply contains:
\newcommand{\guillemotleft}{{}
\newcommand{\guillemotright}{}}
Of course, this solution relies on iso-latin1 being privileged both as input en-
coding and output encoding.
As an example some command that H
E
V
E
A should have known, another
document uses the \to command (→), which I did not know about. Appar-
ently, this command is defined in the T
E
X book [5] as an equivalent of the
\rightarrow command. H
E
V
E
Ashould probably be aware of this. Here writing
\let\to\righarrow in the projetX.hva file solves the problem. More, this
definition is now included into H
E
V
E
Amain configuration file.
4.2. Mathematics
The documents include some mathematics. In sharp contrast with T
E
X,
html was not designed for typesetting mathematics and one cannot expect a
satisfactory rendering of every formula. However, H
E
V
E
Ausually does a decent
job.
One author is a researcher in complexity theory and its For instance one of
the documents is written by a researcher in complexity theory and he is not
frightened by mathematics. His document includes various formulas, amongst
which we choose the following two :
\[
V=\int_0^{\infty}\frac{\sqrt x\,\ln^5x}{(1-x)^5}\,{\rm d}x
\]
and
On using H
E
V
E
A
29
\[
\alpha=\sqrt[3]{\frac12-\frac{5\sqrt3}{18}}.
\]
LAT
E
Xtypesets these formulas as follows:
V =
0
xln
5
x
(1 − x)5
dx
α=
3
1
2
5
3
18
.
Afirst run of H
E
V
E
Aproduces a warning: “Command not found: \sqrt”. And
indeed, H
E
V
E
Ahas no \sqrt command, since “big square roots” are difficult to
render in html
3
.The warning cannot be ignored since there is currently no
rendering of roots:
The first formula is simply wrong. Additionally, the second formula is rather
strange, since the optional argument [3] appears in output.
We now attempt a definition of roots as fractional exponents, by adding a
definition into the projetX.hva file.
\newcommand{\sqrt}[2][2]{\left(#2\right)^{1/#1}}
H
E
V
E
Anow has a definition for \sqrt, as a command that takes two arguments,
the first of which being optional with default value “2”. That is, we adopt the
same interface as the \sqrt command of L
A
T
E
X. The command body includes
constructs that are meaningfully to H
E
V
E
A: big delimiters and exponents. Any
person with some knowledge of L
A
T
E
Xcan design such a replacement definition.
Rendering is now understandable, if not satisfactory
4
.
3
However the LAT
E
Xto html translator TTH [3] handles root signs, which H
E
V
E
A does
not.
4
Ironically, one of the motivations of T
E
X design was D.E. Knuth frustration with roots
being replaced by fractional exponents by pre-T
E
Xtypesetting systems.
30
Luc Maranget
Explaining H
E
V
E
Ainternals in detail would be out of scope, telling a little
about them does not harm. To typeset mathematics, H
E
V
E
Amostly relies on
two techniques: symbols are build from the limited set of glyphs offered by the
symbol font, and nested html tables are extensively used to express formula
structure. Here, the vertical parenthesis are made of two vertical stacks of five
glyphs, and the following picture illustrate how tables are organized.
Although H
E
V
E
Asuccessfully handles the previous formulas, it cannot trans-
late any T
E
Xmathematics. Apart from missing symbols, H
E
V
E
Asuffers from
two, more severe, limitations:
— Inline (as opposed to display) mathematics are a real problem, since
inserting a TABLE element necessarily produces a line break in dis-
played html. Fortunately, complicated inline mathematics are quite rare,
and authors generally have complicated formulas displayed (i.e. they use
$$ or \[. . . \]).
— When it comes to typesetting mathematics T
E
Xis really very powerful.
H
E
V
E
A is by nature less sophisticated, at some point it just gives up.
For instance, T
E
Xbox dimensions are characterized by three quantities
(height, width and depth or baseline vertical position). In the context of
formulas, the H
E
V
E
Aanalogs to T
E
Xboxes are html tables and H
E
V
E
A
only handles one approximative quantity: the number of rows in a table.
This means that H
E
V
E
Ais not the right tool to process mathematical texts
—but html neither is the right tool to display them. In case a document
includes complicated formulas, they should be translated into images, as
explained in the next section.
On using H
E
V
E
A
31
5. The image file feature
Sometimes, H
E
V
E
Ajust cannot process its input, but it remains acceptable
to have part of the input processed by LAT
E
Xand then to replace such input in
the
HTML
output by included gif (or PNG) images.
H
E
V
E
Aprovides some support for doing this. Any text enclosed in the special
toimage environment is echoed into the image file (which is a LAT
E
Xsource file).
Additionally he special command \imageflush outputs a strict page break into
the image file, while it outputs the appropriate IMG element into the generated
html file. Some constructs of the source document are echoed to the image file
without user intervention. This includes the \documentclass command and
the \usepackage commands with all their arguments. Then, a later run of the
companion imagen script produces one image per page in the image file. The
imagen script first calls latex on the image file, and then a variety of image
processing tools.
5.1. Fancy symbols as images
H
E
V
E
Aimage feature can be used to replace problematic symbols (which we
would like not to change) by small images.
For instance, one author loads the amssymb package and then defines com-
mand \Z as :
\newcommand{\Z}{\mathbb{Z}}
The symbol Z (\Z) stands for the set of relative integers, following french
conventions. As students are familiar with this symbol, I decided not to change
it. Notice that the image file includes \usepackage{amssymb} and thus, the
command \mathbb can be used inside in it. Hence, a solution is to define \Z in
the projetX.hva file.
\newcommand{\Z}{\begin{toimage}$\mathbb{Z}$\end{toimage}\imageflush
After a run of hevea on this documemt transpos.tex, the image file
transpos.image.tex is as follows :
\documentclass{article}
\usepackage{projetX}
\usepackage{amssymb}
\pagestyle{empty}
32
Luc Maranget
\thispagestyle{empty}
\begin{document}
$\mathbb{Z}$
\clearpage% page: 0
$\mathbb{Z}$
\clearpage% page: 1
\end{document}
Notice that there are two invocations of \Z in this document. In HTML output,
the two occurrences of \Z are replaced by <IMG SRC="transpos001.gif"> and
<IMG SRC="transpos002.gif">. The images themselves are produced by issu-
ing the command imagen transpos. However, when given the command-line
option -fix, the hevea command will call imagen automatically.
The author’s source can be left as it is. This results from H
E
V
E
Asemantics
for \newcommand : if the defined command already exists, then hevea does not
fail, as latex would. Instead, hevea issues a warning and does nothing. Here,
the hevea command loads the projetX.hva file before processing the author’s
definition. Hence, hevea definition for \Z is the one from the projetX.hva file.
The \Z command story does not stop here, another author defined it for the
same purpose, but in a different way, by short-circuiting LAT
E
Xfont selection
scheme.
\font\twelvesym=msbm10 at 12pt\font\tensym=msbm10\font\sevensym=msbm7
\font\fivesym=msbm5
\newfam\symfam
\textfont\symfam=\tensym\scriptfont\symfam=\sevensym\scriptscriptfont
\symfam=\fivesym
\def\sym{\fam\symfam\tensym}
\def\Z{{\sym Z}}
The solution is exactly the same as in the previous case: send all that source
into the image file. But here we cannot avoid altering author’s document. Fur-
thermore, the document should remain processable by LAT
E
X. One solution is
bracket previous definitions into special comments:
%BEGIN IMAGE
\font\twelvesym=msbm10 at 12pt\font\tensym=msbm10\font\sevensym=msbm7
...
\def\Z{{\sym Z}}
%END IMAGE
Documents you may be interested
Documents you may be interested