如何在MFC中使用mupdf? [英] how to use mupdf in mfc?

查看:241
本文介绍了如何在MFC中使用mupdf?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

pdf_page *page;
error=pdf_load_page(&page,xref,0);


我想参考一下,该怎么办?


I want to draw on view, what should I do?

推荐答案

pdfapp_t *app=new pdfapp_t;
	memset(app, 0, sizeof(pdfapp_t));
	app->scrw = 640;
	app->scrh = 480;
	app->resolution = 72;
	fz_error error;
	fz_stream *file;
	fz_obj *obj;
	fz_obj *info;
	file=fz_open_fd(0);
	int fd = _wopen(L"1.pdf", O_BINARY | O_RDONLY, 0666);
	if(fd<0)
		MessageBox("not exists file");
	file=fz_open_fd(fd);
	error=pdf_open_xref_with_stream(&app->xref,file,NULL);
	if(error)
		MessageBox("not exists file");
	fz_close(file);
	app->outline=pdf_load_outline(app->xref);
	info=fz_dict_gets(app->xref->trailer,"info");
	if(info)
	{
		obj=fz_dict_gets(info,"Title");
		if(obj)
			app->doctitle=pdf_to_utf8(obj);
	}
	error=pdf_load_page_tree(app->xref);
	if(error)
		MessageBox("not exists file");
	app->pagecount=pdf_count_pages(app->xref);
	CString s;
	fz_obj *infos=fz_dict_gets(app->xref->trailer,"Info");
	if(!infos)
		return ;
	if ((obj = fz_dict_gets(infos, "ModDate")));
	app->cache = fz_new_glyph_cache();
	//unsigned short * ucs;
	//ucs = pdf_to_ucs2(obj);
	//MessageBox((LPCTSTR)ucs);
	//fz_free(ucs);
	pdf_page *page;
	fz_device *mdev;
	app->pageno=1;
	error=pdf_load_page(&page,app->xref,app->pageno-1);
	if(error)
		MessageBox("加载pdf失败");
	HDC hdc=::GetDC(m_hWnd);
	fz_matrix ctm;
	fz_bbox bbox1;
	fz_pixmap *image=NULL;
	double zoomreal=1/100.0;
	ctm=viewctm(page, zoomreal, 0);


	//bbox1=page->mediabox;
	fz_colorspace *colorspace = fz_device_bgr;
	image = fz_new_pixmap_with_rect(colorspace, bbox1);
	//fz_clear_pixmap_with_color(image, 255);

	ConvertPixmapForWindows(image);
	int bmpDx = image->w;
	int bmpDy = image->h;
	int bmpRowSize = ((image->w * 3 + 3) / 4) * 4;
	BITMAPINFOHEADER bmih;
	bmih.biSize = sizeof(bmih);
	bmih.biHeight = -bmpDy;
	bmih.biWidth = bmpDx;
	bmih.biPlanes = 1;
	bmih.biBitCount = 24;
	bmih.biCompression = BI_RGB;
	bmih.biSizeImage = bmpDy * bmpRowSize;;
	bmih.biXPelsPerMeter = bmih.biYPelsPerMeter = 0;
	bmih.biClrUsed = bmih.biClrImportant = 0;
	unsigned char* bmpData = image->samples;
	::StretchDIBits(hdc,
		// destination rectangle
		0,0, 100, 100,
		// source rectangle
		0, 0, bmpDx, bmpDy,
		bmpData,
		(BITMAPINFO *)&bmih ,
		DIB_RGB_COLORS,
		SRCCOPY);


我想在mfc对话框的hdc上显示pdf,但是我失败了,您能帮我吗?或者如此,您能告诉我一些使用mfc的基于mupdf的项目吗?


i want to show pdf on hdc of mfc dialog,but i failed,can you help me!or so,can you tell me some project based on mupdf using mfc


这篇关于如何在MFC中使用mupdf?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆