// -*- mode: c++; tab-width: 4; indent-tabs-mode: t; eval: (progn (c-set-style "stroustrup") (c-set-offset 'innamespace 0)); -*-
// vi:set ts=4 sts=4 sw=4 noet :
//
// Copyright 2010 wkhtmltopdf authors
//
// This file is part of wkhtmltopdf.
//
// wkhtmltopdf is free software: you can redistribute it and/or modify
// it under the terms of the GNU Lesser General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// wkhtmltopdf is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public License
// along with wkhtmltopdf. If not, see .
#ifndef __PDFSETTINGS_HH__
#define __PDFSETTINGS_HH__
#include
#include
#include
#include
#include
#include
namespace wkhtmltopdf {
namespace settings {
typedef QPair UnitReal;
/*! \brief Settings considering margins */
struct DLL_PUBLIC Margin {
Margin();
//!Margin applied to the top of the page
UnitReal top;
//!Margin applied to the right of the page
UnitReal right;
//!Margin applied to the bottom of the page
UnitReal bottom;
//!Margin applied to the leftp of the page
UnitReal left;
};
/*! \brief Settings considering page size */
struct DLL_PUBLIC Size {
Size();
//! What size paper should we use
QPrinter::PageSize pageSize;
//!Height of the page
UnitReal height;
//!Width of the page
UnitReal width;
};
/*! \brief Settings considering the table of content */
struct DLL_PUBLIC TableOfContent {
TableOfContent();
//! Should we print dots between the name and the page number?
bool useDottedLines;
//! Name af the TOC
QString captionText;
//! Link from TOC to section headers
bool forwardLinks;
//! Link from section headers to TOC
bool backLinks;
//! How fare should we indent on every level
QString indentation;
//! Factor we should scale the font with on every level
float fontScale;
};
/*! \brief Class holding all user setting.
This class holds all the user settings, settings can be filled in by hand,
or with other methods.
\sa CommandLineParser::parse()
*/
struct DLL_PUBLIC PdfGlobal {
PdfGlobal();
//! Size related settings
Size size;
//! Be less verbose
bool quiet;
//! Should we use the graphics system
bool useGraphics;
//! Should relative links be resolved or kept as-is
bool resolveRelativeLinks;
//! Should we orientate in landscape or portrate
QPrinter::Orientation orientation;
//! Color or grayscale
QPrinter::ColorMode colorMode;
//! What overall resolution should we use
QPrinter::PrinterMode resolution;
//! What dpi should be used when printing
int dpi;
//! When pagenumbers are printed, apply this offset to them all
int pageOffset;
//! How many copies do we wan to print
int copies;
//! Should be print a whole copy before beginning the next
bool collate;
//! Should we generate an outline and put it into the pdf file
bool outline;
//! Maximal depth of the generated outline
int outlineDepth;
//! dump outline to this filename
QString dumpOutline;
//! The file where in to store the output
QString out;
QString documentTitle;
bool useCompression;
//! Margin related settings
Margin margin;
QString viewportSize;
int imageDPI;
int imageQuality;
LoadGlobal load;
QString get(const char * name);
bool set(const char * name, const QString & value);
};
/*! \brief Settings considering headers and footers */
struct DLL_PUBLIC HeaderFooter {
HeaderFooter();
//! Size of the font used to render the text
int fontSize;
//! Name of font used to render text
QString fontName;
//! Text to render at the left
QString left;
//! Text to render at the right
QString right;
//! Text to render at the center
QString center;
//! Should a line seperate the header/footer and the document
bool line;
//! Url of the document the html document that should be used as a header/footer
QString htmlUrl;
//! Spacing
float spacing;
};
struct DLL_PUBLIC PdfObject {
PdfObject();
//! Settings regarding the TOC
TableOfContent toc;
QString page;
//! Header related settings
HeaderFooter header;
//! Header related settings
HeaderFooter footer;
//! Should external links be links in the PDF
bool useExternalLinks;
//! Should internal links be links in the PDF
bool useLocalLinks;
//! Replacements
QList< QPair > replacements;
//! Convert forms on the pages into PDF forms
bool produceForms;
LoadPage load;
Web web;
bool includeInOutline;
bool pagesCount;
bool isTableOfContent;
QString tocXsl;
QString get(const char * name);
bool set(const char * name, const QString & value);
};
DLL_PUBLIC QPrinter::PageSize strToPageSize(const char * s, bool * ok=0);
DLL_PUBLIC QString pageSizeToStr(QPrinter::PageSize ps);
DLL_PUBLIC UnitReal strToUnitReal(const char * s, bool * ok=0);
DLL_PUBLIC QString unitRealToStr(const UnitReal & ur, bool * ok);
DLL_PUBLIC QPrinter::Orientation strToOrientation(const char * s, bool * ok=0);
DLL_PUBLIC QString orientationToStr(QPrinter::Orientation o);
DLL_PUBLIC QPrinter::PrinterMode strToPrinterMode(const char * s, bool * ok=0);
DLL_PUBLIC QString printerModeToStr(QPrinter::PrinterMode o);
DLL_PUBLIC QPrinter::ColorMode strToColorMode(const char * s, bool * ok=0);
DLL_PUBLIC QString colorModeToStr(QPrinter::ColorMode o);
}
DLL_PUBLIC void dumpDefaultTOCStyleSheet(QTextStream & stream, settings::TableOfContent & s);
}
#include
#endif //__PDFSETTINGS_HH__