Я использую библиотеку PDFWriter для создания PDF-файла и добавления к нему изображения.Теперь мне нужно удалить изображение из файла PDF, как только пользователь нажмет кнопку «Удалить».Вот часть кода:
PDFWriter pdfWriter;
pdfWriter.ModifyPDF(inputFilePath, ePDFVersion13, "");
PDFParser& parser = pdfWriter.GetModifiedFileParser();
ObjectIDType imageID = pdfWriter.GetObjectsContext().GetInDirectObjectsRegistry().AllocateNewObjectID();
StoreInDatabase(imageID);
PDFModifiedPage modifiedPage(&pdfWriter, 0, true);
AbstractContentContext* pContentContext = modifiedPage.StartContentContext();
pContentContext->q();
pContentContext->cm(1, 0, 0, 1, imagePositionX, imagePositionY);
pContentContext->Do(modifiedPage.GetCurrentResourcesDictionary()->AddImageXObjectMapping(imageID));
pContentContext->Q();
modifiedPage.EndContentContext();
modifiedPage.WritePage();
// Create image xobject
PDFFormXObject* imageXObject = pdfWriter.CreateFormXObjectFromPNGFile(imagePath, imageID);
pdfWriter.EndPDF();
Приведенный выше код работает для добавления изображения в pdf в виде водяного знака.Теперь мне нужно удалить изображение из pdf:
PDFWriter pdfWriter;
pdfWriter.ModifyPDF(strFilePath, ePDFVersion13, strFilePath);
PDFParser& parser = pdfWriter.GetModifiedFileParser();
PDFParser* pdfParser = new PDFParser(parser);
PDFModifiedPage modifiedPage(&pdfWriter, pageIndex, true);
AbstractContentContext* pContentContext = modifiedPage.StartContentContext();
ObjectIDType imageID = GetImageIdFromDatabase();
pdfWriter.GetObjectsContext().GetInDirectObjectsRegistry().DeleteObject(imageID);
modifiedPage.EndContentContext();
modifiedPage.WritePage();
pdfWriter.EndPDF();
Однако после запуска этого кода и открытия pdf-файла отобразится следующее диалоговое окно: ![enter image description here](https://i.stack.imgur.com/58VFZ.png)
После того, как я нажму OK, pdf отобразится корректно.
Есть ли способ удалить добавленное изображение, не показывая диалоговое окно с ошибкой?
Вот что-то о XObject:https://github.com/galkahana/PDF-Writer/wiki/Using-Form-XObjects
Я пытался с
pdfWriter.GetObjectsContext().StartNewIndirectObject(imageID);
pdfWriter.GetObjectsContext().EndIndirectObject();
Но никто из них не может решить мою проблему.