1 #ifndef QPDF_PDFTOPDF_PROCESSOR_H
2 #define QPDF_PDFTOPDF_PROCESSOR_H
4 #include "pdftopdf_processor.h"
5 #include <qpdf/QPDF.hh>
7 class QPDF_PDFTOPDF_PageHandle : public PDFTOPDF_PageHandle {
9 virtual PageRect getRect() const;
10 virtual void add_border_rect(const PageRect &rect,BorderType border,float fscale);
11 virtual void add_subpage(const std::shared_ptr<PDFTOPDF_PageHandle> &sub,float xpos,float ypos,float scale,const PageRect *crop=NULL);
12 virtual void mirror();
13 virtual void rotate(Rotation rot);
15 void debug(const PageRect &rect,float xpos,float ypos);
17 bool isExisting() const;
18 QPDFObjectHandle get(); // only once!
20 friend class QPDF_PDFTOPDF_Processor;
22 QPDF_PDFTOPDF_PageHandle(QPDFObjectHandle page,int orig_no=-1);
23 QPDFObjectHandle page;
26 // 2nd mode: create new
27 QPDF_PDFTOPDF_PageHandle(QPDF *pdf,float width,float height);
28 std::map<std::string,QPDFObjectHandle> xobjs;
34 class QPDF_PDFTOPDF_Processor : public PDFTOPDF_Processor {
36 virtual bool loadFile(FILE *f,ArgOwnership take=WillStayAlive);
37 virtual bool loadFilename(const char *name);
39 // TODO: virtual bool may_modify/may_print/?
40 virtual bool check_print_permissions();
42 // virtual bool setProcess(const ProcessingParameters ¶m) =0;
44 virtual std::vector<std::shared_ptr<PDFTOPDF_PageHandle>> get_pages();
45 virtual std::shared_ptr<PDFTOPDF_PageHandle> new_page(float width,float height);
47 virtual void add_page(std::shared_ptr<PDFTOPDF_PageHandle> page,bool front);
49 virtual void multiply(int copies,bool collate);
51 virtual void autoRotateAll(bool dst_lscape,Rotation normal_landscape);
52 virtual void addCM(const char *defaulticc,const char *outputicc);
54 virtual void setComments(const std::vector<std::string> &comments);
56 virtual void emitFile(FILE *dst,ArgOwnership take=WillStayAlive);
57 virtual void emitFilename(const char *name);
61 void error(const char *fmt,...);
64 std::unique_ptr<QPDF> pdf;
65 std::vector<QPDFObjectHandle> orig_pages;
68 std::string extraheader;