INT CALLBACK dloginfoproc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) { char buf[256]; pdf_xref *xref = gapp.xref; fz_obj *obj; switch(message) { case WM_INITDIALOG: SetDlgItemTextA(hwnd, 0x10, gapp.filename); sprintf(buf, "PDF %d.%d", xref->version / 10, xref->version % 10); SetDlgItemTextA(hwnd, 0x11, buf); if (xref->crypt) { sprintf(buf, "Standard %d bit %s", xref->crypt->length, xref->crypt->strf.method == PDF_CRYPT_AESV2 ? "AES" : "RC4"); SetDlgItemTextA(hwnd, 0x12, buf); strcpy(buf, ""); if (xref->crypt->p & (1 << 2)) strcat(buf, "print, "); if (xref->crypt->p & (1 << 3)) strcat(buf, "modify, "); if (xref->crypt->p & (1 << 4)) strcat(buf, "copy, "); if (xref->crypt->p & (1 << 5)) strcat(buf, "annotate, "); if (strlen(buf) > 2) buf[strlen(buf)-2] = 0; else strcpy(buf, "none"); SetDlgItemTextA(hwnd, 0x13, buf); } else { SetDlgItemTextA(hwnd, 0x12, "None"); SetDlgItemTextA(hwnd, 0x13, "n/a"); } if (!xref->info) return TRUE; #define SETUCS(ID) \ { \ fz_error error; \ unsigned short *ucs; \ error = pdf_toucs2(&ucs, obj); \ if (!error) \ { \ SetDlgItemTextW(hwnd, ID, ucs); \ fz_free(ucs); \ } \ } if ((obj = fz_dictgets(xref->info, "Title"))) SETUCS(0x20) if ((obj = fz_dictgets(xref->info, "Author"))) SETUCS(0x21) if ((obj = fz_dictgets(xref->info, "Subject"))) SETUCS(0x22) if ((obj = fz_dictgets(xref->info, "Keywords"))) SETUCS(0x23) if ((obj = fz_dictgets(xref->info, "Creator"))) SETUCS(0x24) if ((obj = fz_dictgets(xref->info, "Producer"))) SETUCS(0x25) if ((obj = fz_dictgets(xref->info, "CreationDate"))) SETUCS(0x26) if ((obj = fz_dictgets(xref->info, "ModDate"))) SETUCS(0x27) return TRUE; case WM_COMMAND: EndDialog(hwnd, 0); return TRUE; } return FALSE; }
INT CALLBACK dloginfoproc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) { char buf[256]; pdf_xref *xref = gapp.xref; fz_obj *info, *obj; switch(message) { case WM_INITDIALOG: SetDlgItemTextW(hwnd, 0x10, wbuf); if (!xref) { SetDlgItemTextA(hwnd, 0x11, "XPS"); SetDlgItemTextA(hwnd, 0x12, "None"); SetDlgItemTextA(hwnd, 0x13, "n/a"); return TRUE; } sprintf(buf, "PDF %d.%d", xref->version / 10, xref->version % 10); SetDlgItemTextA(hwnd, 0x11, buf); if (xref->crypt) { sprintf(buf, "Standard V%d %d-bit %s", pdf_get_crypt_revision(xref), pdf_get_crypt_length(xref), pdf_get_crypt_method(xref)); SetDlgItemTextA(hwnd, 0x12, buf); strcpy(buf, ""); if (pdf_has_permission(xref, PDF_PERM_PRINT)) strcat(buf, "print, "); if (pdf_has_permission(xref, PDF_PERM_CHANGE)) strcat(buf, "modify, "); if (pdf_has_permission(xref, PDF_PERM_COPY)) strcat(buf, "copy, "); if (pdf_has_permission(xref, PDF_PERM_NOTES)) strcat(buf, "annotate, "); if (strlen(buf) > 2) buf[strlen(buf)-2] = 0; else strcpy(buf, "none"); SetDlgItemTextA(hwnd, 0x13, buf); } else { SetDlgItemTextA(hwnd, 0x12, "None"); SetDlgItemTextA(hwnd, 0x13, "n/a"); } info = fz_dict_gets(xref->trailer, "Info"); if (!info) return TRUE; #define SETUCS(ID) \ { \ unsigned short *ucs; \ ucs = pdf_to_ucs2(obj); \ SetDlgItemTextW(hwnd, ID, ucs); \ fz_free(ucs); \ } if ((obj = fz_dict_gets(info, "Title"))) SETUCS(0x20); if ((obj = fz_dict_gets(info, "Author"))) SETUCS(0x21); if ((obj = fz_dict_gets(info, "Subject"))) SETUCS(0x22); if ((obj = fz_dict_gets(info, "Keywords"))) SETUCS(0x23); if ((obj = fz_dict_gets(info, "Creator"))) SETUCS(0x24); if ((obj = fz_dict_gets(info, "Producer"))) SETUCS(0x25); if ((obj = fz_dict_gets(info, "CreationDate"))) SETUCS(0x26); if ((obj = fz_dict_gets(info, "ModDate"))) SETUCS(0x27); return TRUE; case WM_COMMAND: EndDialog(hwnd, 1); return TRUE; } return FALSE; }