Ejemplo n.º 1
0
GtkWidget* get_pdf_toolbar(void(*callback)(gpointer, int, int)) {
    currentDocument->on_render = callback;
    GtkBox* vBox = gtk_box_new(GTK_ORIENTATION_VERTICAL, 4);

    GtkWidget* titleLabel = gtk_label_new(poppler_document_get_title(currentDocument->doc));

    gtk_box_pack_start (vBox, titleLabel, FALSE, FALSE, 4);

    GtkBox* hBox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 4);

    GtkButton* button_prev = gtk_button_new_with_label("<");
    GtkWidget* label_page = gtk_label_new("PAGE");
    get_page_label_text(label_page, currentDocument);
    currentDocument->page_label = label_page;
    GtkButton* button_next = gtk_button_new_with_label(">");

    g_signal_connect (button_prev, "clicked",
                      G_CALLBACK (click_prev_button), currentDocument);

    g_signal_connect (button_next, "clicked",
                      G_CALLBACK (click_next_button), currentDocument);

    gtk_box_pack_start (hBox, button_prev, FALSE, FALSE, 2);
    gtk_box_pack_start (hBox, label_page, FALSE, FALSE, 2);
    gtk_box_pack_start (hBox, button_next, FALSE, FALSE, 2);

    gtk_box_pack_start (vBox, hBox, FALSE, FALSE, 4);

    return vBox;
}
Ejemplo n.º 2
0
Archivo: pdf.c Proyecto: ecntrk/sb
char* main(int argc, char *argv[]){
static char fname[1000], uri[1008];

PopplerDocument *document;
PopplerPage  *page;
GList *list=NULL;
GError *err=NULL;
g_type_init();
strcpy(uri, "file://");
if (argc != 2){
printf("\nPlease enter the filename:  ");
scanf("%s",fname);
strcat(uri, fname);
}
else{
strcat(uri, argv[1]);
}
document = poppler_document_new_from_file(uri, NULL, &err);
if(!document){
	printf("\nError: couldn't open file : %s", uri);
	printf("%s\n", err->message);
        g_object_unref(err);
        return NULL;
}
printf("%s", poppler_document_get_title(document));
/*
printf("\nThe Author is : %s", poppler_document_get_author(document));
printf("\nThe keywords is : %s", poppler_document_get_keywords(document));
printf("\nThe creator is : %s", poppler_document_get_creator(document));
printf("\nThe subject is : %s", poppler_document_get_subject(document));

page =  poppler_document_get_page(document, 1);
printf("\n\n%s", poppler_page_get_text(page));

while (!list){
//gpointer data;
//list = g_list_remove(list ,data) ;
//PopplerTextAttribute *dat = POPPLER_TEXT_ATTRIBUTES(data);
printf("\nthe fontsize is : %p", list->  data);
list = list->next;
}

poppler_page_free_text_attributes(list);
*/

//strcpy(fname, poppler_document_get_title(document)); 
g_object_unref(document);
//g_object_unref(page);
//printf("\n%s",fname);
//return fname;

}
Ejemplo n.º 3
0
static void emPdfOpen(const char * args)
{
	const char * filePath;
	const char * label;
	char genericLabel[256];
	char uri[64+PATH_MAX];
	GError * err;
	emPdfInst * inst;
	PopplerPage * page;
	double width,height;
	int i,instId;

	filePath=args;
	if (!*filePath) {
		fprintf(stderr,"emPdfServerProc: emPdfOpen: illegal arguments.\n");
		exit(1);
	}

	strcpy(uri,"file:");
	if (!realpath(filePath,uri+strlen(uri))) {
		printf(
			"error: Failed to read %s (%s)\n",
			filePath,
			strerror(errno)
		);
		return;
	}

	inst=(emPdfInst*)malloc(sizeof(emPdfInst));
	memset(inst,0,sizeof(emPdfInst));

	err=NULL;
	inst->doc=poppler_document_new_from_file(uri,NULL,&err);
	if (!inst->doc) {
		printf(
			"error: Failed to read %s (%s)\n",
			filePath,
			(err && err->message && err->message[0]) ? err->message : "unknown error"
		);
		if (err) g_error_free(err);
		free(inst);
		return;
	}

	for (instId=0; ; instId++) {
		if (instId==emPdfInstArraySize) {
			emPdfInstArraySize+=256;
			emPdfInstArray=(emPdfInst**)realloc(
				emPdfInstArray,
				emPdfInstArraySize*sizeof(emPdfInst*)
			);
			memset(
				emPdfInstArray+instId,
				0,
				(emPdfInstArraySize-instId)*sizeof(emPdfInst*)
			);
		}
		if (!emPdfInstArray[instId]) break;
	}
	emPdfInstArray[instId]=inst;

	printf("instance: %d\n",instId);

#if 0
	/* ???: Not in old version. */
	printf("title: %s\n",poppler_document_get_title(inst->doc));
	printf("author: %s\n",poppler_document_get_author(inst->doc));
	printf("subject: %s\n",poppler_document_get_subject(inst->doc));
	printf("keyword: %s\n",poppler_document_get_keyword(inst->doc));
	printf("creator: %s\n",poppler_document_get_creator(inst->doc));
	printf("producer: %s\n",poppler_document_get_produer(inst->doc));
	time_t t1=poppler_document_get_creation_date(inst->doc);
	time_t t2=poppler_document_get_modification_date(inst->doc);
	gboolean lin=poppler_document_is_linearized(inst->doc);
	PopplerPageLayout layout=poppler_document_get_page_layout(inst->doc);
	PopplerPageMode pageMode=poppler_document_get_page_mode(inst->doc);
	PopplerPermissions perm=poppler_document_get_permissions(inst->doc);
	gchar * metadata=poppler_document_get_metadata(inst->doc);
#endif

	inst->pageCount=poppler_document_get_n_pages(inst->doc);

	printf("pages: %d\n",inst->pageCount);

	for (i=0; i<inst->pageCount; i++) {
		sprintf(genericLabel,"%d",i+1);
		page = poppler_document_get_page(inst->doc,i);
		if (page) {
			poppler_page_get_size(page,&width,&height);
#if 0
			/* ???: Not in old version. */
			label=poppler_page_get_label(page);
#else
			label=NULL;
#endif
			if (!label || !*label) label=genericLabel;
			g_object_unref(page);
		}
		else {
			width=1000;
			height=1000;
			label=genericLabel;
		}
		printf("pageinfo: %d %.16lg %.16lg ",i,width,height);
		emPdfPrintQuoted(label);
		putchar('\n');
	}
	printf("ok\n");
}