OLD | NEW |
1 // Copyright 2014 PDFium Authors. All rights reserved. | 1 // Copyright 2014 PDFium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com | 5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com |
6 | 6 |
7 #include "core/fpdfapi/edit/editint.h" | 7 #include "core/fpdfapi/edit/editint.h" |
8 | 8 |
9 #include <memory> | 9 #include <memory> |
10 #include <vector> | 10 #include <vector> |
(...skipping 1295 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1306 if (!iRet) | 1306 if (!iRet) |
1307 continue; | 1307 continue; |
1308 | 1308 |
1309 if (pPause && pPause->NeedToPauseNow()) { | 1309 if (pPause && pPause->NeedToPauseNow()) { |
1310 m_Pos = (void*)(uintptr_t)(objnum + 1); | 1310 m_Pos = (void*)(uintptr_t)(objnum + 1); |
1311 return 1; | 1311 return 1; |
1312 } | 1312 } |
1313 } | 1313 } |
1314 return 0; | 1314 return 0; |
1315 } | 1315 } |
| 1316 |
1316 int32_t CPDF_Creator::WriteNewObjs(bool bIncremental, IFX_Pause* pPause) { | 1317 int32_t CPDF_Creator::WriteNewObjs(bool bIncremental, IFX_Pause* pPause) { |
1317 int32_t iCount = m_NewObjNumArray.GetSize(); | 1318 size_t iCount = m_NewObjNumArray.size(); |
1318 int32_t index = (int32_t)(uintptr_t)m_Pos; | 1319 size_t index = (size_t)(uintptr_t)m_Pos; |
1319 while (index < iCount) { | 1320 while (index < iCount) { |
1320 uint32_t objnum = m_NewObjNumArray.ElementAt(index); | 1321 uint32_t objnum = m_NewObjNumArray[index]; |
1321 CPDF_Object* pObj = m_pDocument->GetIndirectObject(objnum); | 1322 CPDF_Object* pObj = m_pDocument->GetIndirectObject(objnum); |
1322 if (!pObj) { | 1323 if (!pObj) { |
1323 ++index; | 1324 ++index; |
1324 continue; | 1325 continue; |
1325 } | 1326 } |
1326 m_ObjectOffset[objnum] = m_Offset; | 1327 m_ObjectOffset[objnum] = m_Offset; |
1327 if (WriteIndirectObj(pObj)) | 1328 if (WriteIndirectObj(pObj)) |
1328 return -1; | 1329 return -1; |
1329 | 1330 |
1330 index++; | 1331 index++; |
1331 if (pPause && pPause->NeedToPauseNow()) { | 1332 if (pPause && pPause->NeedToPauseNow()) { |
1332 m_Pos = (FX_POSITION)(uintptr_t)index; | 1333 m_Pos = (FX_POSITION)(uintptr_t)index; |
1333 return 1; | 1334 return 1; |
1334 } | 1335 } |
1335 } | 1336 } |
1336 return 0; | 1337 return 0; |
1337 } | 1338 } |
| 1339 |
1338 void CPDF_Creator::InitOldObjNumOffsets() { | 1340 void CPDF_Creator::InitOldObjNumOffsets() { |
1339 if (!m_pParser) { | 1341 if (!m_pParser) { |
1340 return; | 1342 return; |
1341 } | 1343 } |
1342 uint32_t j = 0; | 1344 uint32_t j = 0; |
1343 uint32_t dwStart = 0; | 1345 uint32_t dwStart = 0; |
1344 uint32_t dwEnd = m_pParser->GetLastObjNum(); | 1346 uint32_t dwEnd = m_pParser->GetLastObjNum(); |
1345 while (dwStart <= dwEnd) { | 1347 while (dwStart <= dwEnd) { |
1346 while (dwStart <= dwEnd && m_pParser->IsObjectFreeOrNull(dwStart)) | 1348 while (dwStart <= dwEnd && m_pParser->IsObjectFreeOrNull(dwStart)) |
1347 dwStart++; | 1349 dwStart++; |
(...skipping 18 matching lines...) Expand all Loading... |
1366 const CPDF_Object* pObj = pair.second.get(); | 1368 const CPDF_Object* pObj = pair.second.get(); |
1367 if (bIncremental || pObj->GetObjNum() == CPDF_Object::kInvalidObjNum) | 1369 if (bIncremental || pObj->GetObjNum() == CPDF_Object::kInvalidObjNum) |
1368 continue; | 1370 continue; |
1369 if (m_pParser && m_pParser->IsValidObjectNumber(objnum) && | 1371 if (m_pParser && m_pParser->IsValidObjectNumber(objnum) && |
1370 m_pParser->GetObjectType(objnum)) { | 1372 m_pParser->GetObjectType(objnum)) { |
1371 continue; | 1373 continue; |
1372 } | 1374 } |
1373 AppendNewObjNum(objnum); | 1375 AppendNewObjNum(objnum); |
1374 } | 1376 } |
1375 | 1377 |
1376 int32_t iCount = m_NewObjNumArray.GetSize(); | 1378 size_t iCount = m_NewObjNumArray.size(); |
1377 if (iCount == 0) | 1379 if (iCount == 0) |
1378 return; | 1380 return; |
1379 | 1381 |
1380 int32_t i = 0; | 1382 size_t i = 0; |
1381 uint32_t dwStartObjNum = 0; | 1383 uint32_t dwStartObjNum = 0; |
1382 bool bCrossRefValid = m_pParser && m_pParser->GetLastXRefOffset() > 0; | 1384 bool bCrossRefValid = m_pParser && m_pParser->GetLastXRefOffset() > 0; |
1383 while (i < iCount) { | 1385 while (i < iCount) { |
1384 dwStartObjNum = m_NewObjNumArray.ElementAt(i); | 1386 dwStartObjNum = m_NewObjNumArray[i]; |
1385 if ((bIncremental && (bNoOriginal || bCrossRefValid)) || | 1387 if ((bIncremental && (bNoOriginal || bCrossRefValid)) || |
1386 !m_ObjectOffset.GetPtrAt(dwStartObjNum)) { | 1388 !m_ObjectOffset.GetPtrAt(dwStartObjNum)) { |
1387 break; | 1389 break; |
1388 } | 1390 } |
1389 i++; | 1391 i++; |
1390 } | 1392 } |
1391 if (i >= iCount) | 1393 if (i >= iCount) |
1392 return; | 1394 return; |
1393 | 1395 |
1394 uint32_t dwLastObjNum = dwStartObjNum; | 1396 uint32_t dwLastObjNum = dwStartObjNum; |
1395 i++; | 1397 i++; |
1396 bool bNewStart = false; | 1398 bool bNewStart = false; |
1397 for (; i < iCount; i++) { | 1399 for (; i < iCount; i++) { |
1398 uint32_t dwCurObjNum = m_NewObjNumArray.ElementAt(i); | 1400 uint32_t dwCurObjNum = m_NewObjNumArray[i]; |
1399 bool bExist = m_pParser && m_pParser->IsValidObjectNumber(dwCurObjNum) && | 1401 bool bExist = m_pParser && m_pParser->IsValidObjectNumber(dwCurObjNum) && |
1400 m_ObjectOffset.GetPtrAt(dwCurObjNum); | 1402 m_ObjectOffset.GetPtrAt(dwCurObjNum); |
1401 if (bExist || dwCurObjNum - dwLastObjNum > 1) { | 1403 if (bExist || dwCurObjNum - dwLastObjNum > 1) { |
1402 if (!bNewStart) | 1404 if (!bNewStart) |
1403 m_ObjectOffset.Add(dwStartObjNum, dwLastObjNum - dwStartObjNum + 1); | 1405 m_ObjectOffset.Add(dwStartObjNum, dwLastObjNum - dwStartObjNum + 1); |
1404 dwStartObjNum = dwCurObjNum; | 1406 dwStartObjNum = dwCurObjNum; |
1405 } | 1407 } |
1406 if (bNewStart) | 1408 if (bNewStart) |
1407 dwStartObjNum = dwCurObjNum; | 1409 dwStartObjNum = dwCurObjNum; |
1408 | 1410 |
1409 bNewStart = bExist; | 1411 bNewStart = bExist; |
1410 dwLastObjNum = dwCurObjNum; | 1412 dwLastObjNum = dwCurObjNum; |
1411 } | 1413 } |
1412 m_ObjectOffset.Add(dwStartObjNum, dwLastObjNum - dwStartObjNum + 1); | 1414 m_ObjectOffset.Add(dwStartObjNum, dwLastObjNum - dwStartObjNum + 1); |
1413 } | 1415 } |
1414 | 1416 |
1415 void CPDF_Creator::AppendNewObjNum(uint32_t objbum) { | 1417 void CPDF_Creator::AppendNewObjNum(uint32_t objnum) { |
1416 int32_t iStart = 0, iFind = 0; | 1418 m_NewObjNumArray.insert(std::lower_bound(m_NewObjNumArray.begin(), |
1417 int32_t iEnd = m_NewObjNumArray.GetUpperBound(); | 1419 m_NewObjNumArray.end(), objnum), |
1418 while (iStart <= iEnd) { | 1420 objnum); |
1419 int32_t iMid = (iStart + iEnd) / 2; | |
1420 uint32_t dwMid = m_NewObjNumArray.ElementAt(iMid); | |
1421 if (objbum < dwMid) { | |
1422 iEnd = iMid - 1; | |
1423 } else { | |
1424 if (iMid == iEnd) { | |
1425 iFind = iMid + 1; | |
1426 break; | |
1427 } | |
1428 uint32_t dwNext = m_NewObjNumArray.ElementAt(iMid + 1); | |
1429 if (objbum < dwNext) { | |
1430 iFind = iMid + 1; | |
1431 break; | |
1432 } | |
1433 iStart = iMid + 1; | |
1434 } | |
1435 } | |
1436 m_NewObjNumArray.InsertAt(iFind, objbum); | |
1437 } | 1421 } |
| 1422 |
1438 int32_t CPDF_Creator::WriteDoc_Stage1(IFX_Pause* pPause) { | 1423 int32_t CPDF_Creator::WriteDoc_Stage1(IFX_Pause* pPause) { |
1439 ASSERT(m_iStage > -1 || m_iStage < 20); | 1424 ASSERT(m_iStage > -1 || m_iStage < 20); |
1440 if (m_iStage == 0) { | 1425 if (m_iStage == 0) { |
1441 if (!m_pParser) { | 1426 if (!m_pParser) { |
1442 m_dwFlags &= ~FPDFCREATE_INCREMENTAL; | 1427 m_dwFlags &= ~FPDFCREATE_INCREMENTAL; |
1443 } | 1428 } |
1444 if (m_bSecurityChanged && (m_dwFlags & FPDFCREATE_NO_ORIGINAL) == 0) { | 1429 if (m_bSecurityChanged && (m_dwFlags & FPDFCREATE_NO_ORIGINAL) == 0) { |
1445 m_dwFlags &= ~FPDFCREATE_INCREMENTAL; | 1430 m_dwFlags &= ~FPDFCREATE_INCREMENTAL; |
1446 } | 1431 } |
1447 CPDF_Dictionary* pDict = m_pDocument->GetRoot(); | 1432 CPDF_Dictionary* pDict = m_pDocument->GetRoot(); |
(...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1558 WriteNewObjs((m_dwFlags & FPDFCREATE_INCREMENTAL) != 0, pPause); | 1543 WriteNewObjs((m_dwFlags & FPDFCREATE_INCREMENTAL) != 0, pPause); |
1559 if (iRet) { | 1544 if (iRet) { |
1560 return iRet; | 1545 return iRet; |
1561 } | 1546 } |
1562 m_iStage = 27; | 1547 m_iStage = 27; |
1563 } | 1548 } |
1564 if (m_iStage == 27) { | 1549 if (m_iStage == 27) { |
1565 if (m_pEncryptDict && m_pEncryptDict->IsInline()) { | 1550 if (m_pEncryptDict && m_pEncryptDict->IsInline()) { |
1566 m_dwLastObjNum += 1; | 1551 m_dwLastObjNum += 1; |
1567 FX_FILESIZE saveOffset = m_Offset; | 1552 FX_FILESIZE saveOffset = m_Offset; |
1568 if (WriteIndirectObj(m_dwLastObjNum, m_pEncryptDict) < 0) { | 1553 if (WriteIndirectObj(m_dwLastObjNum, m_pEncryptDict) < 0) |
1569 return -1; | 1554 return -1; |
1570 } | 1555 |
1571 m_ObjectOffset.Add(m_dwLastObjNum, 1); | 1556 m_ObjectOffset.Add(m_dwLastObjNum, 1); |
1572 m_ObjectOffset[m_dwLastObjNum] = saveOffset; | 1557 m_ObjectOffset[m_dwLastObjNum] = saveOffset; |
1573 m_dwEncryptObjNum = m_dwLastObjNum; | 1558 m_dwEncryptObjNum = m_dwLastObjNum; |
1574 if (m_dwFlags & FPDFCREATE_INCREMENTAL) { | 1559 if (m_dwFlags & FPDFCREATE_INCREMENTAL) |
1575 m_NewObjNumArray.Add(m_dwLastObjNum); | 1560 m_NewObjNumArray.push_back(m_dwLastObjNum); |
1576 } | |
1577 } | 1561 } |
1578 m_iStage = 80; | 1562 m_iStage = 80; |
1579 } | 1563 } |
1580 return m_iStage; | 1564 return m_iStage; |
1581 } | 1565 } |
1582 int32_t CPDF_Creator::WriteDoc_Stage3(IFX_Pause* pPause) { | 1566 int32_t CPDF_Creator::WriteDoc_Stage3(IFX_Pause* pPause) { |
1583 ASSERT(m_iStage >= 80 || m_iStage < 90); | 1567 ASSERT(m_iStage >= 80 || m_iStage < 90); |
1584 uint32_t dwLastObjNum = m_dwLastObjNum; | 1568 uint32_t dwLastObjNum = m_dwLastObjNum; |
1585 if (m_iStage == 80) { | 1569 if (m_iStage == 80) { |
1586 m_XrefStart = m_Offset; | 1570 m_XrefStart = m_Offset; |
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1645 } | 1629 } |
1646 if (pPause && pPause->NeedToPauseNow()) { | 1630 if (pPause && pPause->NeedToPauseNow()) { |
1647 m_Pos = (void*)(uintptr_t)i; | 1631 m_Pos = (void*)(uintptr_t)i; |
1648 return 1; | 1632 return 1; |
1649 } | 1633 } |
1650 } | 1634 } |
1651 m_iStage = 90; | 1635 m_iStage = 90; |
1652 } | 1636 } |
1653 if (m_iStage == 82) { | 1637 if (m_iStage == 82) { |
1654 CFX_ByteString str; | 1638 CFX_ByteString str; |
1655 int32_t iCount = m_NewObjNumArray.GetSize(); | 1639 size_t iCount = m_NewObjNumArray.size(); |
1656 int32_t i = (int32_t)(uintptr_t)m_Pos; | 1640 size_t i = (size_t)(uintptr_t)m_Pos; |
1657 while (i < iCount) { | 1641 while (i < iCount) { |
1658 int32_t j = i; | 1642 size_t j = i; |
1659 uint32_t objnum = m_NewObjNumArray.ElementAt(i); | 1643 uint32_t objnum = m_NewObjNumArray[i]; |
1660 while (j < iCount) { | 1644 while (j < iCount) { |
1661 if (++j == iCount) { | 1645 if (++j == iCount) |
1662 break; | 1646 break; |
1663 } | 1647 uint32_t dwCurrent = m_NewObjNumArray[j]; |
1664 uint32_t dwCurrent = m_NewObjNumArray.ElementAt(j); | 1648 if (dwCurrent - objnum > 1) |
1665 if (dwCurrent - objnum > 1) { | |
1666 break; | 1649 break; |
1667 } | |
1668 objnum = dwCurrent; | 1650 objnum = dwCurrent; |
1669 } | 1651 } |
1670 objnum = m_NewObjNumArray.ElementAt(i); | 1652 objnum = m_NewObjNumArray[i]; |
1671 if (objnum == 1) { | 1653 if (objnum == 1) { |
1672 str.Format("0 %d\r\n0000000000 65535 f\r\n", j - i + 1); | 1654 str.Format("0 %d\r\n0000000000 65535 f\r\n", j - i + 1); |
1673 } else { | 1655 } else { |
1674 str.Format("%d %d\r\n", objnum, j - i); | 1656 str.Format("%d %d\r\n", objnum, j - i); |
1675 } | 1657 } |
1676 if (m_File.AppendBlock(str.c_str(), str.GetLength()) < 0) { | 1658 if (m_File.AppendBlock(str.c_str(), str.GetLength()) < 0) { |
1677 return -1; | 1659 return -1; |
1678 } | 1660 } |
1679 while (i < j) { | 1661 while (i < j) { |
1680 objnum = m_NewObjNumArray.ElementAt(i++); | 1662 objnum = m_NewObjNumArray[i++]; |
1681 str.Format("%010d 00000 n\r\n", m_ObjectOffset[objnum]); | 1663 str.Format("%010d 00000 n\r\n", m_ObjectOffset[objnum]); |
1682 if (m_File.AppendBlock(str.c_str(), str.GetLength()) < 0) { | 1664 if (m_File.AppendBlock(str.c_str(), str.GetLength()) < 0) |
1683 return -1; | 1665 return -1; |
1684 } | |
1685 } | 1666 } |
1686 if (pPause && (i % 100) == 0 && pPause->NeedToPauseNow()) { | 1667 if (pPause && (i % 100) == 0 && pPause->NeedToPauseNow()) { |
1687 m_Pos = (void*)(uintptr_t)i; | 1668 m_Pos = (void*)(uintptr_t)i; |
1688 return 1; | 1669 return 1; |
1689 } | 1670 } |
1690 } | 1671 } |
1691 m_iStage = 90; | 1672 m_iStage = 90; |
1692 } | 1673 } |
1693 return m_iStage; | 1674 return m_iStage; |
1694 } | 1675 } |
(...skipping 145 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1840 return -1; | 1821 return -1; |
1841 } | 1822 } |
1842 if (m_File.AppendDWord(m_dwLastObjNum * 5) < 0) { | 1823 if (m_File.AppendDWord(m_dwLastObjNum * 5) < 0) { |
1843 return -1; | 1824 return -1; |
1844 } | 1825 } |
1845 if (m_File.AppendString(">>stream\r\n") < 0) { | 1826 if (m_File.AppendString(">>stream\r\n") < 0) { |
1846 return -1; | 1827 return -1; |
1847 } | 1828 } |
1848 for (i = 0; i < m_dwLastObjNum; i++) { | 1829 for (i = 0; i < m_dwLastObjNum; i++) { |
1849 FX_FILESIZE* offset = m_ObjectOffset.GetPtrAt(i); | 1830 FX_FILESIZE* offset = m_ObjectOffset.GetPtrAt(i); |
1850 if (!offset) { | 1831 if (!offset) |
1851 continue; | 1832 continue; |
1852 } | |
1853 OutputIndex(&m_File, *offset); | 1833 OutputIndex(&m_File, *offset); |
1854 } | 1834 } |
1855 } else { | 1835 } else { |
1856 int count = m_NewObjNumArray.GetSize(); | 1836 size_t count = m_NewObjNumArray.size(); |
1857 int32_t i = 0; | 1837 size_t i = 0; |
1858 for (i = 0; i < count; i++) { | 1838 for (i = 0; i < count; i++) { |
1859 uint32_t objnum = m_NewObjNumArray.ElementAt(i); | 1839 if (m_File.AppendDWord(m_NewObjNumArray[i]) < 0) |
1860 if (m_File.AppendDWord(objnum) < 0) { | |
1861 return -1; | 1840 return -1; |
1862 } | 1841 if (m_File.AppendString(" 1 ") < 0) |
1863 if (m_File.AppendString(" 1 ") < 0) { | |
1864 return -1; | 1842 return -1; |
1865 } | |
1866 } | 1843 } |
1867 if (m_File.AppendString("]/Length ") < 0) { | 1844 if (m_File.AppendString("]/Length ") < 0) |
1868 return -1; | 1845 return -1; |
1869 } | 1846 if (m_File.AppendDWord(count * 5) < 0) |
1870 if (m_File.AppendDWord(count * 5) < 0) { | |
1871 return -1; | 1847 return -1; |
1872 } | 1848 if (m_File.AppendString(">>stream\r\n") < 0) |
1873 if (m_File.AppendString(">>stream\r\n") < 0) { | |
1874 return -1; | 1849 return -1; |
1875 } | |
1876 for (i = 0; i < count; i++) { | 1850 for (i = 0; i < count; i++) { |
1877 uint32_t objnum = m_NewObjNumArray.ElementAt(i); | 1851 uint32_t objnum = m_NewObjNumArray[i]; |
1878 FX_FILESIZE offset = m_ObjectOffset[objnum]; | 1852 FX_FILESIZE offset = m_ObjectOffset[objnum]; |
1879 OutputIndex(&m_File, offset); | 1853 OutputIndex(&m_File, offset); |
1880 } | 1854 } |
1881 } | 1855 } |
1882 if (m_File.AppendString("\r\nendstream") < 0) { | 1856 if (m_File.AppendString("\r\nendstream") < 0) |
1883 return -1; | 1857 return -1; |
1884 } | |
1885 } | 1858 } |
1886 } | 1859 } |
1887 if (m_File.AppendString("\r\nstartxref\r\n") < 0) { | 1860 if (m_File.AppendString("\r\nstartxref\r\n") < 0) { |
1888 return -1; | 1861 return -1; |
1889 } | 1862 } |
1890 FX_CHAR offset_buf[20]; | 1863 FX_CHAR offset_buf[20]; |
1891 FXSYS_memset(offset_buf, 0, sizeof(offset_buf)); | 1864 FXSYS_memset(offset_buf, 0, sizeof(offset_buf)); |
1892 FXSYS_i64toa(m_XrefStart, offset_buf, 10); | 1865 FXSYS_i64toa(m_XrefStart, offset_buf, 10); |
1893 if (m_File.AppendBlock(offset_buf, FXSYS_strlen(offset_buf)) < 0) { | 1866 if (m_File.AppendBlock(offset_buf, FXSYS_strlen(offset_buf)) < 0) { |
1894 return -1; | 1867 return -1; |
1895 } | 1868 } |
1896 if (m_File.AppendString("\r\n%%EOF\r\n") < 0) { | 1869 if (m_File.AppendString("\r\n%%EOF\r\n") < 0) { |
1897 return -1; | 1870 return -1; |
1898 } | 1871 } |
1899 m_File.Flush(); | 1872 m_File.Flush(); |
1900 return m_iStage = 100; | 1873 return m_iStage = 100; |
1901 } | 1874 } |
1902 | 1875 |
1903 void CPDF_Creator::Clear() { | 1876 void CPDF_Creator::Clear() { |
1904 m_pXRefStream.reset(); | 1877 m_pXRefStream.reset(); |
1905 m_File.Clear(); | 1878 m_File.Clear(); |
1906 m_NewObjNumArray.RemoveAll(); | 1879 m_NewObjNumArray.clear(); |
1907 m_pIDArray.reset(); | 1880 m_pIDArray.reset(); |
1908 } | 1881 } |
1909 | 1882 |
1910 bool CPDF_Creator::Create(const CFX_RetainPtr<IFX_WriteStream>& pFile, | 1883 bool CPDF_Creator::Create(const CFX_RetainPtr<IFX_WriteStream>& pFile, |
1911 uint32_t flags) { | 1884 uint32_t flags) { |
1912 m_File.AttachFile(pFile); | 1885 m_File.AttachFile(pFile); |
1913 return Create(flags); | 1886 return Create(flags); |
1914 } | 1887 } |
1915 | 1888 |
1916 bool CPDF_Creator::Create(uint32_t flags) { | 1889 bool CPDF_Creator::Create(uint32_t flags) { |
1917 m_dwFlags = flags; | 1890 m_dwFlags = flags; |
1918 m_iStage = 0; | 1891 m_iStage = 0; |
1919 m_Offset = 0; | 1892 m_Offset = 0; |
1920 m_dwLastObjNum = m_pDocument->GetLastObjNum(); | 1893 m_dwLastObjNum = m_pDocument->GetLastObjNum(); |
1921 m_ObjectOffset.Clear(); | 1894 m_ObjectOffset.Clear(); |
1922 m_NewObjNumArray.RemoveAll(); | 1895 m_NewObjNumArray.clear(); |
1923 InitID(); | 1896 InitID(); |
1924 if (flags & FPDFCREATE_PROGRESSIVE) | 1897 if (flags & FPDFCREATE_PROGRESSIVE) |
1925 return true; | 1898 return true; |
1926 return Continue(nullptr) > -1; | 1899 return Continue(nullptr) > -1; |
1927 } | 1900 } |
1928 | 1901 |
1929 void CPDF_Creator::InitID(bool bDefault) { | 1902 void CPDF_Creator::InitID(bool bDefault) { |
1930 CPDF_Array* pOldIDArray = m_pParser ? m_pParser->GetIDArray() : nullptr; | 1903 CPDF_Array* pOldIDArray = m_pParser ? m_pParser->GetIDArray() : nullptr; |
1931 bool bNewId = !m_pIDArray; | 1904 bool bNewId = !m_pIDArray; |
1932 if (bNewId) { | 1905 if (bNewId) { |
(...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2013 m_pCryptoHandler = nullptr; | 1986 m_pCryptoHandler = nullptr; |
2014 } | 1987 } |
2015 void CPDF_Creator::ResetStandardSecurity() { | 1988 void CPDF_Creator::ResetStandardSecurity() { |
2016 if (!m_bLocalCryptoHandler) | 1989 if (!m_bLocalCryptoHandler) |
2017 return; | 1990 return; |
2018 | 1991 |
2019 delete m_pCryptoHandler; | 1992 delete m_pCryptoHandler; |
2020 m_pCryptoHandler = nullptr; | 1993 m_pCryptoHandler = nullptr; |
2021 m_bLocalCryptoHandler = false; | 1994 m_bLocalCryptoHandler = false; |
2022 } | 1995 } |
OLD | NEW |