123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231 |
- // -*- 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-2020 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 <http://www.gnu.org/licenses/>.
- #ifndef __PDFSETTINGS_HH__
- #define __PDFSETTINGS_HH__
- #include <QNetworkProxy>
- #include <QPrinter>
- #include <QString>
- #include <logging.hh>
- #include <loadsettings.hh>
- #include <websettings.hh>
- #include <dllbegin.inc>
- namespace wkhtmltopdf {
- namespace settings {
- typedef QPair<qreal, QPrinter::Unit> 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;
- //! Log level
- LogLevel logLevel;
- //! 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 separate 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<QString, QString> > 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 <dllend.inc>
- #endif //__PDFSETTINGS_HH__
|