Merge pull request 'Fix bugs 74268, 74307' (#298) from fix/pdf-bugs into release/v9.0.0

Reviewed-on: https://git.onlyoffice.com/ONLYOFFICE/core/pulls/298
This commit is contained in:
Oleg Korshul
2025-04-30 13:23:38 +00:00
4 changed files with 22 additions and 56 deletions

View File

@ -1048,7 +1048,7 @@ int main(int argc, char* argv[])
}
}
BYTE* pFileMerge = NULL;
if (true)
if (false)
{
int nBufferLen = NULL;
BYTE* pBuffer = NULL;
@ -1080,55 +1080,6 @@ int main(int argc, char* argv[])
MergePages(pGrFile, pSplitPages + 4, nLength - 4, 0, "merge1");
}
/*
if (GetFromBase64(NSFile::GetProcessDirectory() + L"/split2.txt", &pBuffer, &nBufferLen))
{
NSFile::CFileBinary oFile;
if (oFile.CreateFileW(NSFile::GetProcessDirectory() + L"/split2.pdf"))
oFile.WriteFile(pBuffer, nBufferLen);
oFile.CloseFile();
MergePages(pGrFile, pBuffer, nBufferLen, 0, "merge2");
}
if (GetFromBase64(NSFile::GetProcessDirectory() + L"/split1.txt", &pBuffer, &nBufferLen))
{
std::vector<int> arrPages = { 1 };
BYTE* pSplitPages = SplitPages(pGrFile, arrPages.data(), arrPages.size(), pBuffer, nBufferLen);
int nLength = READ_INT(pSplitPages);
MergePages(pGrFile, pSplitPages + 4, nLength - 4, 0, "merge");
}
if (GetFromBase64(NSFile::GetProcessDirectory() + L"/split2.txt", &pBuffer, &nBufferLen))
{
std::vector<int> arrPages = { 2 };
BYTE* pSplitPages = SplitPages(pGrFile, arrPages.data(), arrPages.size(), pBuffer, nBufferLen);
int nLength = READ_INT(pSplitPages);
MergePages(pGrFile, pSplitPages + 4, nLength - 4, 0, "merge");
}
if (GetFromBase64(NSFile::GetProcessDirectory() + L"/merge1.txt", &pBuffer, &nBufferLen))
{
if (MergePages(pGrFile, pBuffer, nBufferLen, 0, "merge1") == 0)
RELEASEARRAYOBJECTS(pFileMerge);
}
if (GetFromBase64(NSFile::GetProcessDirectory() + L"/split.txt", &pBuffer, &nBufferLen))
{
std::vector<int> arrPages = { 1 };
if (SplitPages(pGrFile, arrPages.data(), arrPages.size(), pBuffer, nBufferLen) == 0)
RELEASEARRAYOBJECTS(pFileMerge);
}
if (GetFromBase64(NSFile::GetProcessDirectory() + L"/merge2.txt", &pBuffer, &nBufferLen))
{
if (MergePages(pGrFile, pBuffer, nBufferLen, 0, "merge2") == 0)
RELEASEARRAYOBJECTS(pFileMerge);
}
*/
}
// INFO

View File

@ -1075,7 +1075,10 @@ CAnnotWidgetBtn::CAnnotWidgetBtn(PDFDoc* pdfDoc, AcroFormField* pField, int nSta
oField.free();
if (pField->fieldLookup("AS", &oObj)->isName())
{
m_sV = oObj.getName();
m_unFlags |= (1 << 9);
}
oObj.free();
Object oMK;

View File

@ -3291,10 +3291,22 @@ namespace PdfWriter
// Задний фон
m_pStream->WriteStr("q\012");
m_pStream->WriteStr(pAnnot->GetBGforAP(!bN && nBorderType != EBorderType::Beveled ? -0.250977 : 0).c_str());
m_pStream->WriteStr("\012");
StreamWriteRect(m_pStream, 0, 0, dW, dH);
m_pStream->WriteStr("f\012");
std::string sBG;
if (!bN && nBorderType != EBorderType::Beveled)
{
sBG = pAnnot->GetBGforAP(-0.250977);
if (sBG.empty())
sBG = "0.749023 g";
}
else
sBG = pAnnot->GetBGforAP();
if (!sBG.empty())
{
m_pStream->WriteStr(sBG.c_str());
m_pStream->WriteStr("\012");
StreamWriteRect(m_pStream, 0, 0, dW, dH);
m_pStream->WriteStr("f\012");
}
// Граница
if (nBorderType == EBorderType::Beveled || nBorderType == EBorderType::Inset)

View File

@ -352,7 +352,7 @@ TEST_F(CPdfFileTest, VerifySign)
TEST_F(CPdfFileTest, SplitPdf)
{
//GTEST_SKIP();
GTEST_SKIP();
LoadFromFile();
@ -436,7 +436,7 @@ TEST_F(CPdfFileTest, EditPdf)
TEST_F(CPdfFileTest, EditPdfFromBase64)
{
GTEST_SKIP();
//GTEST_SKIP();
NSFonts::NSApplicationFontStream::SetGlobalMemoryStorage(NSFonts::NSApplicationFontStream::CreateDefaultGlobalMemoryStorage());