git.asbjorn.biz
/
swftools.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
added --fontdir option.
[swftools.git]
/
pdf2swf
/
SWFOutputDev.cc
diff --git
a/pdf2swf/SWFOutputDev.cc
b/pdf2swf/SWFOutputDev.cc
index
41eda26
..
326f98b
100644
(file)
--- a/
pdf2swf/SWFOutputDev.cc
+++ b/
pdf2swf/SWFOutputDev.cc
@@
-23,6
+23,7
@@
#include <string.h>
#include <unistd.h>
//xpdf header files
#include <string.h>
#include <unistd.h>
//xpdf header files
+#include "gfile.h"
#include "GString.h"
#include "gmem.h"
#include "Object.h"
#include "GString.h"
#include "gmem.h"
#include "Object.h"
@@
-342,11
+343,11
@@
void dumpFontInfo(char*loglevel, GfxFont*font)
char*name;
gstr = font->getName();
Ref r=font->getID();
char*name;
gstr = font->getName();
Ref r=font->getID();
- logf("%s=========== %s (ID:%d,%d) ==========\n", loglevel, gstr?gstr->getCString():"(unknown font)", r.num,r.gen);
+ logf("%s=========== %s (ID:%d,%d) ==========\n", loglevel, gstr?FIXNULL(gstr->getCString()):"(unknown font)", r.num,r.gen);
gstr = font->getTag();
if(gstr)
gstr = font->getTag();
if(gstr)
- logf("%sTag: %s\n", loglevel, gstr->getCString());
+ logf("%sTag: %s\n", loglevel, FIXNULL(gstr->getCString()));
if(font->is16Bit()) logf("%sis 16 bit\n", loglevel);
GfxFontType type=font->getType();
if(font->is16Bit()) logf("%sis 16 bit\n", loglevel);
GfxFontType type=font->getType();
@@
-375,11
+376,11
@@
void dumpFontInfo(char*loglevel, GfxFont*font)
GBool embedded = font->getEmbeddedFontID(&embRef);
name = font->getEmbeddedFontName();
if(embedded)
GBool embedded = font->getEmbeddedFontID(&embRef);
name = font->getEmbeddedFontName();
if(embedded)
- logf("%sEmbedded name: %s id: %d\n",loglevel, name, embRef.num);
+ logf("%sEmbedded name: %s id: %d\n",loglevel, FIXNULL(name), embRef.num);
gstr = font->getExtFontFile();
if(gstr)
gstr = font->getExtFontFile();
if(gstr)
- logf("%sExternal Font file: %s\n", loglevel, gstr->getCString());
+ logf("%sExternal Font file: %s\n", loglevel, FIXNULL(gstr->getCString()));
// Get font descriptor flags.
if(font->isFixedWidth()) logf("%sis fixed width\n", loglevel);
// Get font descriptor flags.
if(font->isFixedWidth()) logf("%sis fixed width\n", loglevel);
@@
-408,7
+409,7
@@
T1_OUTLINE* gfxPath_to_T1_OUTLINE(GfxState*state, GfxPath*path)
{
int num = path->getNumSubpaths();
int s,t;
{
int num = path->getNumSubpaths();
int s,t;
- bezierpathsegment*start,*last;
+ bezierpathsegment*start,*last=0;
bezierpathsegment*outline = start = new bezierpathsegment();
int cpos = 0;
double lastx=0,lasty=0;
bezierpathsegment*outline = start = new bezierpathsegment();
int cpos = 0;
double lastx=0,lasty=0;
@@
-547,7
+548,7
@@
void SWFOutputDev::beginString(GfxState *state, GString *s)
state->getFontTransMat(&m11, &m12, &m21, &m22);
m11 *= state->getHorizScaling();
m21 *= state->getHorizScaling();
state->getFontTransMat(&m11, &m12, &m21, &m22);
m11 *= state->getHorizScaling();
m21 *= state->getHorizScaling();
- swfoutput_setfontmatrix(&output, m11, -m12, m21, -m22);
+ swfoutput_setfontmatrix(&output, m11, -m21, m12, -m22);
}
int charcounter = 0;
}
int charcounter = 0;
@@
-630,6
+631,7
@@
void SWFOutputDev::drawLink(Link *link, Catalog *catalog)
char*s = "-?-";
char*type = "-?-";
char*url = 0;
char*s = "-?-";
char*type = "-?-";
char*url = 0;
+ char*named = 0;
int page = -1;
switch(action->getKind())
{
int page = -1;
switch(action->getKind())
{
@@
-665,6
+667,7
@@
void SWFOutputDev::drawLink(Link *link, Catalog *catalog)
GString*name = l->getName();
if(name) {
s = name->lowerCase()->getCString();
GString*name = l->getName();
if(name) {
s = name->lowerCase()->getCString();
+ named = name->getCString();
if(strstr(s, "next") || strstr(s, "forward"))
{
page = currentpage + 1;
if(strstr(s, "next") || strstr(s, "forward"))
{
page = currentpage + 1;
@@
-731,7
+734,11
@@
void SWFOutputDev::drawLink(Link *link, Catalog *catalog)
{
swfoutput_linktourl(&output, url, points);
}
{
swfoutput_linktourl(&output, url, points);
}
- logf("<verbose> \"%s\" link to \"%s\" (%d)\n", type, s, page);
+ else if(named)
+ {
+ swfoutput_namedlink(&output, named, points);
+ }
+ logf("<verbose> \"%s\" link to \"%s\" (%d)\n", type, FIXNULL(s), page);
}
}
}
}
@@
-860,14
+867,14
@@
char*SWFOutputDev::writeEmbeddedFontToFile(GfxFont*font)
ttfinfo = 1;
}
char name2[80];
ttfinfo = 1;
}
char name2[80];
- int r1 = lrand48();
- int r2 = lrand48();
- sprintf(name2,"%04x%04x",r1,r2);
+ char*tmp;
+ tmp = strdup(mktmpname((char*)name2));
+ sprintf(name2, "%s", tmp);
char*a[] = {"./ttf2pt1","-pttf","-b", tmpFileName, name2};
logf("<verbose> Invoking ttf2pt1...");
ttf2pt1_main(5,a);
unlink(tmpFileName);
char*a[] = {"./ttf2pt1","-pttf","-b", tmpFileName, name2};
logf("<verbose> Invoking ttf2pt1...");
ttf2pt1_main(5,a);
unlink(tmpFileName);
- sprintf(name2,"%04x%04x.pfb",r1,r2);
+ sprintf(name2,"%s.pfb",tmp);
tmpFileName = strdup(name2);
}
tmpFileName = strdup(name2);
}
@@
-976,7
+983,7
@@
char* SWFOutputDev::substituteFont(GfxFont*gfxFont, char* oldname)
if(oldname) {
substitutesource[substitutepos] = oldname;
substitutetarget[substitutepos] = fontname;
if(oldname) {
substitutesource[substitutepos] = oldname;
substitutetarget[substitutepos] = fontname;
- logf("<verbose> substituting %s -> %s", oldname, fontname);
+ logf("<verbose> substituting %s -> %s", FIXNULL(oldname), FIXNULL(fontname));
substitutepos ++;
}
return fontname;
substitutepos ++;
}
return fontname;
@@
-1093,7
+1100,7
@@
void SWFOutputDev::updateFont(GfxState *state)
return;
}
return;
}
- logf("<verbose> Creating new SWF font: t1id: %d, filename: %s name:%s", this->t1id, fileName, fontname);
+ logf("<verbose> Creating new SWF font: t1id: %d, filename: %s name:%s", this->t1id, FIXNULL(fileName), FIXNULL(fontname));
swfoutput_setfont(&output, fontname, this->t1id, fileName);
if(fileName)
unlinkfont(fileName);
swfoutput_setfont(&output, fontname, this->t1id, fileName);
if(fileName)
unlinkfont(fileName);
@@
-1138,7
+1145,7
@@
void SWFOutputDev::drawGeneralImage(GfxState *state, Object *ref, Stream *str,
if (str->getKind() == strDCT &&
(colorMap->getNumPixelComps() == 3 || !mask) )
{
if (str->getKind() == strDCT &&
(colorMap->getNumPixelComps() == 3 || !mask) )
{
- sprintf(fileName, "/tmp/tmp%08x.jpg",lrand48());
+ sprintf(fileName, "%s.jpg",mktmpname(0));
logf("<verbose> Found jpeg. Temporary storage is %s", fileName);
if(!jpeginfo)
{
logf("<verbose> Found jpeg. Temporary storage is %s", fileName);
if(!jpeginfo)
{
@@
-1195,7
+1202,7
@@
void SWFOutputDev::drawGeneralImage(GfxState *state, Object *ref, Stream *str,
if(mask) {
imgStr = new ImageStream(str, width, 1, 1);
imgStr->reset();
if(mask) {
imgStr = new ImageStream(str, width, 1, 1);
imgStr->reset();
- return;
+ //return;
int yes=0,i,j;
unsigned char buf[8];
int xid = 0;
int yes=0,i,j;
unsigned char buf[8];
int xid = 0;
@@
-1527,7
+1534,7
@@
void pdfswf_performconversion()
for(t=0;t<pagepos;t++)
{
currentpage = pages[t];
for(t=0;t<pagepos;t++)
{
currentpage = pages[t];
- doc->displayPage((OutputDev*)output, currentpage, /*zoom*/100, /*rotate*/0, /*doLinks*/(int)1);
+ doc->displayPage((OutputDev*)output, currentpage, /*dpi*/72, /*rotate*/0, /*doLinks*/(int)1);
}
}
}
}