Как прочитать сохраненную информацию о трейлере из PDF (библиотека PDFWriter) - PullRequest
0 голосов
/ 16 апреля 2019

Я использую библиотеку 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, идентификатор там: enter image description here

Затем я хочу получить идентификатор сохраненного объекта из файла 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-файла напрямую.

...