char* plus = strchr(fontname, '+');
if(plus && plus < &fontname[strlen(fontname)-1])
fontname = plus+1;
char* plus = strchr(fontname, '+');
if(plus && plus < &fontname[strlen(fontname)-1])
fontname = plus+1;
if(state->getLineJoin()!=0)
bufpos+=sprintf(bufpos,"ML%d ", state->getMiterLimit());
if(state->getLineJoin()!=0)
bufpos+=sprintf(bufpos,"ML%d ", state->getMiterLimit());
- if(state->getFont() && getFontName(state->getFont()))
- bufpos+=sprintf(bufpos,"F\"%s\" ",getFontName(state->getFont()));
+ if(state->getFont() && getFontID(state->getFont()))
+ bufpos+=sprintf(bufpos,"F\"%s\" ",getFontID(state->getFont()));
bufpos+=sprintf(bufpos,"FS%.1f ", state->getFontSize());
bufpos+=sprintf(bufpos,"MAT[%.1f/%.1f/%.1f/%.1f/%.1f/%.1f] ", state->getTextMat()[0],state->getTextMat()[1],state->getTextMat()[2],
state->getTextMat()[3],state->getTextMat()[4],state->getTextMat()[5]);
bufpos+=sprintf(bufpos,"FS%.1f ", state->getFontSize());
bufpos+=sprintf(bufpos,"MAT[%.1f/%.1f/%.1f/%.1f/%.1f/%.1f] ", state->getTextMat()[0],state->getTextMat()[1],state->getTextMat()[2],
state->getTextMat()[3],state->getTextMat()[4],state->getTextMat()[5]);
- msg("%s=========== %s (ID:%d,%d) ==========\n", loglevel, name, r->num,r->gen);
+ msg("%s=========== %s (ID:%d,%d) ==========\n", loglevel, getFontName(font), r->num,r->gen);
- msg("%sEmbedded name: %s id: %d\n",loglevel, FIXNULL(name), embRef.num);
+ msg("%s| Embedded name: %s id: %d\n",loglevel, FIXNULL(name), embRef.num);
- if(font->isFixedWidth()) msg("%sis fixed width\n", loglevel);
- if(font->isSerif()) msg("%sis serif\n", loglevel);
- if(font->isSymbolic()) msg("%sis symbolic\n", loglevel);
- if(font->isItalic()) msg("%sis italic\n", loglevel);
- if(font->isBold()) msg("%sis bold\n", loglevel);
+ if(font->isFixedWidth()) msg("%s| is fixed width\n", loglevel);
+ if(font->isSerif()) msg("%s| is serif\n", loglevel);
+ if(font->isSymbolic()) msg("%s| is symbolic\n", loglevel);
+ if(font->isItalic()) msg("%s| is italic\n", loglevel);
+ if(font->isBold()) msg("%s| is bold\n", loglevel);
}
//void SWFOutputDev::drawImageMask(GfxState *state, Object *ref, Stream *str, int width, int height, GBool invert, GBool inlineImg) {printf("void SWFOutputDev::drawImageMask(GfxState *state, Object *ref, Stream *str, int width, int height, GBool invert, GBool inlineImg) \n");}
}
//void SWFOutputDev::drawImageMask(GfxState *state, Object *ref, Stream *str, int width, int height, GBool invert, GBool inlineImg) {printf("void SWFOutputDev::drawImageMask(GfxState *state, Object *ref, Stream *str, int width, int height, GBool invert, GBool inlineImg) \n");}
- msg("<debug> drawChar(%f,%f,%f,%f,c='%c' (%d),u=%d <%d>) CID=%d\n",x,y,dx,dy,c,c,u, uLen, font->isCIDFont());
-
+
+ msg("<debug> drawChar(%f,%f,c='%c' (%d),u=%d <%d>) CID=%d name=\"%s\"\n",x,y,(c&127)>=32?c:'?',c,u, uLen, font->isCIDFont(), FIXNULL(name));
int ret = swfoutput_drawchar(&output, x1, y1, name, c, u);
}
int ret = swfoutput_drawchar(&output, x1, y1, name, c, u);
}
void SWFOutputDev::startPage(int pageNum, GfxState *state, double crop_x1, double crop_y1, double crop_x2, double crop_y2)
{
double x1,y1,x2,y2;
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("<verbose> startPage %d (%f,%f,%f,%f)\n", pageNum, crop_x1, crop_y1, crop_x2, crop_y2);
laststate = state;
msg("<verbose> startPage %d (%f,%f,%f,%f)\n", pageNum, crop_x1, crop_y1, crop_x2, crop_y2);
msg("<notice> processing page %d", pageNum);
/* state->transform(state->getX1(),state->getY1(),&x1,&y1);
state->transform(state->getX2(),state->getY2(),&x2,&y2);
Use CropBox, not MediaBox, as page size
*/
msg("<notice> processing page %d", pageNum);
/* state->transform(state->getX1(),state->getY1(),&x1,&y1);
state->transform(state->getX2(),state->getY2(),&x2,&y2);
Use CropBox, not MediaBox, as page size
*/
+ y2 = crop_y2;*/
+ state->transform(crop_x1,crop_y1,&x1,&y1);
+ state->transform(crop_x2,crop_y2,&x2,&y2);
if(!strcmp(name, pdf2t1map[i].pdffont))
{
name = pdf2t1map[i].filename;
if(!strcmp(name, pdf2t1map[i].pdffont))
{
name = pdf2t1map[i].filename;
+
+ /*if(font->isCIDFont()) {
+ GfxCIDFont* cidFont = (GfxCIDFont *)font;
+ GString c = cidFont->getCollection();
+ msg("<notice> Collection: %s", c.getCString());
+ }*/
+
if (font->getType() == fontType1C ||
font->getType() == fontCIDType0C) {
if (!(fontBuf = font->readEmbFontFile(xref, &fontLen))) {
if (font->getType() == fontType1C ||
font->getType() == fontCIDType0C) {
if (!(fontBuf = font->readEmbFontFile(xref, &fontLen))) {
int t;
/* first, look if we substituted this font before-
this way, we don't initialize the T1 Fonts
too often */
for(t=0;t<substitutepos;t++) {
int t;
/* first, look if we substituted this font before-
this way, we don't initialize the T1 Fonts
too often */
for(t=0;t<substitutepos;t++) {
- if(!strcmp(fontname, substitutesource[t])) {
- fontname = substitutetarget[t];
+ if(!strcmp(fontid, substitutesource[t])) {
+ fontid = substitutetarget[t];
break;
}
}
/* second, see if swfoutput already has this font
cached- if so, we are done */
break;
}
}
/* second, see if swfoutput already has this font
cached- if so, we are done */
fileName = searchFont(fontname);
if(!fileName) showFontError(gfxFont,0);
}
fileName = searchFont(fontname);
if(!fileName) showFontError(gfxFont,0);
}
- if(!fileName)
- fileName = substituteFont(gfxFont, fontname);
+ if(!fileName) {
+ char * fontname = getFontName(gfxFont);
+ msg("<warning> Font %s could not be loaded.", fontname);
+ msg("<warning> Try putting a TTF version of that font (named \"%s.ttf\") into /swftools/fonts", fontname);
+ fileName = substituteFont(gfxFont, fontid);
+ }
- msg("<verbose> updateFont(%s) -> %s", fontname, fileName);
+ msg("<verbose> updateFont(%s) -> %s", fontid, fileName);
+ dumpFontInfo("<verbose>", gfxFont);
- /*ERROR: This pdf is encrypted, and disallows copying.
- Due to the DMCA, paragraph 1201, (2) A-C, circumventing
- a technological measure that efficively controls access to
- a protected work is violating American law.
- See www.eff.org for more information about DMCA issues.
- */