目前我已经使用 FPDF_RenderPageBitmap 方法将 PDF 页面生成为位图。
有什么方法可以将 PDF 页面呈现为 EMF 或 PDFium 中的元文件?
在 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));
}
在 Windows 上,您要调用FPDF_RenderPage
并传入HDC
this 应该允许您获取 EMF 数据。您可以查看铬打印代码示例用法。还有一个FPDF_SetPrintMode
可以让你设置不同的模式。