如何在MFC中使用mupdf? [英] how to use mupdf in mfc?
本文介绍了如何在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屋!
查看全文