Я использую библиотеку PDFWriter для создания PDF-файлов и добавления водяных знаков к нему.Водяной знак - это файл изображения, я добавляю его в pdf, создавая XObject
, и он даст мне идентификатор объекта.Теперь мне нужно открыть созданный файл PDF и удалить добавленный водяной знак.Мне нужно извлечь идентификатор сохраненного объекта из сгенерированного файла PDF, но мой код не работает.
Вот код хранения водяного знака для изображения объекта Идентификатор:
PDFWriter pdfWriter;
pdfWriter.ModifyPDF(strFilePath, ePDFVersion13, "");
ObjectIDType imageXObjectID = pdfWriter.GetObjectsContext().GetInDirectObjectsRegistry().AllocateNewObjectID();
std::string strImageXObjID = std::to_string(static_cast<unsigned long>(imageXObjectID));
/*
Do something here to write the pdf
*/
PDFTextString newId(strImageXObjID);
DocumentContext& dc = pdfWriter.GetDocumentContext();
TrailerInformation& ti = dc.GetTrailerInformation();
InfoDictionary& infoDict = ti.GetInfo();
infoDict.AddAdditionalInfoEntry("watermark", newId);
pdfWriter.CreateFormXObjectFromPNGFile(strWatermarkPath, imageXObjectID);
pdfWriter.EndPDF();
Тогдапрограмма выходит и файл PDF там.Я открываю сгенерированный файл PDF, идентификатор там:
Затем я хочу получить идентификатор сохраненного объекта из файла PDF, когда пользователь снова откроет программу,
PDFWriter pdfWriter;
// modify existing file in-place
pdfWriter.ModifyPDF(strFilePath, ePDFVersion13, strFilePath);
PDFParser& parser = pdfWriter.GetModifiedFileParser();
DocumentContext& dc = pdfWriter.GetDocumentContext();
TrailerInformation& ti = dc.GetTrailerInformation();
InfoDictionary& infoDict = ti.GetInfo();
std::string watermarkID = infoDict.GetAdditionalInfoEntry("watermark").ToString();
Но watermarkID
- пустая строка.Я проверил исходный код PDFWriter
, я не нашел ни одного работающего кода, такого как «прочитать и сохранить информацию о трейлере из переданного файла pdf в pdfwriter».Вот ссылка на pdfwriter: https://github.com/galkahana/PDF-Writer/blob/master/PDFWriter/PDFWriter.cpp Есть ли способ сохранить и извлечь imageId из pdf-файла?
Я знаю, что могу просто сохранить идентификатор изображения в текстовом файле и прочитать егокогда программа открывает PDF-файл, но я предпочитаю получать информацию из PDF-файла напрямую.