X-Git-Url: http://git.asbjorn.biz/?a=blobdiff_plain;f=pdf2swf%2FSWFOutputDev.cc;h=ea190167f47a05dcccb273560eb10773de5c604c;hb=2942f8214e8462e14d6ef74bc82076b12b46131a;hp=6f7d910ed24c773620ab44d51fe3687f10f560ee;hpb=f7e02fdcc5f94e3129124abb157037d7b54553e9;p=swftools.git diff --git a/pdf2swf/SWFOutputDev.cc b/pdf2swf/SWFOutputDev.cc index 6f7d910..ea19016 100644 --- a/pdf2swf/SWFOutputDev.cc +++ b/pdf2swf/SWFOutputDev.cc @@ -144,7 +144,7 @@ public: void startDoc(XRef *xref); // Start a page. - virtual void startPage(int pageNum, GfxState *state) ; + virtual void startPage(int pageNum, GfxState *state, double x1, double y1, double x2, double y2) ; //----- link borders virtual void drawLink(Link *link, Catalog *catalog) ; @@ -643,7 +643,7 @@ void SWFOutputDev::drawChar(GfxState *state, double x, double y, if(_u) u = *_u; - msg(" drawChar(%f,%f,%f,%f,'%c',%d)\n",x,y,dx,dy,c,u); + msg(" drawChar(%f,%f,%f,%f,'%c',%d) CID=%d\n",x,y,dx,dy,c,u, font->isCIDFont()); if(font->isCIDFont()) { GfxCIDFont*cfont = (GfxCIDFont*)font; @@ -660,9 +660,10 @@ void SWFOutputDev::drawChar(GfxState *state, double x, double y, if(name) swfoutput_drawchar(&output, x1, y1, name, c); - else + else { msg(" couldn't get name for CID character %02x from Encoding", c); swfoutput_drawchar(&output, x1, y1, "", c); + } } else { Gfx8BitFont*font8; font8 = (Gfx8BitFont*)font; @@ -699,18 +700,27 @@ void SWFOutputDev::endType3Char(GfxState *state) msg(" endType3Char"); } -void SWFOutputDev::startPage(int pageNum, GfxState *state) +void SWFOutputDev::startPage(int pageNum, GfxState *state, double crop_x1, double crop_y1, double crop_x2, double crop_y2) { double x1,y1,x2,y2; laststate = state; msg(" startPage %d\n", pageNum); msg(" processing page %d", pageNum); - state->transform(state->getX1(),state->getY1(),&x1,&y1); + /*state->transform(state->getX1(),state->getY1(),&x1,&y1); state->transform(state->getX2(),state->getY2(),&x2,&y2); + */ + x1 = crop_x1; + y1 = crop_y1; + x2 = crop_x2; + y2 = crop_y2; + + if(x2 Bounding box is (%f,%f)-(%f,%f)", x1,y1,x2,y2); - swfoutput_init(&output, swffilename, abs((int)(x2-x1)),abs((int)(y2-y1))); + msg(" Bounding box is (%f,%f)-(%f,%f)", crop_x1,crop_y1,crop_x2,crop_y2); + swfoutput_init(&output, swffilename,(int)crop_x1,(int)crop_y1,(int)crop_y2,(int)crop_y2); outputstarted = 1; } else @@ -1001,7 +1011,8 @@ char*SWFOutputDev::writeEmbeddedFontToFile(XRef*ref, GfxFont*font) msg(" Couldn't create temporary Type 1 font file"); return 0; } - if (font->getType() == fontType1C) { + if (font->getType() == fontType1C || + font->getType() == fontCIDType0C) { if (!(fontBuf = font->readEmbFontFile(xref, &fontLen))) { fclose(f); msg(" Couldn't read embedded font file"); @@ -1078,7 +1089,7 @@ char*SWFOutputDev::writeEmbeddedFontToFile(XRef*ref, GfxFont*font) "-b", tmpFileName, name2}; msg(" Invoking %s %s %s %s %s %s %s %s",a[0],a[1],a[2],a[3],a[4],a[5],a[6],a[7]); ttf2pt1_main(8,a); - //unlink(tmpFileName); + unlink(tmpFileName); sprintf(name2,"%s.pfb",tmp); tmpFileName = strdup(name2); } @@ -1290,9 +1301,11 @@ void SWFOutputDev::updateFont(GfxState *state) GBool embedded = gfxFont->getEmbeddedFontID(&embRef); if(embedded) { if (gfxFont->getType() == fontType1 || + gfxFont->getType() == fontCIDType0C || gfxFont->getType() == fontType1C || gfxFont->getType() == fontTrueType || - gfxFont->getType() == fontCIDType2) + gfxFont->getType() == fontCIDType2 + ) { fileName = writeEmbeddedFontToFile(xref, gfxFont); if(!fileName) { @@ -1314,6 +1327,7 @@ void SWFOutputDev::updateFont(GfxState *state) font directories */ int newt1id = searchT1Font(fontname); if(newt1id<0) { + msg(" Couldn't find any suitable replacement for %s",fontname); showFontError(gfxFont,0); fontname = substituteFont(gfxFont, fontname); } else @@ -1335,7 +1349,8 @@ void SWFOutputDev::updateFont(GfxState *state) } if(t1id<0) { - showFontError(gfxFont,0); + msg(" Current font's t1id is %d", t1id); + //showFontError(gfxFont,0); return; }