1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798 |
- // Copyright 2020 The Chromium Authors. All rights reserved.
- // Use of this source code is governed by a BSD-style license that can be
- // found in the LICENSE file.
- #ifndef PDF_DOCUMENT_METADATA_H_
- #define PDF_DOCUMENT_METADATA_H_
- #include <string>
- #include "base/time/time.h"
- namespace chrome_pdf {
- // These values are persisted to logs. Entries should not be renumbered and
- // numeric values should never be reused.
- enum class PdfVersion {
- kUnknown = 0,
- k1_0 = 1,
- k1_1 = 2,
- k1_2 = 3,
- k1_3 = 4,
- k1_4 = 5,
- k1_5 = 6,
- k1_6 = 7,
- k1_7 = 8,
- k1_8 = 9, // Not an actual version. Kept for metrics purposes.
- k2_0 = 10,
- kMaxValue = k2_0
- };
- // These values are persisted to logs. Entries should not be renumbered and
- // numeric values should never be reused.
- enum class FormType {
- kNone = 0,
- kAcroForm = 1,
- kXFAFull = 2,
- kXFAForeground = 3,
- kMaxValue = kXFAForeground
- };
- // Document properties, including those specified in the document information
- // dictionary (see section 14.3.3 "Document Information Dictionary" of the ISO
- // 32000-1:2008 spec).
- struct DocumentMetadata {
- DocumentMetadata();
- DocumentMetadata(const DocumentMetadata&) = delete;
- DocumentMetadata& operator=(const DocumentMetadata&) = delete;
- ~DocumentMetadata();
- // Version of the document.
- PdfVersion version = PdfVersion::kUnknown;
- // The size of the document in bytes.
- size_t size_bytes = 0;
- // Number of pages in the document.
- size_t page_count = 0;
- // Whether the document is optimized by linearization (see annex F "Linearized
- // PDF" of the ISO 32000-1:2008 spec).
- bool linearized = false;
- // Whether the document contains file attachments (see section 12.5.6.15 "File
- // Attachment Annotations" of the ISO 32000-1:2008 spec).
- bool has_attachments = false;
- // The type of form contained in the document.
- FormType form_type = FormType::kNone;
- // The document's title.
- std::string title;
- // The name of the document's creator.
- std::string author;
- // The document's subject.
- std::string subject;
- // The document's keywords.
- std::string keywords;
- // The name of the application that created the original document.
- std::string creator;
- // If the document's format was not originally PDF, the name of the
- // application that converted the document to PDF.
- std::string producer;
- // The date and time the document was created.
- base::Time creation_date;
- // The date and time the document was most recently modified.
- base::Time mod_date;
- };
- } // namespace chrome_pdf
- #endif // PDF_DOCUMENT_METADATA_H_
|