FPDF_InitLibrary(); FPDF_DOCUMENT outdoc; string inpdf = "/home/lyd/work/gnpdf/441.pdf"; outdoc = FPDF_CreateNewDocument(); FPDF_PAGE page = FPDFPage_New(outdoc, 0, 612, 792); FPDF_PAGEOBJECT green_path = FPDFPageObj_CreateNewPath(20, 20); FPDFPath_SetFillColor(green_path, 0, 255, 0, 200); // TODO(npm): stroking will cause the MD5s to differ. FPDFPath_SetDrawMode(green_path, FPDF_FILLMODE_WINDING, 0); FPDFPath_LineTo(green_path, 20, 63); FPDFPath_BezierTo(green_path, 55, 55, 78, 78, 90, 90); FPDFPath_LineTo(green_path, 133, 133); FPDFPath_LineTo(green_path, 133, 33); FPDFPath_BezierTo(green_path, 38, 33, 39, 36, 40, 40); FPDFPath_Close(green_path); FPDFPage_InsertObject(page, green_path); string filename2 = "/home/lyd/work/gnpdf/me.pdf"; int fp = open(filename2.c_str(), O_RDWR|O_CREAT); PdfToFdWriter writer; writer.version = 1; writer.dstFd = fp; writer.WriteBlock = &writeBlock; FPDF_SaveAsCopy(outdoc, &writer, FPDF_NO_INCREMENTAL); FPDF_CloseDocument(outdoc); close(fp); FPDF_DestroyLibrary();