目前,我已使用FPDF_RenderPageBitmap方法将PDF页面生成为位图。
是否有任何方法可以将PDF页面呈现为EMF或PDF中的图元文件?
答案 0 :(得分:2)
在pdfium项目中,有一个示例文件夹,其中包含pdfium_test.cc文件,其中包含不同格式的输出示例。 PNG,EMF,BMP,TXT和PPM都在目前。
呈现EMF的当前代码
void WriteEmf(FPDF_PAGE page, const char* pdf_name, int num) {
int width = static_cast<int>(FPDF_GetPageWidth(page));
int height = static_cast<int>(FPDF_GetPageHeight(page));
char filename[256];
snprintf(filename, sizeof(filename), "%s.%d.emf", pdf_name, num);
HDC dc = CreateEnhMetaFileA(nullptr, filename, nullptr, nullptr);
HRGN rgn = CreateRectRgn(0, 0, width, height);
SelectClipRgn(dc, rgn);
DeleteObject(rgn);
SelectObject(dc, GetStockObject(NULL_PEN));
SelectObject(dc, GetStockObject(WHITE_BRUSH));
// If a PS_NULL pen is used, the dimensions of the rectangle are 1 pixel less.
Rectangle(dc, 0, 0, width + 1, height + 1);
FPDF_RenderPage(dc, page, 0, 0, width, height, 0,
FPDF_ANNOT | FPDF_PRINTING | FPDF_NO_CATCH);
DeleteEnhMetaFile(CloseEnhMetaFile(dc));
}
答案 1 :(得分:1)
在Windows上,您要调用FPDF_RenderPage
并传入HDC
,这样可以让您获取EMF数据。您可以看到铬印刷代码,例如用法。还有FPDF_SetPrintMode
可让您设置不同的模式。