1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
|
//========================================================================
//
// HTMLGen.h
//
// Copyright 2010-2021 Glyph & Cog, LLC
//
//========================================================================
#ifndef HTMLGEN_H
#define HTMLGEN_H
#include <aconf.h>
class GString;
class PDFDoc;
class TextOutputDev;
class TextFontInfo;
class SplashOutputDev;
class HTMLGenFontDefn;
//------------------------------------------------------------------------
class HTMLGen {
public:
HTMLGen(double backgroundResolutionA, GBool tableMode);
~HTMLGen();
GBool isOk() { return ok; }
double getBackgroundResolution() { return backgroundResolution; }
void setBackgroundResolution(double backgroundResolutionA)
{ backgroundResolution = backgroundResolutionA; }
double getZoom() { return zoom; }
void setZoom(double zoomA) { zoom = zoomA; }
void setVStretch(double vStretchA) { vStretch = vStretchA; }
GBool getDrawInvisibleText() { return drawInvisibleText; }
void setDrawInvisibleText(GBool drawInvisibleTextA)
{ drawInvisibleText = drawInvisibleTextA; }
GBool getAllTextInvisible() { return allTextInvisible; }
void setAllTextInvisible(GBool allTextInvisibleA)
{ allTextInvisible = allTextInvisibleA; }
void setExtractFontFiles(GBool extractFontFilesA)
{ extractFontFiles = extractFontFilesA; }
void setConvertFormFields(GBool convertFormFieldsA)
{ convertFormFields = convertFormFieldsA; }
void setEmbedBackgroundImage(GBool embedBackgroundImageA)
{ embedBackgroundImage = embedBackgroundImageA; }
void setEmbedFonts(GBool embedFontsA)
{ embedFonts = embedFontsA; }
void setIncludeMetadata(GBool includeMetadataA)
{ includeMetadata = includeMetadataA; }
void startDoc(PDFDoc *docA);
int convertPage(int pg, const char *pngURL, const char *htmlDir,
int (*writeHTML)(void *stream, const char *data, int size),
void *htmlStream,
int (*writePNG)(void *stream, const char *data, int size),
void *pngStream);
// Get the counter values.
int getNumVisibleChars() { return nVisibleChars; }
int getNumInvisibleChars() { return nInvisibleChars; }
int getNumRemovedDupChars() { return nRemovedDupChars; }
private:
int findDirSpan(GList *words, int firstWordIdx, int primaryDir,
int *spanDir);
void appendSpans(GList *words, int firstWordIdx, int lastWordIdx,
int primaryDir, int spanDir,
double base, GBool dropCapLine, GString *s);
void appendUTF8(Unicode u, GString *s);
HTMLGenFontDefn *getFontDefn(TextFontInfo *font, const char *htmlDir);
HTMLGenFontDefn *getFontFile(TextFontInfo *font, const char *htmlDir);
HTMLGenFontDefn *getSubstituteFont(TextFontInfo *font);
void getFontDetails(TextFontInfo *font, const char **family,
const char **weight, const char **style,
double *scale);
void genDocMetadata(int (*writeHTML)(void *stream,
const char *data, int size),
void *htmlStream);
void genDocMetadataItem(int (*writeHTML)(void *stream,
const char *data, int size),
void *htmlStream,
Dict *infoDict, const char *key);
double backgroundResolution;
double zoom;
double vStretch;
GBool drawInvisibleText;
GBool allTextInvisible;
GBool extractFontFiles;
GBool convertFormFields;
GBool embedBackgroundImage;
GBool embedFonts;
GBool includeMetadata;
PDFDoc *doc;
TextOutputDev *textOut;
SplashOutputDev *splashOut;
GList *fonts; // [TextFontInfo]
double *fontScales;
GList *fontDefns; // [HTMLGenFontDefn]
int nextFontFaceIdx;
TextFontInfo *formFieldFont;
GList *formFieldInfo; // [HTMLGenFormFieldInfo]
int nextFieldID;
int nVisibleChars; // number of visible chars on the page
int nInvisibleChars; // number of invisible chars on the page
int nRemovedDupChars; // number of duplicate chars removed
GBool ok;
};
#endif
|