5#ifndef PDF_OBJECT_STREAM_H
6#define PDF_OBJECT_STREAM_H
10#include "PdfEncrypt.h"
11#include <podofo/auxiliary/OutputStream.h>
12#include <podofo/auxiliary/InputStream.h>
13#include "PdfObjectStreamProvider.h"
20class PODOFO_API PdfObjectInputStream final :
public InputStream
22 friend class PdfObjectStream;
24 PdfObjectInputStream();
25 ~PdfObjectInputStream();
26 PdfObjectInputStream(PdfObjectInputStream&& rhs)
noexcept;
28 PdfObjectInputStream(PdfObjectStream& stream,
bool raw);
30 const PdfFilterList& GetMediaFilters()
const {
return m_MediaFilters; }
31 const std::vector<const PdfDictionary*>& GetMediaDecodeParms()
const {
return m_MediaDecodeParms; }
33 size_t readBuffer(
char* buffer,
size_t size,
bool& eof)
override;
34 bool readChar(
char& ch)
override;
36 PdfObjectInputStream& operator=(PdfObjectInputStream&& rhs)
noexcept;
38 PdfObjectStream* m_stream;
39 std::unique_ptr<InputStream> m_input;
40 PdfFilterList m_MediaFilters;
41 std::vector<const PdfDictionary*> m_MediaDecodeParms;
44class PODOFO_API PdfObjectOutputStream final :
public OutputStream
46 friend class PdfObjectStream;
48 PdfObjectOutputStream();
49 ~PdfObjectOutputStream();
50 PdfObjectOutputStream(PdfObjectOutputStream&& rhs)
noexcept;
56 PdfObjectOutputStream(PdfObjectStream& stream, PdfFilterList&& filters,
57 bool raw,
bool append);
58 PdfObjectOutputStream(PdfObjectStream& stream);
60 PdfObjectOutputStream(PdfObjectStream& stream, nullable<PdfFilterList> filters,
61 bool raw,
bool append,
bool skipSetDirty);
63 void writeBuffer(
const char* buffer,
size_t size)
override;
64 void flush()
override;
66 PdfObjectOutputStream& operator=(PdfObjectOutputStream&& rhs)
noexcept;
68 PdfObjectStream* m_stream;
69 std::unique_ptr<OutputStream> m_output;
87 friend class PdfObjectInputStream;
88 friend class PdfObjectOutputStream;
103 PdfObjectOutputStream GetOutputStreamRaw(
bool append =
false);
105 PdfObjectOutputStream GetOutputStreamRaw(
const PdfFilterList&
filters,
bool append =
false);
107 PdfObjectOutputStream GetOutputStream(
bool append =
false);
109 PdfObjectOutputStream GetOutputStream(
const PdfFilterList&
filters,
bool append =
false);
111 PdfObjectInputStream GetInputStream(
bool raw =
false)
const;
197 size_t GetLength()
const;
199 const PdfFilterList& GetFilters() {
return m_Filters; }
209 const PdfObjectStreamProvider& GetProvider()
const {
return *m_Provider; }
211 const PdfObject& GetParent()
const {
return *m_Parent; }
213 PdfObject& GetParent() {
return *m_Parent; }
234 PdfObjectStreamProvider& GetProvider() {
return *m_Provider; }
237 void ensureClosed()
const;
239 std::unique_ptr<InputStream> getInputStream(
bool raw, PdfFilterList&
mediaFilters,
250 std::unique_ptr<PdfObjectStreamProvider> m_Provider;
251 PdfFilterList m_Filters;
This file should be included as the FIRST file in every header of PoDoFo lib.
An interface for writing blocks of data to a data source.
Definition OutputStream.h:16
A PDF stream can be appended to any PdfObject and can contain arbitrary data.
Definition PdfObjectStream.h:85
This class represents a PDF indirect Object in memory.
Definition PdfObject.h:33
Convenient type for char array storage and/or buffer with std::string compatibility.
Definition basetypes.h:35
All classes, functions, types and enums of PoDoFo are members of these namespace.
Definition basetypes.h:13
cspan< char > bufferview
Convenient read-only char buffer span.
Definition basetypes.h:16