- // print page count
- printf("Pages: %d\n", doc->getNumPages());
-
- // print linearization info
- printf("Linearized: %s\n", doc->isLinearized() ? "yes" : "no");
-
- // print encryption info
- printf("Encrypted: ");
- if (doc->isEncrypted()) {
- printf("yes (print:%s copy:%s change:%s addNotes:%s)\n",
- doc->okToPrint() ? "yes" : "no",
- doc->okToCopy() ? "yes" : "no",
- doc->okToChange() ? "yes" : "no",
- doc->okToAddNotes() ? "yes" : "no");
- /*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.
- */
- if(!doc->okToCopy()) {
- printf("PDF disallows copying. Bailing out.\n");
- exit(1); //bail out
+int jpeg_dpi = 0;
+int ppm_dpi = 0;
+
+void pdfswf_setparameter(char*name, char*value)
+{
+ msg("<verbose> setting parameter %s to \"%s\"", name, value);
+ if(!strcmp(name, "caplinewidth")) {
+ caplinewidth = atof(value);
+ } else if(!strcmp(name, "zoom")) {
+ char buf[80];
+ zoom = atoi(value);
+ sprintf(buf, "%f", (double)jpeg_dpi/(double)zoom);
+ swfoutput_setparameter("jpegsubpixels", buf);
+ sprintf(buf, "%f", (double)ppm_dpi/(double)zoom);
+ swfoutput_setparameter("ppmsubpixels", buf);
+ } else if(!strcmp(name, "jpegdpi")) {
+ char buf[80];
+ jpeg_dpi = atoi(value);
+ sprintf(buf, "%f", (double)jpeg_dpi/(double)zoom);
+ swfoutput_setparameter("jpegsubpixels", buf);
+ } else if(!strcmp(name, "ppmdpi")) {
+ char buf[80];
+ ppm_dpi = atoi(value);
+ sprintf(buf, "%f", (double)ppm_dpi/(double)zoom);
+ swfoutput_setparameter("ppmsubpixels", buf);
+ } else if(!strcmp(name, "forceType0Fonts")) {
+ forceType0Fonts = atoi(value);
+ } else if(!strcmp(name, "fontdir")) {
+ pdfswf_addfontdir(value);
+ } else if(!strcmp(name, "languagedir")) {
+ pdfswf_addlanguagedir(value);
+ } else if(!strcmp(name, "fontconfig")) {
+ config_use_fontconfig = atoi(value);
+ } else {
+ swfoutput_setparameter(name, value);
+ }
+}
+void pdfswf_addfont(char*filename)
+{
+ fontfile_t f;
+ memset(&f, 0, sizeof(fontfile_t));
+ f.filename = filename;
+ if(fontnum < sizeof(fonts)/sizeof(fonts[0])) {
+ fonts[fontnum++] = f;
+ } else {
+ msg("<error> Too many external fonts. Not adding font file \"%s\".", filename);
+ }
+}
+
+static char* dirseparator()
+{
+#ifdef WIN32
+ return "\\";
+#else
+ return "/";
+#endif
+}
+
+void pdfswf_addlanguagedir(char*dir)
+{
+ if(!globalParams)
+ globalParams = new GlobalParams("");
+
+ msg("<notice> Adding %s to language pack directories", dir);
+
+ int l;
+ FILE*fi = 0;
+ char* config_file = (char*)malloc(strlen(dir) + 1 + sizeof("add-to-xpdfrc"));
+ strcpy(config_file, dir);
+ strcat(config_file, dirseparator());
+ strcat(config_file, "add-to-xpdfrc");
+
+ fi = fopen(config_file, "rb");
+ if(!fi) {
+ msg("<error> Could not open %s", config_file);
+ return;
+ }
+ globalParams->parseFile(new GString(config_file), fi);
+ fclose(fi);
+}
+
+void pdfswf_addfontdir(char*dirname)
+{
+#ifdef HAVE_DIRENT_H
+ msg("<notice> Adding %s to font directories", dirname);
+ DIR*dir = opendir(dirname);
+ if(!dir) {
+ msg("<warning> Couldn't open directory %s\n", dirname);
+ return;
+ }
+ struct dirent*ent;
+ while(1) {
+ ent = readdir (dir);
+ if (!ent)
+ break;
+ int l;
+ char*name = ent->d_name;
+ char type = 0;
+ if(!name) continue;
+ l=strlen(name);
+ if(l<4)
+ continue;
+ if(!strncasecmp(&name[l-4], ".pfa", 4))
+ type=1;
+ if(!strncasecmp(&name[l-4], ".pfb", 4))
+ type=3;
+ if(!strncasecmp(&name[l-4], ".ttf", 4))
+ type=2;
+ if(type)
+ {
+ char*fontname = (char*)malloc(strlen(dirname)+strlen(name)+2);
+ strcpy(fontname, dirname);
+ strcat(fontname, dirseparator());
+ strcat(fontname, name);
+ msg("<verbose> Adding %s to fonts", fontname);
+ pdfswf_addfont(fontname);