1
//========================================================================
5
// This file is licensed under the GPLv2 or later
7
// Copyright 2010 Hib Eris <hib@hiberis.nl>
8
// Copyright 2010 Albert Astals Cid <aacid@kde.org>
10
//========================================================================
14
#include "PDFDocFactory.h"
16
#include "goo/GooList.h"
17
#include "goo/GooString.h"
19
#include "LocalPDFDocBuilder.h"
20
#include "StdinPDFDocBuilder.h"
22
#include "CurlPDFDocBuilder.h"
24
#include "ErrorCodes.h"
26
//------------------------------------------------------------------------
28
//------------------------------------------------------------------------
30
PDFDocFactory::PDFDocFactory(GooList *pdfDocBuilders)
33
builders = pdfDocBuilders;
35
builders = new GooList();
38
builders->insert(0, new CurlPDFDocBuilder());
40
builders->insert(0, new StdinPDFDocBuilder());
41
builders->insert(0, new LocalPDFDocBuilder());
44
PDFDocFactory::~PDFDocFactory()
47
deleteGooList(builders, PDFDocBuilder);
52
PDFDocFactory::createPDFDoc(const GooString &uri, GooString *ownerPassword,
53
GooString *userPassword, void *guiDataA)
55
for (int i = builders->getLength() - 1; i >= 0 ; i--) {
56
PDFDocBuilder *builder = (PDFDocBuilder *) builders->get(i);
57
if (builder->supports(uri)) {
58
return builder->buildPDFDoc(uri, ownerPassword, userPassword, guiDataA);
62
error(-1, "Cannot handle URI '%s'.", uri.getCString());
63
GooString *fileName = uri.copy();
64
return PDFDoc::ErrorPDFDoc(errOpenFile, fileName);
67
void PDFDocFactory::registerPDFDocBuilder(PDFDocBuilder *pdfDocBuilder)
69
builders->append(pdfDocBuilder);