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;
54 PdfObjectOutputStream(PdfObjectStream& stream, PdfFilterList&& filters,
55 bool raw,
bool append);
56 PdfObjectOutputStream(PdfObjectStream& stream);
58 PdfObjectOutputStream(PdfObjectStream& stream, nullable<PdfFilterList> filters,
59 bool raw,
bool append,
bool skipSetDirty);
61 void writeBuffer(
const char* buffer,
size_t size)
override;
62 void flush()
override;
64 PdfObjectOutputStream& operator=(PdfObjectOutputStream&& rhs)
noexcept;
66 PdfObjectStream* m_stream;
67 std::unique_ptr<OutputStream> m_output;
84 friend class PdfObjectInputStream;
85 friend class PdfObjectOutputStream;
99 PdfObjectOutputStream GetOutputStreamRaw(
bool append =
false);
101 PdfObjectOutputStream GetOutputStreamRaw(
const PdfFilterList&
filters,
bool append =
false);
103 PdfObjectOutputStream GetOutputStream(
bool append =
false);
105 PdfObjectOutputStream GetOutputStream(
const PdfFilterList&
filters,
bool append =
false);
107 PdfObjectInputStream GetInputStream(
bool raw =
false)
const;
180 size_t GetLength()
const;
182 const PdfFilterList& GetFilters() {
return m_Filters; }
191 const PdfObjectStreamProvider& GetProvider()
const {
return *m_Provider; }
193 const PdfObject& GetParent()
const {
return *m_Parent; }
195 PdfObject& GetParent() {
return *m_Parent; }
213 PdfObjectStreamProvider& GetProvider() {
return *m_Provider; }
216 void ensureClosed()
const;
218 std::unique_ptr<InputStream> getInputStream(
bool raw, PdfFilterList&
mediaFilters,
229 std::unique_ptr<PdfObjectStreamProvider> m_Provider;
230 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:15
A PDF stream can be appended to any PdfObject and can contain arbitrary data.
Definition PdfObjectStream.h:82
This class represents a PDF indirect Object in memory.
Definition PdfObject.h:31
Convenient type for char array storage and/or buffer with std::string compatibility.
Definition basetypes.h:30
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:15