- // 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
+void pdfswf_setparameter(char*name, char*value)
+{
+ if(!strcmp(name, "caplinewidth")) {
+ caplinewidth = atof(value);
+ } else if(!strcmp(name, "zoom")) {
+ zoom = 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);
+ }
+}
+
+typedef struct _pdf_doc_internal
+{
+ int protect;
+ PDFDoc*doc;
+} pdf_doc_internal_t;
+typedef struct _pdf_page_internal
+{
+} pdf_page_internal_t;
+typedef struct _swf_output_internal
+{
+ SWFOutputDev*outputDev;
+} swf_output_internal_t;
+
+pdf_doc_t* pdf_init(char*filename, char*userPassword)
+{
+ pdf_doc_t*pdf_doc = (pdf_doc_t*)malloc(sizeof(pdf_doc_t));
+ memset(pdf_doc, 0, sizeof(pdf_doc_t));
+ pdf_doc_internal_t*i= (pdf_doc_internal_t*)malloc(sizeof(pdf_doc_internal_t));
+ memset(i, 0, sizeof(pdf_doc_internal_t));
+ pdf_doc->internal = i;
+
+ GString *fileName = new GString(filename);
+ GString *userPW;
+ Object info;
+
+ // read config file
+ globalParams = new GlobalParams("");
+
+ // open PDF file
+ if (userPassword && userPassword[0]) {
+ userPW = new GString(userPassword);
+ } else {
+ userPW = NULL;
+ }
+ i->doc = new PDFDoc(fileName, userPW);
+ if (userPW) {
+ delete userPW;
+ }
+ if (!i->doc->isOk()) {
+ return 0;
+ }
+
+ // print doc info
+ i->doc->getDocInfo(&info);
+ if (info.isDict() &&
+ (screenloglevel>=LOGLEVEL_NOTICE)) {
+ printInfoString(info.getDict(), "Title", "Title: %s\n");
+ printInfoString(info.getDict(), "Subject", "Subject: %s\n");
+ printInfoString(info.getDict(), "Keywords", "Keywords: %s\n");
+ printInfoString(info.getDict(), "Author", "Author: %s\n");
+ printInfoString(info.getDict(), "Creator", "Creator: %s\n");
+ printInfoString(info.getDict(), "Producer", "Producer: %s\n");
+ printInfoDate(info.getDict(), "CreationDate", "CreationDate: %s\n");
+ printInfoDate(info.getDict(), "ModDate", "ModDate: %s\n");
+ printf("Pages: %d\n", i->doc->getNumPages());
+ printf("Linearized: %s\n", i->doc->isLinearized() ? "yes" : "no");
+ printf("Encrypted: ");
+ if (i->doc->isEncrypted()) {
+ printf("yes (print:%s copy:%s change:%s addNotes:%s)\n",
+ i->doc->okToPrint() ? "yes" : "no",
+ i->doc->okToCopy() ? "yes" : "no",
+ i->doc->okToChange() ? "yes" : "no",
+ i->doc->okToAddNotes() ? "yes" : "no");
+ } else {
+ printf("no\n");
+ }
+ }
+ info.free();
+
+ pdf_doc->num_pages = i->doc->getNumPages();
+ i->protect = 0;
+ if (i->doc->isEncrypted()) {
+ if(!i->doc->okToCopy()) {
+ printf("PDF disallows copying. Terminating.\n");
+ exit(1); //bail out
+ }
+ if(!i->doc->okToChange() || !i->doc->okToAddNotes())
+ i->protect = 1;
+ }
+
+ return pdf_doc;
+}
+
+void pdfswf_preparepage(int page)
+{
+ /*FIXME*/
+ if(!pages) {
+ pages = (int*)malloc(1024*sizeof(int));
+ pagebuflen = 1024;
+ } else {
+ if(pagepos == pagebuflen)
+ {
+ pagebuflen+=1024;
+ pages = (int*)realloc(pages, pagebuflen);