poppler/CairoFontEngine.cc | 4 - poppler/GfxFont.cc | 15 ++-- poppler/GfxFont.h | 7 +- poppler/GlobalParams.cc | 144 --------------------------------------------- poppler/GlobalParams.h | 29 --------- poppler/PSOutputDev.cc | 121 ++++++++++++++++++------------------- poppler/PSOutputDev.h | 30 ++++++++- poppler/SplashOutputDev.cc | 2 qt4/src/ArthurOutputDev.cc | 4 - qt5/src/ArthurOutputDev.cc | 4 - utils/pdftops.cc | 36 +++-------- 11 files changed, 116 insertions(+), 280 deletions(-)
New commits: commit 30a0baa353c374165e5f411efc4203746f14a74d Author: Albert Astals Cid <[email protected]> Date: Sun Jan 18 15:39:53 2015 +0100 Move more variables from GlobalParams to PSOutputDev diff --git a/poppler/CairoFontEngine.cc b/poppler/CairoFontEngine.cc index 4cf8d6b..a5a3023 100644 --- a/poppler/CairoFontEngine.cc +++ b/poppler/CairoFontEngine.cc @@ -17,7 +17,7 @@ // Copyright (C) 2005-2007 Jeff Muizelaar <[email protected]> // Copyright (C) 2005, 2006 Kristian Høgsberg <[email protected]> // Copyright (C) 2005 Martin Kretzschmar <[email protected]> -// Copyright (C) 2005, 2009, 2012, 2013 Albert Astals Cid <[email protected]> +// Copyright (C) 2005, 2009, 2012, 2013, 2015 Albert Astals Cid <[email protected]> // Copyright (C) 2006, 2007, 2010, 2011 Carlos Garcia Campos <[email protected]> // Copyright (C) 2007 Koji Otani <[email protected]> // Copyright (C) 2008, 2009 Chris Wilson <[email protected]> @@ -417,7 +417,7 @@ CairoFreeTypeFont *CairoFreeTypeFont::create(GfxFont *gfxFont, XRef *xref, ref = *gfxFont->getID(); fontType = gfxFont->getType(); - if (!(fontLoc = gfxFont->locateFont(xref, gFalse))) { + if (!(fontLoc = gfxFont->locateFont(xref, NULL))) { error(errSyntaxError, -1, "Couldn't find a font for '{0:s}'", gfxFont->getName() ? gfxFont->getName()->getCString() : "(unnamed)"); diff --git a/poppler/GfxFont.cc b/poppler/GfxFont.cc index 39f026a..3e9b7db 100644 --- a/poppler/GfxFont.cc +++ b/poppler/GfxFont.cc @@ -13,7 +13,7 @@ // All changes made under the Poppler project to this file are licensed // under GPL version 2 or later // -// Copyright (C) 2005, 2006, 2008-2010, 2012, 2014 Albert Astals Cid <[email protected]> +// Copyright (C) 2005, 2006, 2008-2010, 2012, 2014, 2015 Albert Astals Cid <[email protected]> // Copyright (C) 2005, 2006 Kristian Høgsberg <[email protected]> // Copyright (C) 2006 Takashi Iwai <[email protected]> // Copyright (C) 2007 Julien Rebetez <[email protected]> @@ -66,6 +66,7 @@ #include <fofi/FoFiType1C.h> #include <fofi/FoFiTrueType.h> #include "GfxFont.h" +#include "PSOutputDev.h" //------------------------------------------------------------------------ @@ -610,7 +611,7 @@ CharCodeToUnicode *GfxFont::readToUnicodeCMap(Dict *fontDict, int nBits, return ctu; } -GfxFontLoc *GfxFont::locateFont(XRef *xref, GBool ps) { +GfxFontLoc *GfxFont::locateFont(XRef *xref, PSOutputDev *ps) { GfxFontLoc *fontLoc; SysFontType sysFontType; GooString *path, *base14Name, *substName; @@ -640,19 +641,19 @@ GfxFontLoc *GfxFont::locateFont(XRef *xref, GBool ps) { case fontType1: case fontType1C: case fontType1COT: - embed = globalParams->getPSEmbedType1(); + embed = ps->getEmbedType1(); break; case fontTrueType: case fontTrueTypeOT: - embed = globalParams->getPSEmbedTrueType(); + embed = ps->getEmbedTrueType(); break; case fontCIDType0C: case fontCIDType0COT: - embed = globalParams->getPSEmbedCIDPostScript(); + embed = ps->getEmbedCIDPostScript(); break; case fontCIDType2: case fontCIDType2OT: - embed = globalParams->getPSEmbedCIDTrueType(); + embed = ps->getEmbedCIDTrueType(); break; default: break; @@ -669,7 +670,7 @@ GfxFontLoc *GfxFont::locateFont(XRef *xref, GBool ps) { } //----- PS passthrough - if (ps && !isCIDFont() && globalParams->getPSFontPassthrough()) { + if (ps && !isCIDFont() && ps->getFontPassthrough()) { fontLoc = new GfxFontLoc(); fontLoc->locType = gfxFontLocResident; fontLoc->fontType = fontType1; diff --git a/poppler/GfxFont.h b/poppler/GfxFont.h index 1be8975..1f01cc7 100644 --- a/poppler/GfxFont.h +++ b/poppler/GfxFont.h @@ -13,7 +13,7 @@ // All changes made under the Poppler project to this file are licensed // under GPL version 2 or later // -// Copyright (C) 2005, 2008 Albert Astals Cid <[email protected]> +// Copyright (C) 2005, 2008, 2015 Albert Astals Cid <[email protected]> // Copyright (C) 2006 Takashi Iwai <[email protected]> // Copyright (C) 2006 Kristian Høgsberg <[email protected]> // Copyright (C) 2007 Julien Rebetez <[email protected]> @@ -43,6 +43,7 @@ class Dict; class CMap; class CharCodeToUnicode; class FoFiTrueType; +class PSOutputDev; struct GfxFontCIDWidths; struct Base14FontMapEntry; @@ -237,9 +238,9 @@ public: // Return the writing mode (0=horizontal, 1=vertical). virtual int getWMode() { return 0; } - // Locate the font file for this font. If <ps> is true, includes PS + // Locate the font file for this font. If <ps> is not null, includes PS // printer-resident fonts. Returns NULL on failure. - GfxFontLoc *locateFont(XRef *xref, GBool ps); + GfxFontLoc *locateFont(XRef *xref, PSOutputDev *ps); // Locate a Base-14 font file for a specified font name. static GfxFontLoc *locateBase14Font(GooString *base14Name); diff --git a/poppler/GlobalParams.cc b/poppler/GlobalParams.cc index 26c3120..7e110d0 100644 --- a/poppler/GlobalParams.cc +++ b/poppler/GlobalParams.cc @@ -597,15 +597,6 @@ GlobalParams::GlobalParams(const char *customPopplerDataDir) psResidentFonts = new GooHash(gTrue); psResidentFonts16 = new GooList(); psResidentFontsCC = new GooList(); - psEmbedType1 = gTrue; - psEmbedTrueType = gTrue; - psEmbedCIDPostScript = gTrue; - psEmbedCIDTrueType = gTrue; - psFontPassthrough = gFalse; - psPreload = gFalse; - psOPI = gFalse; - psASCIIHex = gFalse; - psBinary = gFalse; textEncoding = new GooString("UTF-8"); #if defined(_WIN32) textEOL = eolDOS; @@ -1542,87 +1533,6 @@ PSFontParam16 *GlobalParams::getPSResidentFontCC(GooString *collection, return p; } -GBool GlobalParams::getPSEmbedType1() { - GBool e; - - lockGlobalParams; - e = psEmbedType1; - unlockGlobalParams; - return e; -} - -GBool GlobalParams::getPSEmbedTrueType() { - GBool e; - - lockGlobalParams; - e = psEmbedTrueType; - unlockGlobalParams; - return e; -} - -GBool GlobalParams::getPSEmbedCIDPostScript() { - GBool e; - - lockGlobalParams; - e = psEmbedCIDPostScript; - unlockGlobalParams; - return e; -} - -GBool GlobalParams::getPSEmbedCIDTrueType() { - GBool e; - - lockGlobalParams; - e = psEmbedCIDTrueType; - unlockGlobalParams; - return e; -} - -GBool GlobalParams::getPSFontPassthrough() { - GBool e; - - lockGlobalParams; - e = psFontPassthrough; - unlockGlobalParams; - return e; -} - -GBool GlobalParams::getPSPreload() { - GBool preload; - - lockGlobalParams; - preload = psPreload; - unlockGlobalParams; - return preload; -} - -GBool GlobalParams::getPSOPI() { - GBool opi; - - lockGlobalParams; - opi = psOPI; - unlockGlobalParams; - return opi; -} - -GBool GlobalParams::getPSASCIIHex() { - GBool ah; - - lockGlobalParams; - ah = psASCIIHex; - unlockGlobalParams; - return ah; -} - -GBool GlobalParams::getPSBinary() { - GBool binary; - - lockGlobalParams; - binary = psBinary; - unlockGlobalParams; - return binary; -} - GooString *GlobalParams::getTextEncodingName() { GooString *s; @@ -1913,60 +1823,6 @@ void GlobalParams::setPSLevel(PSLevel level) { unlockGlobalParams; } -void GlobalParams::setPSEmbedType1(GBool embed) { - lockGlobalParams; - psEmbedType1 = embed; - unlockGlobalParams; -} - -void GlobalParams::setPSEmbedTrueType(GBool embed) { - lockGlobalParams; - psEmbedTrueType = embed; - unlockGlobalParams; -} - -void GlobalParams::setPSEmbedCIDPostScript(GBool embed) { - lockGlobalParams; - psEmbedCIDPostScript = embed; - unlockGlobalParams; -} - -void GlobalParams::setPSEmbedCIDTrueType(GBool embed) { - lockGlobalParams; - psEmbedCIDTrueType = embed; - unlockGlobalParams; -} - -void GlobalParams::setPSFontPassthrough(GBool passthrough) { - lockGlobalParams; - psFontPassthrough = passthrough; - unlockGlobalParams; -} - -void GlobalParams::setPSPreload(GBool preload) { - lockGlobalParams; - psPreload = preload; - unlockGlobalParams; -} - -void GlobalParams::setPSOPI(GBool opi) { - lockGlobalParams; - psOPI = opi; - unlockGlobalParams; -} - -void GlobalParams::setPSASCIIHex(GBool hex) { - lockGlobalParams; - psASCIIHex = hex; - unlockGlobalParams; -} - -void GlobalParams::setPSBinary(GBool binary) { - lockGlobalParams; - psBinary = binary; - unlockGlobalParams; -} - void GlobalParams::setTextEncoding(char *encodingName) { lockGlobalParams; delete textEncoding; diff --git a/poppler/GlobalParams.h b/poppler/GlobalParams.h index 3419622..16d615a 100644 --- a/poppler/GlobalParams.h +++ b/poppler/GlobalParams.h @@ -166,15 +166,6 @@ public: GooList *getPSResidentFonts(); PSFontParam16 *getPSResidentFont16(GooString *fontName, int wMode); PSFontParam16 *getPSResidentFontCC(GooString *collection, int wMode); - GBool getPSEmbedType1(); - GBool getPSEmbedTrueType(); - GBool getPSEmbedCIDPostScript(); - GBool getPSEmbedCIDTrueType(); - GBool getPSFontPassthrough(); - GBool getPSPreload(); - GBool getPSOPI(); - GBool getPSASCIIHex(); - GBool getPSBinary(); GooString *getTextEncodingName(); EndOfLineKind getTextEOL(); GBool getTextPageBreaks(); @@ -213,15 +204,6 @@ public: void setPSShrinkLarger(GBool shrink); void setPSCenter(GBool center); void setPSLevel(PSLevel level); - void setPSEmbedType1(GBool embed); - void setPSEmbedTrueType(GBool embed); - void setPSEmbedCIDPostScript(GBool embed); - void setPSEmbedCIDTrueType(GBool embed); - void setPSFontPassthrough(GBool passthrough); - void setPSPreload(GBool preload); - void setPSOPI(GBool opi); - void setPSASCIIHex(GBool hex); - void setPSBinary(GBool binary); void setTextEncoding(char *encodingName); GBool setTextEOL(char *s); void setTextPageBreaks(GBool pageBreaks); @@ -307,16 +289,6 @@ private: GooList *psResidentFontsCC; // 16-bit character collection fonts // resident in printer: collection name // mapped to font info [PSFontParam16] - GBool psEmbedType1; // embed Type 1 fonts? - GBool psEmbedTrueType; // embed TrueType fonts? - GBool psEmbedCIDPostScript; // embed CID PostScript fonts? - GBool psEmbedCIDTrueType; // embed CID TrueType fonts? - GBool psFontPassthrough; // pass all fonts through as-is? - GBool psPreload; // preload PostScript images and forms into - // memory - GBool psOPI; // generate PostScript OPI comments? - GBool psASCIIHex; // use ASCIIHex instead of ASCII85? - GBool psBinary; // use binary instead of hex GooString *textEncoding; // encoding (unicodeMap) to use for text // output EndOfLineKind textEOL; // type of EOL marker to use for text diff --git a/poppler/PSOutputDev.cc b/poppler/PSOutputDev.cc index 4139d0b..f69eb86 100644 --- a/poppler/PSOutputDev.cc +++ b/poppler/PSOutputDev.cc @@ -1230,6 +1230,15 @@ void PSOutputDev::init(PSOutputFunc outputFuncA, void *outputStreamA, } // initialize + embedType1 = gTrue; + embedTrueType = gTrue; + embedCIDPostScript = gTrue; + embedCIDTrueType = gTrue; + fontPassthrough = gFalse; + preloadImagesForms = gFalse; + generateOPI = gFalse; + useASCIIHex = gFalse; + useBinary = gFalse; rasterMono = gFalse; rasterResolution = 300; uncompressPreloadedImages = gFalse; @@ -1314,7 +1323,6 @@ void PSOutputDev::init(PSOutputFunc outputFuncA, void *outputStreamA, if (!paperMatch) break; // we only need one entry when all pages are the same size } - preload = globalParams->getPSPreload(); if (imgLLX == 0 && imgURX == 0 && imgLLY == 0 && imgURY == 0) { imgLLX = imgLLY = 0; imgURX = paperWidth; @@ -1519,7 +1527,7 @@ void PSOutputDev::writeHeader(const std::vector<int> &pages, writePS("%%DocumentCustomColors: (atend)\n"); } writePS("%%DocumentSuppliedResources: (atend)\n"); - if ((level == psLevel1 || level == psLevel1Sep) && globalParams->getPSBinary()) { + if ((level == psLevel1 || level == psLevel1Sep) && useBinary) { writePS("%%DocumentData: Binary\n"); } @@ -1675,7 +1683,7 @@ void PSOutputDev::writeDocSetup(PDFDoc *doc, Catalog *catalog, } } #if OPI_SUPPORT - if (globalParams->getPSOPI()) { + if (generateOPI) { writePS("/opiMatrix matrix currentmatrix def\n"); } #endif @@ -1884,7 +1892,7 @@ void PSOutputDev::setupFont(GfxFont *font, Dict *parentResDict) { font->getID()->num, font->getID()->gen); setupType3Font(font, psName, parentResDict); } else { - fontLoc = font->locateFont(xref, gTrue); + fontLoc = font->locateFont(xref, this); if (fontLoc != NULL) { switch (fontLoc->locType) { case gfxFontLocEmbedded: @@ -2816,7 +2824,7 @@ void PSOutputDev::setupImages(Dict *resDict) { Ref imgID; int i, j; - if (!(mode == psModeForm || inType3Char || preload)) { + if (!(mode == psModeForm || inType3Char || preloadImagesForms)) { return; } @@ -2868,7 +2876,7 @@ void PSOutputDev::setupImages(Dict *resDict) { } void PSOutputDev::setupImage(Ref id, Stream *str, GBool mask) { - GBool useRLE, useCompressed, useASCIIHex; + GBool useRLE, useCompressed, doUseASCIIHex; GooString *s; int c; int size, line, col, i; @@ -2880,7 +2888,7 @@ void PSOutputDev::setupImage(Ref id, Stream *str, GBool mask) { if (level < psLevel2) { useRLE = gFalse; useCompressed = gFalse; - useASCIIHex = gTrue; + doUseASCIIHex = gTrue; } else { if (uncompressPreloadedImages) { useRLE = gFalse; @@ -2896,7 +2904,7 @@ void PSOutputDev::setupImage(Ref id, Stream *str, GBool mask) { useCompressed = gFalse; } } - useASCIIHex = globalParams->getPSASCIIHex(); + doUseASCIIHex = useASCIIHex; } if (useCompressed) { str = str->getUndecodedStream(); @@ -2904,7 +2912,7 @@ void PSOutputDev::setupImage(Ref id, Stream *str, GBool mask) { if (useRLE) { str = new RunLengthEncoder(str); } - if (useASCIIHex) { + if (doUseASCIIHex) { str = new ASCIIHexEncoder(str); } else { str = new ASCII85Encoder(str); @@ -2917,23 +2925,23 @@ void PSOutputDev::setupImage(Ref id, Stream *str, GBool mask) { do { c = str->getChar(); } while (c == '\n' || c == '\r'); - if (c == (useASCIIHex ? '>' : '~') || c == EOF) { + if (c == (doUseASCIIHex ? '>' : '~') || c == EOF) { break; } if (c == 'z') { ++col; } else { ++col; - for (i = 1; i <= (useASCIIHex ? 1 : 4); ++i) { + for (i = 1; i <= (doUseASCIIHex ? 1 : 4); ++i) { do { c = str->getChar(); } while (c == '\n' || c == '\r'); - if (c == (useASCIIHex ? '>' : '~') || c == EOF) { + if (c == (doUseASCIIHex ? '>' : '~') || c == EOF) { break; } ++col; } - if (c == (useASCIIHex ? '>' : '~') || c == EOF) { + if (c == (doUseASCIIHex ? '>' : '~') || c == EOF) { break; } } @@ -2941,7 +2949,7 @@ void PSOutputDev::setupImage(Ref id, Stream *str, GBool mask) { ++size; col = 0; } - } while (c != (useASCIIHex ? '>' : '~') && c != EOF); + } while (c != (doUseASCIIHex ? '>' : '~') && c != EOF); // add one entry for the final line of data; add another entry // because the RunLengthDecode filter may read past the end ++size; @@ -2963,12 +2971,12 @@ void PSOutputDev::setupImage(Ref id, Stream *str, GBool mask) { writePSFmt("{0:d} array 1 index {1:d} 2 index put\n", innerSize, outer); line = col = 0; - writePS((char *)(useASCIIHex ? "dup 0 <" : "dup 0 <~")); + writePS((char *)(doUseASCIIHex ? "dup 0 <" : "dup 0 <~")); for (;;) { do { c = str->getChar(); } while (c == '\n' || c == '\r'); - if (c == (useASCIIHex ? '>' : '~') || c == EOF) { + if (c == (doUseASCIIHex ? '>' : '~') || c == EOF) { break; } if (c == 'z') { @@ -2977,18 +2985,18 @@ void PSOutputDev::setupImage(Ref id, Stream *str, GBool mask) { } else { writePSChar(c); ++col; - for (i = 1; i <= (useASCIIHex ? 1 : 4); ++i) { + for (i = 1; i <= (doUseASCIIHex ? 1 : 4); ++i) { do { c = str->getChar(); } while (c == '\n' || c == '\r'); - if (c == (useASCIIHex ? '>' : '~') || c == EOF) { + if (c == (doUseASCIIHex ? '>' : '~') || c == EOF) { break; } writePSChar(c); ++col; } } - if (c == (useASCIIHex ? '>' : '~') || c == EOF) { + if (c == (doUseASCIIHex ? '>' : '~') || c == EOF) { break; } // each line is: "dup nnnnn <~...data...~> put<eol>" @@ -2996,15 +3004,15 @@ void PSOutputDev::setupImage(Ref id, Stream *str, GBool mask) { // chunks are 1 or 4 bytes each, so we have to stop at 232 // but make it 225 just to be safe if (col > 225) { - writePS((char *)(useASCIIHex ? "> put\n" : "~> put\n")); + writePS((char *)(doUseASCIIHex ? "> put\n" : "~> put\n")); ++line; if (line >= innerSize) break; - writePSFmt((char *)(useASCIIHex ? "dup {0:d} <" : "dup {0:d} <~"), line); + writePSFmt((char *)(doUseASCIIHex ? "dup {0:d} <" : "dup {0:d} <~"), line); col = 0; } } - if (c == (useASCIIHex ? '>' : '~') || c == EOF) { - writePS((char *)(useASCIIHex ? "> put\n" : "~> put\n")); + if (c == (doUseASCIIHex ? '>' : '~') || c == EOF) { + writePS((char *)(doUseASCIIHex ? "> put\n" : "~> put\n")); if (useRLE) { ++line; writePSFmt("{0:d} <> put\n", line); @@ -3026,7 +3034,7 @@ void PSOutputDev::setupForms(Dict *resDict) { Object xObjDict, xObj, xObjRef, subtypeObj; int i; - if (!preload) { + if (!preloadImagesForms) { return; } @@ -3163,7 +3171,6 @@ GBool PSOutputDev::checkPageSlice(Page *page, double /*hDPI*/, double /*vDPI*/, #endif char hexBuf[32*2 + 2]; // 32 values X 2 chars/value + line ending + null Guchar digit; - GBool useBinary; GBool isGray; if (forceRasterize) { @@ -3265,7 +3272,6 @@ GBool PSOutputDev::checkPageSlice(Page *page, double /*hDPI*/, double /*vDPI*/, m0, m1, m2, m3, m4, m5); switch (level) { case psLevel1: - useBinary = globalParams->getPSBinary(); writePSFmt("{0:d} {1:d} 8 [{2:d} 0 0 {3:d} 0 {4:d}] pdfIm1{5:s}\n", w, h, w, -h, h, useBinary ? "Bin" : ""); @@ -3304,7 +3310,6 @@ GBool PSOutputDev::checkPageSlice(Page *page, double /*hDPI*/, double /*vDPI*/, } break; case psLevel1Sep: - useBinary = globalParams->getPSBinary(); p = bitmap->getDataPtr(); // Check for an all gray image isGray = gTrue; @@ -3517,10 +3522,9 @@ GBool PSOutputDev::checkPageSlice(Page *page, double /*hDPI*/, double /*vDPI*/, writePS(" /Decode [0 1 0 1 0 1 0 1]\n"); } writePS(" /DataSource currentfile\n"); - useBinary = globalParams->getPSBinary(); if (useBinary) { /* nothing to do */; - } else if (globalParams->getPSASCIIHex()) { + } else if (useASCIIHex) { writePS(" /ASCIIHexDecode filter\n"); } else { writePS(" /ASCII85Decode filter\n"); @@ -3529,7 +3533,7 @@ GBool PSOutputDev::checkPageSlice(Page *page, double /*hDPI*/, double /*vDPI*/, writePS(">>\n"); if (useBinary) { /* nothing to do */; - } else if (globalParams->getPSASCIIHex()) { + } else if (useASCIIHex) { str = new ASCIIHexEncoder(str); } else { str = new ASCII85Encoder(str); @@ -5140,14 +5144,13 @@ void PSOutputDev::doImageL1(Object *ref, GfxImageColorMap *colorMap, int col, x, y, c, i; char hexBuf[32*2 + 2]; // 32 values X 2 chars/value + line ending + null Guchar digit, grayValue; - const GBool useBinary = globalParams->getPSBinary(); // explicit masking if (maskStr && !(maskColors && colorMap)) { maskToClippingPath(maskStr, maskWidth, maskHeight, maskInvert); } - if ((inType3Char || preload) && !colorMap) { + if ((inType3Char || preloadImagesForms) && !colorMap) { if (inlineImg) { // create an array str = new FixedLengthEncoder(str, len); @@ -5186,7 +5189,7 @@ void PSOutputDev::doImageL1(Object *ref, GfxImageColorMap *colorMap, } // image/imagemask command - if ((inType3Char || preload) && !colorMap) { + if ((inType3Char || preloadImagesForms) && !colorMap) { writePSFmt("{0:d} {1:d} {2:s} [{3:d} 0 0 {4:d} 0 {5:d}] pdfImM1a\n", width, height, invert ? "true" : "false", width, -height, height); @@ -5203,7 +5206,7 @@ void PSOutputDev::doImageL1(Object *ref, GfxImageColorMap *colorMap, } // image data - if (!((inType3Char || preload) && !colorMap)) { + if (!((inType3Char || preloadImagesForms) && !colorMap)) { if (colorMap) { @@ -5299,7 +5302,6 @@ void PSOutputDev::doImageL1Sep(Object *ref, GfxImageColorMap *colorMap, GBool checkProcessColor; char hexBuf[32*2 + 2]; // 32 values X 2 chars/value + line ending + null Guchar digit; - const GBool useBinary = globalParams->getPSBinary(); // explicit masking if (maskStr && !(maskColors && colorMap)) { @@ -5526,7 +5528,7 @@ void PSOutputDev::doImageL2(Object *ref, GfxImageColorMap *colorMap, GBool emitRect, addRect, extendRect; GooString *s; int n, numComps; - GBool useRLE, useASCII, useASCIIHex, useCompressed; + GBool useRLE, useASCII, useCompressed; GfxSeparationColorSpace *sepCS; GfxColor color; GfxCMYK cmyk; @@ -5705,10 +5707,8 @@ void PSOutputDev::doImageL2(Object *ref, GfxImageColorMap *colorMap, writePS(" setcolorspace\n"); } - useASCIIHex = globalParams->getPSASCIIHex(); - // set up the image data - if (mode == psModeForm || inType3Char || preload) { + if (mode == psModeForm || inType3Char || preloadImagesForms) { if (inlineImg) { // create an array str2 = new FixedLengthEncoder(str, len); @@ -5818,7 +5818,7 @@ void PSOutputDev::doImageL2(Object *ref, GfxImageColorMap *colorMap, } // data source - if (mode == psModeForm || inType3Char || preload) { + if (mode == psModeForm || inType3Char || preloadImagesForms) { if (inlineImg) { writePS(" /DataSource { pdfImStr }\n"); } else { @@ -5830,7 +5830,7 @@ void PSOutputDev::doImageL2(Object *ref, GfxImageColorMap *colorMap, } // filters - if ((mode == psModeForm || inType3Char || preload) && + if ((mode == psModeForm || inType3Char || preloadImagesForms) && uncompressPreloadedImages) { s = NULL; useRLE = gFalse; @@ -5842,12 +5842,12 @@ void PSOutputDev::doImageL2(Object *ref, GfxImageColorMap *colorMap, if ((colorMap && colorMap->getColorSpace()->getMode() == csDeviceN) || inlineImg || !s) { useRLE = gTrue; - useASCII = !(mode == psModeForm || inType3Char || preload); + useASCII = !(mode == psModeForm || inType3Char || preloadImagesForms); useCompressed = gFalse; } else { useRLE = gFalse; useASCII = str->isBinary() && - !(mode == psModeForm || inType3Char || preload); + !(mode == psModeForm || inType3Char || preloadImagesForms); useCompressed = gTrue; } } @@ -5865,7 +5865,7 @@ void PSOutputDev::doImageL2(Object *ref, GfxImageColorMap *colorMap, delete s; } - if (mode == psModeForm || inType3Char || preload) { + if (mode == psModeForm || inType3Char || preloadImagesForms) { // end of image dictionary writePSFmt(">>\n{0:s}\n", colorMap ? "image" : "imagemask"); @@ -5985,7 +5985,7 @@ void PSOutputDev::doImageL3(Object *ref, GfxImageColorMap *colorMap, Stream *str2; GooString *s; int n, numComps; - GBool useRLE, useASCII, useASCIIHex, useCompressed; + GBool useRLE, useASCII, useCompressed; GBool maskUseRLE, maskUseASCII, maskUseCompressed; GooString *maskFilters; GfxSeparationColorSpace *sepCS; @@ -5994,7 +5994,6 @@ void PSOutputDev::doImageL3(Object *ref, GfxImageColorMap *colorMap, int c; int col, i; - useASCIIHex = globalParams->getPSASCIIHex(); useRLE = useASCII = useCompressed = gFalse; // make gcc happy maskUseRLE = maskUseASCII = maskUseCompressed = gFalse; // make gcc happy maskFilters = NULL; // make gcc happy @@ -6003,7 +6002,7 @@ void PSOutputDev::doImageL3(Object *ref, GfxImageColorMap *colorMap, if (maskStr) { // mask data source - if ((mode == psModeForm || inType3Char || preload) && + if ((mode == psModeForm || inType3Char || preloadImagesForms) && uncompressPreloadedImages) { s = NULL; maskUseRLE = gFalse; @@ -6013,12 +6012,12 @@ void PSOutputDev::doImageL3(Object *ref, GfxImageColorMap *colorMap, s = maskStr->getPSFilter(3, " "); if (!s) { maskUseRLE = gTrue; - maskUseASCII = !(mode == psModeForm || inType3Char || preload); + maskUseASCII = !(mode == psModeForm || inType3Char || preloadImagesForms); maskUseCompressed = gFalse; } else { maskUseRLE = gFalse; maskUseASCII = maskStr->isBinary() && - !(mode == psModeForm || inType3Char || preload); + !(mode == psModeForm || inType3Char || preloadImagesForms); maskUseCompressed = gTrue; } } @@ -6036,7 +6035,7 @@ void PSOutputDev::doImageL3(Object *ref, GfxImageColorMap *colorMap, if (s) { delete s; } - if (mode == psModeForm || inType3Char || preload) { + if (mode == psModeForm || inType3Char || preloadImagesForms) { writePSFmt("MaskData_{0:d}_{1:d} pdfMaskInit\n", ref->getRefNum(), ref->getRefGen()); } else { @@ -6082,7 +6081,7 @@ void PSOutputDev::doImageL3(Object *ref, GfxImageColorMap *colorMap, } // set up the image data - if (mode == psModeForm || inType3Char || preload) { + if (mode == psModeForm || inType3Char || preloadImagesForms) { if (inlineImg) { // create an array str2 = new FixedLengthEncoder(str, len); @@ -6200,7 +6199,7 @@ void PSOutputDev::doImageL3(Object *ref, GfxImageColorMap *colorMap, } // data source - if (mode == psModeForm || inType3Char || preload) { + if (mode == psModeForm || inType3Char || preloadImagesForms) { if (inlineImg) { writePS(" /DataSource { pdfImStr }\n"); } else { @@ -6212,7 +6211,7 @@ void PSOutputDev::doImageL3(Object *ref, GfxImageColorMap *colorMap, } // filters - if ((mode == psModeForm || inType3Char || preload) && + if ((mode == psModeForm || inType3Char || preloadImagesForms) && uncompressPreloadedImages) { s = NULL; useRLE = gFalse; @@ -6224,12 +6223,12 @@ void PSOutputDev::doImageL3(Object *ref, GfxImageColorMap *colorMap, if ((colorMap && colorMap->getColorSpace()->getMode() == csDeviceN) || inlineImg || !s) { useRLE = gTrue; - useASCII = !(mode == psModeForm || inType3Char || preload); + useASCII = !(mode == psModeForm || inType3Char || preloadImagesForms); useCompressed = gFalse; } else { useRLE = gFalse; useASCII = str->isBinary() && - !(mode == psModeForm || inType3Char || preload); + !(mode == psModeForm || inType3Char || preloadImagesForms); useCompressed = gTrue; } } @@ -6264,7 +6263,7 @@ void PSOutputDev::doImageL3(Object *ref, GfxImageColorMap *colorMap, maskInvert ? 1 : 0, maskInvert ? 0 : 1); // mask data source - if (mode == psModeForm || inType3Char || preload) { + if (mode == psModeForm || inType3Char || preloadImagesForms) { writePS(" /DataSource {pdfMaskSrc}\n"); writePS(maskFilters->getCString()); } else { @@ -6276,7 +6275,7 @@ void PSOutputDev::doImageL3(Object *ref, GfxImageColorMap *colorMap, writePS(">>\n"); } - if (mode == psModeForm || inType3Char || preload) { + if (mode == psModeForm || inType3Char || preloadImagesForms) { // image command writePSFmt("{0:s}\n", colorMap ? "image" : "imagemask"); @@ -6299,7 +6298,7 @@ void PSOutputDev::doImageL3(Object *ref, GfxImageColorMap *colorMap, } // get rid of the array and index - if (mode == psModeForm || inType3Char || preload) { + if (mode == psModeForm || inType3Char || preloadImagesForms) { if (!inlineImg) writePS("pop "); writePS("pop pop\n"); @@ -6344,7 +6343,7 @@ void PSOutputDev::doImageL3(Object *ref, GfxImageColorMap *colorMap, // close the mask stream if (maskStr) { - if (!(mode == psModeForm || inType3Char || preload)) { + if (!(mode == psModeForm || inType3Char || preloadImagesForms)) { writePS("pdfMaskEnd\n"); } } @@ -6626,7 +6625,7 @@ void PSOutputDev::dumpColorSpaceL2(GfxColorSpace *colorSpace, void PSOutputDev::opiBegin(GfxState *state, Dict *opiDict) { Object dict; - if (globalParams->getPSOPI()) { + if (generateOPI) { opiDict->lookup("2.0", &dict); if (dict.isDict()) { opiBegin20(state, dict.getDict()); @@ -6999,7 +6998,7 @@ void PSOutputDev::opiTransform(GfxState *state, double x0, double y0, void PSOutputDev::opiEnd(GfxState *state, Dict *opiDict) { Object dict; - if (globalParams->getPSOPI()) { + if (generateOPI) { opiDict->lookup("2.0", &dict); if (dict.isDict()) { writePS("%%EndIncludedImage\n"); diff --git a/poppler/PSOutputDev.h b/poppler/PSOutputDev.h index 46f065c..128ff7c 100644 --- a/poppler/PSOutputDev.h +++ b/poppler/PSOutputDev.h @@ -45,6 +45,7 @@ #include "OutputDev.h" #include <set> #include <map> +#include <vector> class GHooash; class PDFDoc; @@ -151,7 +152,7 @@ public: // Does this device use drawForm()? If this returns false, // form-type XObjects will be interpreted (i.e., unrolled). - virtual GBool useDrawForm() { return preload; } + virtual GBool useDrawForm() { return preloadImagesForms; } // Does this device use beginType3Char/endType3Char? Otherwise, // text in Type 3 fonts will be drawn with drawChar/drawString. @@ -313,6 +314,21 @@ public: void setRasterMono(GBool b) { rasterMono = b; } void setUncompressPreloadedImages(GBool b) { uncompressPreloadedImages = b; } + GBool getEmbedType1() const { return embedType1; } + GBool getEmbedTrueType() const { return embedTrueType; } + GBool getEmbedCIDPostScript() const { return embedCIDPostScript; } + GBool getEmbedCIDTrueType() const { return embedCIDTrueType; } + GBool getFontPassthrough() const { return fontPassthrough; } + void setEmbedType1(GBool b) { embedType1 = b; } + void setEmbedTrueType(GBool b) { embedTrueType = b; } + void setEmbedCIDPostScript(GBool b) { embedCIDPostScript = b; } + void setEmbedCIDTrueType(GBool b) { embedCIDTrueType = b; } + void setFontPassthrough(GBool b) { fontPassthrough = b; } + void setPreloadImagesForms(GBool b) { preloadImagesForms = b; } + void setGenerateOPI(GBool b) { generateOPI = b; } + void setUseASCIIHex(GBool b) { useASCIIHex = b; } + void setUseBinary(GBool b) { useBinary = b; } + private: void init(PSOutputFunc outputFuncA, void *outputStreamA, @@ -415,8 +431,6 @@ private: // (only psModePSOrigPageSizes output mode) int imgLLX, imgLLY, // imageable area, in pts imgURX, imgURY; - GBool preload; // load all images into memory, and - // predefine forms GBool noCrop; PSOutputFunc outputFunc; @@ -499,6 +513,16 @@ private: GBool rasterMono; // true to do PostScript rasterization // in monochrome (gray); false to do it // in color (RGB/CMYK) + GBool embedType1; // embed Type 1 fonts? + GBool embedTrueType; // embed TrueType fonts? + GBool embedCIDPostScript; // embed CID PostScript fonts? + GBool embedCIDTrueType; // embed CID TrueType fonts? + GBool fontPassthrough; // pass all fonts through as-is? + GBool preloadImagesForms; // preload PostScript images and forms into + // memory + GBool generateOPI; // generate PostScript OPI comments? + GBool useASCIIHex; // use ASCIIHex instead of ASCII85? + GBool useBinary; // use binary instead of hex #if OPI_SUPPORT int opi13Nest; // nesting level of OPI 1.3 objects diff --git a/poppler/SplashOutputDev.cc b/poppler/SplashOutputDev.cc index b96232f..97af5c4 100644 --- a/poppler/SplashOutputDev.cc +++ b/poppler/SplashOutputDev.cc @@ -1893,7 +1893,7 @@ void SplashOutputDev::doUpdateFont(GfxState *state) { } else { - if (!(fontLoc = gfxFont->locateFont((xref) ? xref : doc->getXRef(), gFalse))) { + if (!(fontLoc = gfxFont->locateFont((xref) ? xref : doc->getXRef(), NULL))) { error(errSyntaxError, -1, "Couldn't find a font for '{0:s}'", gfxFont->getName() ? gfxFont->getName()->getCString() : "(unnamed)"); diff --git a/qt4/src/ArthurOutputDev.cc b/qt4/src/ArthurOutputDev.cc index 05c95ba..7e80b4a 100644 --- a/qt4/src/ArthurOutputDev.cc +++ b/qt4/src/ArthurOutputDev.cc @@ -14,7 +14,7 @@ // under GPL version 2 or later // // Copyright (C) 2005 Brad Hards <[email protected]> -// Copyright (C) 2005-2009, 2011, 2012, 2014 Albert Astals Cid <[email protected]> +// Copyright (C) 2005-2009, 2011, 2012, 2014, 2015 Albert Astals Cid <[email protected]> // Copyright (C) 2008, 2010 Pino Toscano <[email protected]> // Copyright (C) 2009, 2011 Carlos Garcia Campos <[email protected]> // Copyright (C) 2009 Petr Gajdos <[email protected]> @@ -309,7 +309,7 @@ void ArthurOutputDev::updateFont(GfxState *state) } else { - if (!(fontLoc = gfxFont->locateFont(xref, gFalse))) { + if (!(fontLoc = gfxFont->locateFont(xref, NULL))) { error(errSyntaxError, -1, "Couldn't find a font for '{0:s}'", gfxFont->getName() ? gfxFont->getName()->getCString() : "(unnamed)"); diff --git a/qt5/src/ArthurOutputDev.cc b/qt5/src/ArthurOutputDev.cc index 05c95ba..7e80b4a 100644 --- a/qt5/src/ArthurOutputDev.cc +++ b/qt5/src/ArthurOutputDev.cc @@ -14,7 +14,7 @@ // under GPL version 2 or later // // Copyright (C) 2005 Brad Hards <[email protected]> -// Copyright (C) 2005-2009, 2011, 2012, 2014 Albert Astals Cid <[email protected]> +// Copyright (C) 2005-2009, 2011, 2012, 2014, 2015 Albert Astals Cid <[email protected]> // Copyright (C) 2008, 2010 Pino Toscano <[email protected]> // Copyright (C) 2009, 2011 Carlos Garcia Campos <[email protected]> // Copyright (C) 2009 Petr Gajdos <[email protected]> @@ -309,7 +309,7 @@ void ArthurOutputDev::updateFont(GfxState *state) } else { - if (!(fontLoc = gfxFont->locateFont(xref, gFalse))) { + if (!(fontLoc = gfxFont->locateFont(xref, NULL))) { error(errSyntaxError, -1, "Couldn't find a font for '{0:s}'", gfxFont->getName() ? gfxFont->getName()->getCString() : "(unnamed)"); diff --git a/utils/pdftops.cc b/utils/pdftops.cc index 391ec04..b85d96e 100644 --- a/utils/pdftops.cc +++ b/utils/pdftops.cc @@ -297,32 +297,6 @@ int main(int argc, char *argv[]) { if (level1 || level1Sep || level2 || level2Sep || level3 || level3Sep) { globalParams->setPSLevel(level); } - if (noEmbedT1Fonts) { - globalParams->setPSEmbedType1(!noEmbedT1Fonts); - } - if (noEmbedTTFonts) { - globalParams->setPSEmbedTrueType(!noEmbedTTFonts); - } - if (noEmbedCIDPSFonts) { - globalParams->setPSEmbedCIDPostScript(!noEmbedCIDPSFonts); - } - if (noEmbedCIDTTFonts) { - globalParams->setPSEmbedCIDTrueType(!noEmbedCIDTTFonts); - } - if (fontPassthrough) { - globalParams->setPSFontPassthrough(fontPassthrough); - } - if (preload) { - globalParams->setPSPreload(preload); - } -#if OPI_SUPPORT - if (doOPI) { - globalParams->setPSOPI(doOPI); - } -#endif - if (psBinary) { - globalParams->setPSBinary(psBinary); - } if (quiet) { globalParams->setErrQuiet(quiet); } @@ -423,6 +397,16 @@ int main(int argc, char *argv[]) { if (splashResolution > 0) { psOut->setRasterResolution(splashResolution); } + psOut->setEmbedType1(!noEmbedT1Fonts); + psOut->setEmbedTrueType(!noEmbedTTFonts); + psOut->setEmbedCIDPostScript(!noEmbedCIDPSFonts); + psOut->setEmbedCIDTrueType(!noEmbedCIDTTFonts); + psOut->setFontPassthrough(fontPassthrough); + psOut->setPreloadImagesForms(preload); +#if OPI_SUPPORT + psOut->setGenerateOPI(doOPI); +#endif + psOut->setUseBinary(psBinary); psOut->setRasterAntialias(rasterAntialias); if (psOut->isOk()) { commit 8fed995c3457d64669ae12901450b7c811599dba Author: Albert Astals Cid <[email protected]> Date: Sun Jan 18 14:52:53 2015 +0100 Forgot to delete this in the previous commit diff --git a/poppler/GlobalParams.h b/poppler/GlobalParams.h index 98d2bad..3419622 100644 --- a/poppler/GlobalParams.h +++ b/poppler/GlobalParams.h @@ -175,7 +175,6 @@ public: GBool getPSOPI(); GBool getPSASCIIHex(); GBool getPSBinary(); - GBool getPSRasterMono(); GooString *getTextEncodingName(); EndOfLineKind getTextEOL(); GBool getTextPageBreaks();
_______________________________________________ poppler mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/poppler
