diff --git a/PdfFile/PdfEditor.cpp b/PdfFile/PdfEditor.cpp index 3f064f9f70..379be436d6 100644 --- a/PdfFile/PdfEditor.cpp +++ b/PdfFile/PdfEditor.cpp @@ -1097,8 +1097,19 @@ void CPdfEditor::RedactInfo(int nFlag) { if (m_nMode != Mode::Unknown) return; - m_pWriter->GetDocument()->RedactInfo(nFlag); + m_pWriter->GetDocument()->SetRedactInfo(nFlag); m_nRedactInfo = nFlag; + // 0 - Metadata + // 1 - FileAttachments + // 2 - Bookmarks + // 3 - Embedded search index + // 4 - Comments and markups + // 5 - Form Fields + // 6 - Hidden text + // 7 - Hidden layers + // 8 - Deleted or cropped content + // 9 - Links, actions and JavaScripts + // 10 - Overlapping Objects } bool CPdfEditor::IncrementalUpdates() { @@ -1678,6 +1689,8 @@ void CPdfEditor::Close() pEncryptDict->UpdateKey(nCryptAlgorithm); } + if (~m_nRedactInfo & (1 << 3)) + { Object* pNameTree = pPDFDocument->getCatalog()->getNameTree(); Object oNames, oName, oDest; if (pNameTree && pNameTree->isDict() && pNameTree->dictLookup("Names", &oNames)->isArray()) @@ -1719,6 +1732,7 @@ void CPdfEditor::Close() } } oNames.free(); + } m_pWriter->EditClose(); m_pWriter->SaveToFile(m_wsDstFile); diff --git a/PdfFile/SrcWriter/Document.cpp b/PdfFile/SrcWriter/Document.cpp index 8b094bbae5..5a37450235 100644 --- a/PdfFile/SrcWriter/Document.cpp +++ b/PdfFile/SrcWriter/Document.cpp @@ -123,32 +123,36 @@ namespace PdfWriter if (!m_pCatalog) return false; - m_pCatalog->SetPageMode(pagemode_UseNone); - m_pCatalog->SetPageLayout(pagelayout_OneColumn); + if (!m_nRedactInfo) + { + m_pCatalog->SetPageMode(pagemode_UseNone); + m_pCatalog->SetPageLayout(pagelayout_OneColumn); + } m_pPageTree = m_pCatalog->GetRoot(); if (!m_pPageTree) return false; - m_pInfo = new CInfoDict(m_pXref); - if (!m_pInfo) - return false; + if (~m_nRedactInfo & (1 << 0)) + m_pInfo = new CInfoDict(m_pXref); + if (m_pInfo) + { + m_pInfo->SetTime(InfoCreationDate); + m_pInfo->SetTime(InfoModaDate); - m_pInfo->SetTime(InfoCreationDate); - m_pInfo->SetTime(InfoModaDate); + std::wstring sCreator = NSSystemUtils::GetEnvVariable(NSSystemUtils::gc_EnvApplicationName); + if (sCreator.empty()) + sCreator = NSSystemUtils::gc_EnvApplicationNameDefault; + std::string sCreatorA = NSFile::CUtf8Converter::GetUtf8StringFromUnicode(sCreator); - std::wstring sCreator = NSSystemUtils::GetEnvVariable(NSSystemUtils::gc_EnvApplicationName); - if (sCreator.empty()) - sCreator = NSSystemUtils::gc_EnvApplicationNameDefault; - std::string sCreatorA = NSFile::CUtf8Converter::GetUtf8StringFromUnicode(sCreator); + #if defined(INTVER) + std::string sVersion = VALUE2STR(INTVER); + sCreatorA += ("/" + sVersion); + #endif -#if defined(INTVER) - std::string sVersion = VALUE2STR(INTVER); - sCreatorA += ("/" + sVersion); -#endif - - m_pInfo->SetInfo(InfoProducer, sCreatorA.c_str()); - m_pInfo->SetInfo(InfoCreator, sCreatorA.c_str()); + m_pInfo->SetInfo(InfoProducer, sCreatorA.c_str()); + m_pInfo->SetInfo(InfoCreator, sCreatorA.c_str()); + } if (IsPDFA()) { @@ -256,7 +260,8 @@ namespace PdfWriter } void CDocument::SaveToStream(CStream* pStream) { - m_pCatalog->AddMetadata(m_pXref, m_pInfo); + if (~m_nRedactInfo & (1 << 0)) + m_pCatalog->AddMetadata(m_pXref, m_pInfo); // Пишем заголовок if (IsPDFA()) @@ -272,7 +277,8 @@ namespace PdfWriter // Добавляем в Trailer необходимые элементы m_pTrailer->Add("Root", m_pCatalog); - m_pTrailer->Add("Info", m_pInfo); + if (~m_nRedactInfo & (1 << 0)) + m_pTrailer->Add("Info", m_pInfo); // Шифруем документ, если это необходимо CEncrypt* pEncrypt = NULL;