OLD | NEW |
1 // Copyright 2016 PDFium Authors. All rights reserved. | 1 // Copyright 2016 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/fpdfdoc/cpdf_interform.h" | 7 #include "core/fpdfdoc/cpdf_interform.h" |
8 | 8 |
9 #include <utility> | 9 #include <utility> |
10 #include <vector> | 10 #include <vector> |
(...skipping 1167 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1178 bFind = pdfium::ContainsValue(*fields, pField); | 1178 bFind = pdfium::ContainsValue(*fields, pField); |
1179 if (bIncludeOrExclude == bFind) { | 1179 if (bIncludeOrExclude == bFind) { |
1180 CPDF_Dictionary* pFieldDict = pField->m_pDict; | 1180 CPDF_Dictionary* pFieldDict = pField->m_pDict; |
1181 if ((dwFlags & 0x02) != 0 && pFieldDict->GetStringFor("V").IsEmpty()) | 1181 if ((dwFlags & 0x02) != 0 && pFieldDict->GetStringFor("V").IsEmpty()) |
1182 return pField; | 1182 return pField; |
1183 } | 1183 } |
1184 } | 1184 } |
1185 return nullptr; | 1185 return nullptr; |
1186 } | 1186 } |
1187 | 1187 |
1188 CFDF_Document* CPDF_InterForm::ExportToFDF(const CFX_WideStringC& pdf_path, | 1188 std::unique_ptr<CFDF_Document> CPDF_InterForm::ExportToFDF( |
1189 bool bSimpleFileSpec) const { | 1189 const CFX_WideStringC& pdf_path, |
| 1190 bool bSimpleFileSpec) const { |
1190 std::vector<CPDF_FormField*> fields; | 1191 std::vector<CPDF_FormField*> fields; |
1191 size_t nCount = m_pFieldTree->m_Root.CountFields(); | 1192 size_t nCount = m_pFieldTree->m_Root.CountFields(); |
1192 for (size_t i = 0; i < nCount; ++i) | 1193 for (size_t i = 0; i < nCount; ++i) |
1193 fields.push_back(m_pFieldTree->m_Root.GetFieldAtIndex(i)); | 1194 fields.push_back(m_pFieldTree->m_Root.GetFieldAtIndex(i)); |
1194 return ExportToFDF(pdf_path, fields, true, bSimpleFileSpec); | 1195 return ExportToFDF(pdf_path, fields, true, bSimpleFileSpec); |
1195 } | 1196 } |
1196 | 1197 |
1197 CFDF_Document* CPDF_InterForm::ExportToFDF( | 1198 std::unique_ptr<CFDF_Document> CPDF_InterForm::ExportToFDF( |
1198 const CFX_WideStringC& pdf_path, | 1199 const CFX_WideStringC& pdf_path, |
1199 const std::vector<CPDF_FormField*>& fields, | 1200 const std::vector<CPDF_FormField*>& fields, |
1200 bool bIncludeOrExclude, | 1201 bool bIncludeOrExclude, |
1201 bool bSimpleFileSpec) const { | 1202 bool bSimpleFileSpec) const { |
1202 CFDF_Document* pDoc = CFDF_Document::CreateNewDoc(); | 1203 std::unique_ptr<CFDF_Document> pDoc = CFDF_Document::CreateNewDoc(); |
1203 if (!pDoc) | 1204 if (!pDoc) |
1204 return nullptr; | 1205 return nullptr; |
1205 | 1206 |
1206 CPDF_Dictionary* pMainDict = pDoc->GetRoot()->GetDictFor("FDF"); | 1207 CPDF_Dictionary* pMainDict = pDoc->GetRoot()->GetDictFor("FDF"); |
1207 if (!pdf_path.IsEmpty()) { | 1208 if (!pdf_path.IsEmpty()) { |
1208 if (bSimpleFileSpec) { | 1209 if (bSimpleFileSpec) { |
1209 CFX_WideString wsFilePath = CPDF_FileSpec::EncodeFileName(pdf_path); | 1210 CFX_WideString wsFilePath = CPDF_FileSpec::EncodeFileName(pdf_path); |
1210 pMainDict->SetNewFor<CPDF_String>( | 1211 pMainDict->SetNewFor<CPDF_String>( |
1211 "F", CFX_ByteString::FromUnicode(wsFilePath), false); | 1212 "F", CFX_ByteString::FromUnicode(wsFilePath), false); |
1212 pMainDict->SetNewFor<CPDF_String>("UF", PDF_EncodeText(wsFilePath), | 1213 pMainDict->SetNewFor<CPDF_String>("UF", PDF_EncodeText(wsFilePath), |
(...skipping 96 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1309 else if (iType == FIELDTYPE_LISTBOX) | 1310 else if (iType == FIELDTYPE_LISTBOX) |
1310 m_pFormNotify->AfterSelectionChange(pField); | 1311 m_pFormNotify->AfterSelectionChange(pField); |
1311 else if (iType == FIELDTYPE_COMBOBOX || iType == FIELDTYPE_TEXTFIELD) | 1312 else if (iType == FIELDTYPE_COMBOBOX || iType == FIELDTYPE_TEXTFIELD) |
1312 m_pFormNotify->AfterValueChange(pField); | 1313 m_pFormNotify->AfterValueChange(pField); |
1313 } | 1314 } |
1314 } | 1315 } |
1315 | 1316 |
1316 void CPDF_InterForm::SetFormNotify(IPDF_FormNotify* pNotify) { | 1317 void CPDF_InterForm::SetFormNotify(IPDF_FormNotify* pNotify) { |
1317 m_pFormNotify = pNotify; | 1318 m_pFormNotify = pNotify; |
1318 } | 1319 } |
OLD | NEW |