Okular

document.h
1 /***************************************************************************
2  * Copyright (C) 2004-2005 by Enrico Ros <[email protected]> *
3  * Copyright (C) 2004-2008 by Albert Astals Cid <[email protected]> *
4  * Copyright (C) 2017 Klarälvdalens Datakonsult AB, a KDAB Group *
5  * company, [email protected] Work sponsored by the *
6  * LiMux project of the city of Munich *
7  * *
8  * This program is free software; you can redistribute it and/or modify *
9  * it under the terms of the GNU General Public License as published by *
10  * the Free Software Foundation; either version 2 of the License, or *
11  * (at your option) any later version. *
12  ***************************************************************************/
13 
14 #ifndef _OKULAR_DOCUMENT_H_
15 #define _OKULAR_DOCUMENT_H_
16 
17 #include "area.h"
18 #include "global.h"
19 #include "okularcore_export.h"
20 #include "pagesize.h"
21 
22 #include <QDomDocument>
23 #include <QObject>
24 #include <QPrinter>
25 #include <QStringList>
26 #include <QVector>
27 
28 #include <QMimeType>
29 #include <QUrl>
30 
31 class KConfigDialog;
32 class KPluginMetaData;
33 class KXMLGUIClient;
34 class DocumentItem;
35 class QAbstractItemModel;
36 
37 namespace Okular
38 {
39 class Annotation;
40 class BookmarkManager;
41 class CertificateStore;
42 class DocumentInfoPrivate;
43 class DocumentObserver;
44 class DocumentPrivate;
45 class DocumentSynopsis;
46 class DocumentViewport;
47 class EmbeddedFile;
48 class ExportFormat;
49 class FontInfo;
50 class FormField;
51 class FormFieldText;
52 class FormFieldButton;
53 class FormFieldChoice;
54 class Generator;
55 class Action;
56 class MovieAction;
57 class Page;
58 class PixmapRequest;
59 class RenditionAction;
60 class NewSignatureData;
61 struct NewSignatureDataPrivate;
62 class SourceReference;
63 class View;
64 class VisiblePageRect;
65 class SignatureInfo;
66 
67 /** IDs for seaches. Globally defined here. **/
68 #define PART_SEARCH_ID 1
69 #define PAGEVIEW_SEARCH_ID 2
70 #define SW_SEARCH_ID 3
71 #define PRESENTATION_SEARCH_ID 4
72 
73 /**
74  * The DocumentInfo structure can be filled in by generators to display
75  * metadata about the currently opened file.
76  */
77 class OKULARCORE_EXPORT DocumentInfo
78 {
79  friend class Document;
80 
81 public:
82  /**
83  * The list of predefined keys.
84  */
85  enum Key {
86  Title, ///< The title of the document
87  Subject, ///< The subject of the document
88  Description, ///< The description of the document
89  Author, ///< The author of the document
90  Creator, ///< The creator of the document (this can be different from the author)
91  Producer, ///< The producer of the document (e.g. some software)
92  Copyright, ///< The copyright of the document
93  Pages, ///< The number of pages of the document
94  CreationDate, ///< The date of creation of the document
95  ModificationDate, ///< The date of last modification of the document
96  MimeType, ///< The mime type of the document
97  Category, ///< The category of the document
98  Keywords, ///< The keywords which describe the content of the document
99  FilePath, ///< The path of the file @since 0.10 (KDE 4.4)
100  DocumentSize, ///< The size of the document @since 0.10 (KDE 4.4)
101  PagesSize, ///< The size of the pages (if all pages have the same size) @since 0.10 (KDE 4.4)
102  CustomKeys, ///< All the custom keys the generator supports @since 0.21
103  Invalid ///< An invalid key @since 0.21. It will always be the last element in the enum
104  };
105 
106  /**
107  * Creates a new document info.
108  */
109  DocumentInfo();
110  DocumentInfo(const DocumentInfo &info);
111  DocumentInfo &operator=(const DocumentInfo &);
112 
113  ~DocumentInfo();
114 
115  /**
116  * Returns all the keys present in this DocumentInfo
117  *
118  * @since 0.21
119  */
120  QStringList keys() const;
121 
122  /**
123  * Returns the value for a given key or an null string when the
124  * key doesn't exist.
125  */
126  QString get(Key key) const;
127 
128  /**
129  * Returns the value for a given key or an null string when the
130  * key doesn't exist.
131  */
132  QString get(const QString &key) const;
133 
134  /**
135  * Sets a value for a custom key. The title should be an i18n'ed
136  * string, since it's used in the document information dialog.
137  */
138  void set(const QString &key, const QString &value, const QString &title = QString());
139 
140  /**
141  * Sets a value for a special key. The title should be an i18n'ed
142  * string, since it's used in the document information dialog.
143  */
144  void set(Key key, const QString &value);
145 
146  /**
147  * Returns the user visible string for the given key
148  * Takes into account keys added by the set() that takes a QString
149  *
150  * @since 0.21
151  */
152  QString getKeyTitle(const QString &key) const;
153 
154  /**
155  * Returns the internal string for the given key
156  * @since 0.10 (KDE 4.4)
157  */
158  static QString getKeyString(Key key);
159 
160  /**
161  * Returns the user visible string for the given key
162  * @since 0.10 (KDE 4.4)
163  */
164  static QString getKeyTitle(Key key);
165 
166  /**
167  * Returns the Key from a string key
168  * @since 0.21
169  */
170  static Key getKeyFromString(const QString &key);
171 
172 private:
173  DocumentInfoPrivate *d;
174 };
175 
176 /**
177  * @short The Document. Heart of everything. Actions take place here.
178  *
179  * The Document is the main object in Okular. All views query the Document to
180  * get data/properties or even for accessing pages (in a 'const' way).
181  *
182  * It is designed to keep it detached from the document type (pdf, ps, you
183  * name it..) so whenever you want to get some data, it asks its internal
184  * generators to do the job and return results in a format-independent way.
185  *
186  * Apart from the generator (the currently running one) the document stores
187  * all the Pages ('Page' class) of the current document in a vector and
188  * notifies all the registered DocumentObservers when some content changes.
189  *
190  * For a better understanding of hierarchies @see README.internals.png
191  * @see DocumentObserver, Page
192  */
193 class OKULARCORE_EXPORT Document : public QObject
194 {
195  Q_OBJECT
196 
197 public:
198  /**
199  * Creates a new document with the given @p widget as widget to relay GUI things (messageboxes, ...).
200  */
201  explicit Document(QWidget *widget);
202 
203  /**
204  * Destroys the document.
205  */
206  ~Document() override;
207 
208  /**
209  * Describes the result of an open document operation.
210  * @since 0.20 (KDE 4.14)
211  */
212  enum OpenResult {
213  OpenSuccess, //< The document was opened successfully
214  OpenError, //< The document failed to open
215  OpenNeedsPassword //< The document needs a password to be opened or the one provided is not the correct
216  };
217 
218  /**
219  * Opens the document.
220  * @since 0.20 (KDE 4.14)
221  */
222  OpenResult openDocument(const QString &docFile, const QUrl &url, const QMimeType &mime, const QString &password = QString());
223 
224  /**
225  * Closes the document.
226  */
227  void closeDocument();
228 
229  /**
230  * Registers a new @p observer for the document.
231  */
232  void addObserver(DocumentObserver *observer);
233 
234  /**
235  * Unregisters the given @p observer for the document.
236  */
237  void removeObserver(DocumentObserver *observer);
238 
239  /**
240  * Reparses and applies the configuration.
241  */
242  void reparseConfig();
243 
244  /**
245  * Returns whether the document is currently opened.
246  */
247  bool isOpened() const;
248 
249  /**
250  * Returns the meta data of the document.
251  */
252  DocumentInfo documentInfo() const;
253 
254  /**
255  * Returns the asked set of meta data of the document. The result may contain more
256  * metadata than the one asked for.
257  */
258  DocumentInfo documentInfo(const QSet<DocumentInfo::Key> &keys) const;
259 
260  /**
261  * Returns the table of content of the document or 0 if no
262  * table of content is available.
263  */
264  const DocumentSynopsis *documentSynopsis() const;
265 
266  /**
267  * Starts the reading of the information about the fonts in the
268  * document, if available.
269  *
270  * The results as well the end of the reading is notified using the
271  * signals gotFont(), fontReadingProgress() and fontReadingEnded()
272  */
273  void startFontReading();
274 
275  /**
276  * Force the termination of the reading of the information about the
277  * fonts in the document, if running.
278  */
279  void stopFontReading();
280 
281  /**
282  * Whether the current document can provide information about the
283  * fonts used in it.
284  */
285  bool canProvideFontInformation() const;
286 
287  /**
288  * Whether the current document can perform digital signing.
289  */
290  bool canSign() const;
291 
292  /**
293  * Returns the list of embedded files or 0 if no embedded files
294  * are available.
295  */
296  const QList<EmbeddedFile *> *embeddedFiles() const;
297 
298  /**
299  * Returns the page object for the given page @p number or 0
300  * if the number is out of range.
301  */
302  const Page *page(int number) const;
303 
304  /**
305  * Returns the current viewport of the document.
306  */
307  const DocumentViewport &viewport() const;
308 
309  /**
310  * Sets the list of visible page rectangles.
311  * @see VisiblePageRect
312  */
313  void setVisiblePageRects(const QVector<VisiblePageRect *> &visiblePageRects, DocumentObserver *excludeObserver = nullptr);
314 
315  /**
316  * Returns the list of visible page rectangles.
317  */
318  const QVector<VisiblePageRect *> &visiblePageRects() const;
319 
320  /**
321  * Returns the number of the current page.
322  */
323  uint currentPage() const;
324 
325  /**
326  * Returns the number of pages of the document.
327  */
328  uint pages() const;
329 
330  /**
331  * Returns the url of the currently opened document.
332  */
333  QUrl currentDocument() const;
334 
335  /**
336  * Returns whether the given @p action is allowed in the document.
337  * @see @ref Permission
338  */
339  bool isAllowed(Permission action) const;
340 
341  /**
342  * Returns whether the document supports searching.
343  */
344  bool supportsSearching() const;
345 
346  /**
347  * Returns whether the document supports the listing of page sizes.
348  */
349  bool supportsPageSizes() const;
350 
351  /**
352  * Returns whether the current document supports tiles
353  *
354  * @since 0.16 (KDE 4.10)
355  */
356  bool supportsTiles() const;
357 
358  /**
359  * Returns the list of supported page sizes or an empty list if this
360  * feature is not available.
361  * @see supportsPageSizes()
362  */
363  PageSize::List pageSizes() const;
364 
365  /**
366  * Returns whether the document supports the export to ASCII text.
367  */
368  bool canExportToText() const;
369 
370  /**
371  * Exports the document as ASCII text and saves it under @p fileName.
372  */
373  bool exportToText(const QString &fileName) const;
374 
375  /**
376  * Returns the list of supported export formats.
377  * @see ExportFormat
378  */
379  QList<ExportFormat> exportFormats() const;
380 
381  /**
382  * Exports the document in the given @p format and saves it under @p fileName.
383  */
384  bool exportTo(const QString &fileName, const ExportFormat &format) const;
385 
386  /**
387  * Returns whether the document history is at the begin.
388  */
389  bool historyAtBegin() const;
390 
391  /**
392  * Returns whether the document history is at the end.
393  */
394  bool historyAtEnd() const;
395 
396  /**
397  * Returns the meta data for the given @p key and @p option or an empty variant
398  * if the key doesn't exists.
399  */
400  QVariant metaData(const QString &key, const QVariant &option = QVariant()) const;
401 
402  /**
403  * Returns the current rotation of the document.
404  */
405  Rotation rotation() const;
406 
407  /**
408  * If all pages have the same size this method returns it, if the page sizes
409  * differ an empty size object is returned.
410  */
411  QSizeF allPagesSize() const;
412 
413  /**
414  * Returns the size string for the given @p page or an empty string
415  * if the page is out of range.
416  */
417  QString pageSizeString(int page) const;
418 
419  /**
420  * Returns the gui client of the generator, if it provides one.
421  */
422  KXMLGUIClient *guiClient();
423 
424  /**
425  * Sets the current document viewport to the given @p page.
426  *
427  * @param page The number of the page.
428  * @param excludeObserver The observer ids which shouldn't be effected by this change.
429  * @param smoothMove Whether the move shall be animated smoothly.
430  */
431  void setViewportPage(int page, DocumentObserver *excludeObserver = nullptr, bool smoothMove = false);
432 
433  /**
434  * Sets the current document viewport to the given @p viewport.
435  *
436  * @param viewport The document viewport.
437  * @param excludeObserver The observer which shouldn't be effected by this change.
438  * @param smoothMove Whether the move shall be animated smoothly.
439  */
440  void setViewport(const DocumentViewport &viewport, DocumentObserver *excludeObserver = nullptr, bool smoothMove = false);
441 
442  /**
443  * Sets the current document viewport to the given @p viewport.
444  * BCI TODO: merge with setViewport, adding a parameter "bool updateHistory = true"
445  *
446  * @param viewport The document viewport.
447  * @param excludeObserver The observer which shouldn't be effected by this change.
448  * @param smoothMove Whether the move shall be animated smoothly.
449  * @param updateHistory Whether to consider the change of viewport for the history navigation
450  */
451  void setViewportWithHistory(const DocumentViewport &viewport, DocumentObserver *excludeObserver = nullptr, bool smoothMove = false, bool updateHistory = true);
452 
453  /**
454  * Sets the current document viewport to the next viewport in the
455  * viewport history.
456  */
457  void setPrevViewport();
458 
459  /**
460  * Sets the current document viewport to the previous viewport in the
461  * viewport history.
462  */
463  void setNextViewport();
464 
465  /**
466  * Sets the next @p viewport in the viewport history.
467  */
468  void setNextDocumentViewport(const DocumentViewport &viewport);
469 
470  /**
471  * Sets the next @p namedDestination in the viewport history.
472  *
473  * @since 0.9 (KDE 4.3)
474  */
475  void setNextDocumentDestination(const QString &namedDestination);
476 
477  /**
478  * Sets the zoom for the current document.
479  */
480  void setZoom(int factor, DocumentObserver *excludeObserver = nullptr);
481 
482  /**
483  * Describes the possible options for the pixmap requests.
484  */
486  NoOption = 0, ///< No options
487  RemoveAllPrevious = 1 ///< Remove all the previous requests, even for non requested page pixmaps
488  };
489  Q_DECLARE_FLAGS(PixmapRequestFlags, PixmapRequestFlag)
490 
491  /**
492  * Sends @p requests for pixmap generation.
493  *
494  * The same as requestPixmaps( requests, RemoveAllPrevious );
495  */
496  void requestPixmaps(const QLinkedList<PixmapRequest *> &requests);
497 
498  /**
499  * Sends @p requests for pixmap generation.
500  *
501  * @param requests the linked list of requests
502  * @param reqOptions the options for the request
503  *
504  * @since 0.7 (KDE 4.1)
505  */
506  void requestPixmaps(const QLinkedList<PixmapRequest *> &requests, PixmapRequestFlags reqOptions);
507 
508  /**
509  * Sends a request for text page generation for the given page @p pageNumber.
510  */
511  void requestTextPage(uint pageNumber);
512 
513  /**
514  * Adds a new @p annotation to the given @p page.
515  */
516  void addPageAnnotation(int page, Annotation *annotation);
517 
518  /**
519  * Tests if the @p annotation can be modified
520  *
521  * @since 0.15 (KDE 4.9)
522  */
523  bool canModifyPageAnnotation(const Annotation *annotation) const;
524 
525  /**
526  * Prepares to modify the properties of the given @p annotation.
527  * Must be called before the annotation's properties are modified
528  *
529  * @since 0.17 (KDE 4.11)
530  */
531  void prepareToModifyAnnotationProperties(Annotation *annotation);
532 
533  /**
534  * Modifies the given @p annotation on the given @p page.
535  * Must be preceded by a call to prepareToModifyAnnotationProperties before
536  * the annotation's properties are modified
537  *
538  * @since 0.17 (KDE 4.11)
539  */
540  void modifyPageAnnotationProperties(int page, Annotation *annotation);
541 
542  /**
543  * Translates the position of the given @p annotation on the given @p page by a distance @p delta in normalized coordinates.
544  *
545  * Consecutive translations applied to the same @p annotation are merged together on the undo stack if the
546  * BeingMoved flag is set on the @p annotation.
547  *
548  * @since 0.17 (KDE 4.11)
549  */
550  void translatePageAnnotation(int page, Annotation *annotation, const Okular::NormalizedPoint &delta);
551 
552  /**
553  * Adjusts the position of the top-left and bottom-right corners of given @p annotation on the given @p page.
554  *
555  * Can be used to implement resize functionality.
556  * @p delta1 in normalized coordinates is added to top-left.
557  * @p delta2 in normalized coordinates is added to bottom-right.
558  *
559  * Consecutive adjustments applied to the same @p annotation are merged together on the undo stack if the
560  * BeingResized flag is set on the @p annotation.
561  *
562  * @since 1.1.0
563  */
564  void adjustPageAnnotation(int page, Annotation *annotation, const Okular::NormalizedPoint &delta1, const Okular::NormalizedPoint &delta2);
565 
566  /**
567  * Edits the plain text contents of the given @p annotation on the given @p page.
568  *
569  * The contents are set to @p newContents with cursor position @p newCursorPos.
570  * The previous cursor position @p prevCursorPos and previous anchor position @p prevAnchorPos
571  * must also be supplied so that they can be restored if the edit action is undone.
572  *
573  * The Annotation's internal contents should not be modified prior to calling this method.
574  *
575  * @since 0.17 (KDE 4.11)
576  */
577  void editPageAnnotationContents(int page, Annotation *annotation, const QString &newContents, int newCursorPos, int prevCursorPos, int prevAnchorPos);
578 
579  /**
580  * Tests if the @p annotation can be removed
581  *
582  * @since 0.15 (KDE 4.9)
583  */
584  bool canRemovePageAnnotation(const Annotation *annotation) const;
585 
586  /**
587  * Removes the given @p annotation from the given @p page.
588  */
589  void removePageAnnotation(int page, Annotation *annotation);
590 
591  /**
592  * Removes the given @p annotations from the given @p page.
593  */
594  void removePageAnnotations(int page, const QList<Annotation *> &annotations);
595 
596  /**
597  * Clears the text selection highlights for the given @p page,
598  * creates new ones if @p rect is not nullptr,
599  * and deletes @p rect.
600  *
601  * @param page The number of the page.
602  * @param rect The rectangle of the selection.
603  * @param color The color of the selection.
604  */
605  void setPageTextSelection(int page, RegularAreaRect *rect, const QColor &color);
606 
607  /**
608  * Returns true if there is an undo command available; otherwise returns false.
609  * @since 0.17 (KDE 4.11)
610  */
611  bool canUndo() const;
612 
613  /**
614  * Returns true if there is a redo command available; otherwise returns false.
615  * @since 0.17 (KDE 4.11)
616  */
617  bool canRedo() const;
618 
619  /**
620  * Describes the possible search types.
621  */
622  enum SearchType {
623  NextMatch, ///< Search next match
624  PreviousMatch, ///< Search previous match
625  AllDocument, ///< Search complete document
626  GoogleAll, ///< Search complete document (all words in google style)
627  GoogleAny ///< Search complete document (any words in google style)
628  };
629 
630  /**
631  * Describes how search ended
632  */
633  // TODO remove EndOfDocumentReached when we break API
635  MatchFound, ///< Any match was found
636  NoMatchFound, ///< No match was found
637  SearchCancelled, ///< The search was cancelled
638  EndOfDocumentReached ///< This is not ever emitted since 1.3. The end of document was reached without any match @since 0.20 (KDE 4.14)
639  };
640 
641  /**
642  * Searches the given @p text in the document.
643  *
644  * @param searchID The unique id for this search request.
645  * @param text The text to be searched.
646  * @param fromStart Whether the search should be started at begin of the document.
647  * @param caseSensitivity Whether the search is case sensitive.
648  * @param type The type of the search. @ref SearchType
649  * @param moveViewport Whether the viewport shall be moved to the position of the matches.
650  * @param color The highlighting color of the matches.
651  */
652  void searchText(int searchID, const QString &text, bool fromStart, Qt::CaseSensitivity caseSensitivity, SearchType type, bool moveViewport, const QColor &color);
653 
654  /**
655  * Continues the search for the given @p searchID.
656  */
657  void continueSearch(int searchID);
658 
659  /**
660  * Continues the search for the given @p searchID, optionally specifying
661  * a new type for the search.
662  *
663  * @since 0.7 (KDE 4.1)
664  */
665  void continueSearch(int searchID, SearchType type);
666 
667  /**
668  * Resets the search for the given @p searchID.
669  */
670  void resetSearch(int searchID);
671 
672  /**
673  * Returns the bookmark manager of the document.
674  */
675  BookmarkManager *bookmarkManager() const;
676 
677  /**
678  * Processes the given @p action.
679  */
680  void processAction(const Action *action);
681 
682  /**
683  * Processes the given format @p action on @p fft.
684  *
685  * @since 1.9
686  */
687  void processFormatAction(const Action *action, Okular::FormFieldText *fft);
688 
689  /**
690  * Processes the given keystroke @p action on @p fft.
691  *
692  * @since 1.9
693  */
694  void processKeystrokeAction(const Action *action, Okular::FormFieldText *fft, bool &returnCode);
695 
696  /**
697  * Processes the given focus action on the field.
698  *
699  * @since 1.9
700  */
701  void processFocusAction(const Action *action, Okular::FormField *field);
702 
703  /**
704  * Processes the given keystroke @p action on @p fft.
705  *
706  * @since 1.9
707  */
708  void processValidateAction(const Action *action, Okular::FormFieldText *fft, bool &returnCode);
709 
710  /**
711  * Returns a list of the bookmarked.pages
712  */
713  QList<int> bookmarkedPageList() const;
714 
715  /**
716  * Returns the range of the bookmarked.pages
717  */
718  QString bookmarkedPageRange() const;
719 
720  /**
721  * Processes/Executes the given source @p reference.
722  */
723  void processSourceReference(const SourceReference *reference);
724 
725  /**
726  * Returns whether the document can configure the printer itself.
727  */
728  bool canConfigurePrinter() const;
729 
730  /**
731  * What type of printing a document supports
732  */
734  NoPrinting, ///< Printing Not Supported
735  NativePrinting, ///< Native Cross-Platform Printing
736  PostscriptPrinting ///< Postscript file printing
737  };
738 
739  /**
740  * Returns what sort of printing the document supports:
741  * Native, Postscript, None
742  */
743  PrintingType printingSupport() const;
744 
745  /**
746  * Returns whether the document supports printing to both PDF and PS files.
747  */
748  bool supportsPrintToFile() const;
749 
750  /**
751  * Prints the document to the given @p printer.
752  */
753  bool print(QPrinter &printer);
754 
755  /**
756  * Returns the last print error in case print() failed
757  * @since 0.11 (KDE 4.5)
758  */
759  QString printError() const;
760 
761  /**
762  * Returns a custom printer configuration page or 0 if no
763  * custom printer configuration page is available.
764  *
765  * The returned object should be of a PrintOptionsWidget subclass
766  * (which is not officially enforced by the signature for binary
767  * compatibility reasons).
768  */
769  QWidget *printConfigurationWidget() const;
770 
771  /**
772  * Fill the KConfigDialog @p dialog with the setting pages of the
773  * generators.
774  */
775  void fillConfigDialog(KConfigDialog *dialog);
776 
777  /**
778  * Returns the number of generators that have a configuration widget.
779  */
780  int configurableGenerators() const;
781 
782  /**
783  * Returns the list with the supported MIME types.
784  */
785  QStringList supportedMimeTypes() const;
786 
787  /**
788  * Returns the metadata associated with the generator. May be invalid.
789  */
790  KPluginMetaData generatorInfo() const;
791 
792  /**
793  * Returns whether the generator supports hot-swapping the current file
794  * with another identical file
795  *
796  * @since 1.3
797  */
798  bool canSwapBackingFile() const;
799 
800  /**
801  * Reload the document from a new location, without any visible effect
802  * to the user.
803  *
804  * The new file must be identical to the current one or, if the document
805  * has been modified (eg the user edited forms and annotations), the new
806  * document must have these changes too. For example, you can call
807  * saveChanges first to write changes to a file and then swapBackingFile
808  * to switch to the new location.
809  *
810  * @since 1.3
811  */
812  bool swapBackingFile(const QString &newFileName, const QUrl &url);
813 
814  /**
815  * Same as swapBackingFile, but newFileName must be a .okular file.
816  *
817  * The new file must be identical to the current one or, if the document
818  * has been modified (eg the user edited forms and annotations), the new
819  * document must have these changes too. For example, you can call
820  * saveDocumentArchive first to write changes to a file and then
821  * swapBackingFileArchive to switch to the new location.
822  *
823  * @since 1.3
824  */
825  bool swapBackingFileArchive(const QString &newFileName, const QUrl &url);
826 
827  /**
828  * Sets the history to be clean
829  *
830  * @since 1.3
831  */
832  void setHistoryClean(bool clean);
833 
834  bool isHistoryClean() const;
835 
836  /**
837  * Saving capabilities. Their availability varies according to the
838  * underlying generator and/or the document type.
839  *
840  * @see canSaveChanges (SaveCapability)
841  * @since 0.15 (KDE 4.9)
842  */
844  SaveFormsCapability = 1, ///< Can save form changes
845  SaveAnnotationsCapability = 2 ///< Can save annotation changes
846  };
847 
848  /**
849  * Returns whether it's possible to save a given category of changes to
850  * another document.
851  *
852  * @since 0.15 (KDE 4.9)
853  */
854  bool canSaveChanges(SaveCapability cap) const;
855 
856  /**
857  * Returns whether the changes to the document (modified annotations,
858  * values in form fields, etc) can be saved to another document.
859  *
860  * Equivalent to the logical OR of canSaveChanges(SaveCapability) for
861  * each capability.
862  *
863  * @since 0.7 (KDE 4.1)
864  */
865  bool canSaveChanges() const;
866 
867  /**
868  * Save the document and the optional changes to it to the specified
869  * @p fileName.
870  *
871  * @since 0.7 (KDE 4.1)
872  */
873  bool saveChanges(const QString &fileName);
874 
875  /**
876  * Save the document and the optional changes to it to the specified
877  * @p fileName and returns a @p errorText if fails.
878  *
879  * @since 0.10 (KDE 4.4)
880  */
881  bool saveChanges(const QString &fileName, QString *errorText);
882 
883  /**
884  * Register the specified @p view for the current document.
885  *
886  * It is unregistered from the previous document, if any.
887  *
888  * @since 0.7 (KDE 4.1)
889  */
890  void registerView(View *view);
891 
892  /**
893  * Unregister the specified @p view from the current document.
894  *
895  * @since 0.7 (KDE 4.1)
896  */
897  void unregisterView(View *view);
898 
899  /**
900  * Gets the font data for the given font
901  *
902  * @since 0.8 (KDE 4.2)
903  */
904  QByteArray fontData(const FontInfo &font) const;
905 
906  /**
907  * Opens a document archive.
908  *
909  * @since 0.20 (KDE 4.14)
910  */
911  OpenResult openDocumentArchive(const QString &docFile, const QUrl &url, const QString &password = QString());
912 
913  /**
914  * Saves a document archive.
915  *
916  * @since 0.8 (KDE 4.2)
917  */
918  bool saveDocumentArchive(const QString &fileName);
919 
920  /**
921  * Extract the document file from the current archive.
922  *
923  * @warning This function only works if the current file is a document archive
924  *
925  * @since 1.3
926  */
927  bool extractArchivedFile(const QString &destFileName);
928 
929  /**
930  * Asks the generator to dynamically generate a SourceReference for a given
931  * page number and absolute X and Y position on this page.
932  *
933  * @attention Ownership of the returned SourceReference is transferred to the caller.
934  * @note This method does not call processSourceReference( const SourceReference * )
935  *
936  * @since 0.10 (KDE 4.4)
937  */
938  const SourceReference *dynamicSourceReference(int pageNr, double absX, double absY);
939 
940  /**
941  * Returns the orientation of the document (for printing purposes). This
942  * is used in the KPart to initialize the print dialog and in the
943  * generators to check whether the document needs to be rotated or not.
944  *
945  * @since 0.14 (KDE 4.8)
946  */
947  QPrinter::Orientation orientation() const;
948 
949  /**
950  * Control annotation editing (creation, modification and removal),
951  * which is enabled by default.
952  *
953  * @since 0.15 (KDE 4.9)
954  */
955  void setAnnotationEditingEnabled(bool enable);
956 
957  /**
958  * Returns which wallet data to use to read/write the password for the given fileName
959  *
960  * @since 0.20 (KDE 4.14)
961  */
962  void walletDataForFile(const QString &fileName, QString *walletName, QString *walletFolder, QString *walletKey) const;
963 
964  /**
965  * Since version 0.21, okular does not allow editing annotations and
966  * form data if they are stored in the docdata directory (like older
967  * okular versions did by default).
968  * If this flag is set, then annotations and forms cannot be edited.
969  *
970  * @since 1.3
971  */
972  bool isDocdataMigrationNeeded() const;
973 
974  /**
975  * Delete annotations and form data from the docdata folder. Call it if
976  * isDocdataMigrationNeeded() was true and you've just saved them to an
977  * external file.
978  *
979  * @since 1.3
980  */
981  void docdataMigrationDone();
982 
983  /**
984  * Returns the model for rendering layers (NULL if the document has no layers)
985  *
986  * @since 0.24
987  */
988  QAbstractItemModel *layersModel() const;
989 
990  /**
991  * Returns the reason why the file opening failed, if any.
992  *
993  * @since 1.10
994  */
995  QString openError() const;
996 
997  /**
998  * Digitally sign document
999  *
1000  * @since 21.04
1001  */
1002  bool sign(const NewSignatureData &data, const QString &newPath);
1003 
1004  /**
1005  * Returns the generator's certificate store (if any)
1006  *
1007  * @since 21.04
1008  */
1009  CertificateStore *certificateStore() const;
1010 
1011 public Q_SLOTS:
1012  /**
1013  * This slot is called whenever the user changes the @p rotation of
1014  * the document.
1015  */
1016  void setRotation(int rotation);
1017 
1018  /**
1019  * This slot is called whenever the user changes the page @p size
1020  * of the document.
1021  */
1022  void setPageSize(const Okular::PageSize &size);
1023 
1024  /**
1025  * Cancels the current search
1026  */
1027  void cancelSearch();
1028 
1029  /**
1030  * Undo last edit command
1031  * @since 0.17 (KDE 4.11)
1032  */
1033  void undo();
1034 
1035  /**
1036  * Redo last undone edit command
1037  * @since 0.17 (KDE 4.11)
1038  */
1039  void redo();
1040 
1041  /**
1042  * Edit the text contents of the specified @p form on page @p page to be @p newContents.
1043  * The new text cursor position (@p newCursorPos), previous text cursor position (@p prevCursorPos),
1044  * and previous cursor anchor position will be restored by the undo / redo commands.
1045  * @since 0.17 (KDE 4.11)
1046  */
1047  void editFormText(int pageNumber, Okular::FormFieldText *form, const QString &newContents, int newCursorPos, int prevCursorPos, int prevAnchorPos);
1048 
1049  /**
1050  * Edit the selected list entries in @p form on page @p page to be @p newChoices.
1051  * @since 0.17 (KDE 4.11)
1052  */
1053  void editFormList(int pageNumber, Okular::FormFieldChoice *form, const QList<int> &newChoices);
1054 
1055  /**
1056  * Set the active choice in the combo box @p form on page @p page to @p newText
1057  * The new cursor position (@p newCursorPos), previous cursor position
1058  * (@p prevCursorPos), and previous anchor position (@p prevAnchorPos)
1059  * will be restored by the undo / redo commands.
1060  *
1061  * @since 0.17 (KDE 4.11)
1062  */
1063  void editFormCombo(int pageNumber, Okular::FormFieldChoice *form, const QString &newText, int newCursorPos, int prevCursorPos, int prevAnchorPos);
1064 
1065  /**
1066  * Set the states of the group of form buttons @p formButtons on page @p page to @p newButtonStates.
1067  * The lists @p formButtons and @p newButtonStates should be the same length and true values
1068  * in @p newButtonStates indicate that the corresponding entry in @p formButtons should be enabled.
1069  */
1070  void editFormButtons(int pageNumber, const QList<Okular::FormFieldButton *> &formButtons, const QList<bool> &newButtonStates);
1071 
1072  /**
1073  * Reloads the pixmaps for whole document
1074  *
1075  * @since 0.24
1076  */
1077  void reloadDocument() const;
1078 
1079  /**
1080  * Returns the part of document covered by the given signature @p info.
1081  *
1082  * @since 1.7
1083  */
1084  QByteArray requestSignedRevisionData(const Okular::SignatureInfo &info);
1085 
1086  /**
1087  * Refresh the pixmaps for the given @p pageNumber.
1088  *
1089  * @since 1.10
1090  */
1091  void refreshPixmaps(int pageNumber);
1092 
1093 Q_SIGNALS:
1094  /**
1095  * This signal is emitted whenever the document is about to close.
1096  * @since 1.5.3
1097  */
1098  void aboutToClose();
1099 
1100  /**
1101  * This signal is emitted whenever an action requests a
1102  * document close operation.
1103  */
1104  void close();
1105 
1106  /**
1107  * This signal is emitted whenever an action requests an
1108  * application quit operation.
1109  */
1110  void quit();
1111 
1112  /**
1113  * This signal is emitted whenever an action requests a
1114  * find operation.
1115  */
1116  void linkFind();
1117 
1118  /**
1119  * This signal is emitted whenever an action requests a
1120  * goto operation.
1121  */
1122  void linkGoToPage();
1123 
1124  /**
1125  * This signal is emitted whenever an action requests a
1126  * start presentation operation.
1127  */
1128  void linkPresentation();
1129 
1130  /**
1131  * This signal is emitted whenever an action requests an
1132  * end presentation operation.
1133  */
1134  void linkEndPresentation();
1135 
1136  /**
1137  * This signal is emitted whenever an action requests an
1138  * open url operation for the given document @p url.
1139  */
1140  void openUrl(const QUrl &url);
1141 
1142  /**
1143  * This signal is emitted whenever an error occurred.
1144  *
1145  * @param text The description of the error.
1146  * @param duration The time in milliseconds the message should be shown to the user.
1147  */
1148  void error(const QString &text, int duration);
1149 
1150  /**
1151  * This signal is emitted to signal a warning.
1152  *
1153  * @param text The description of the warning.
1154  * @param duration The time in milliseconds the message should be shown to the user.
1155  */
1156  void warning(const QString &text, int duration);
1157 
1158  /**
1159  * This signal is emitted to signal a notice.
1160  *
1161  * @param text The description of the notice.
1162  * @param duration The time in milliseconds the message should be shown to the user.
1163  */
1164  void notice(const QString &text, int duration);
1165 
1166  /**
1167  * Emitted when a new font is found during the reading of the fonts of
1168  * the document.
1169  */
1170  void gotFont(const Okular::FontInfo &font);
1171 
1172  /**
1173  * Reports the progress when reading the fonts in the document.
1174  *
1175  * \param page is the page that was just finished to scan for fonts
1176  */
1177  void fontReadingProgress(int page);
1178 
1179  /**
1180  * Reports that the reading of the fonts in the document is finished.
1181  */
1182  void fontReadingEnded();
1183 
1184  /**
1185  * Reports that the current search finished
1186  */
1187  void searchFinished(int searchID, Okular::Document::SearchStatus endStatus);
1188 
1189  /**
1190  * This signal is emitted whenever a source reference with the given parameters has been
1191  * activated.
1192  *
1193  * \param absFileName absolute name of the file.
1194  * \param line line number.
1195  * \param col column number.
1196  * \param handled should be set to 'true' if a slot handles this source reference; the
1197  * default action to launch the configured editor will then not be performed
1198  * by the document
1199  *
1200  * @since 0.14 (KDE 4.8)
1201  */
1202  void sourceReferenceActivated(const QString &absFileName, int line, int col, bool *handled);
1203 
1204  /**
1205  * This signal is emitted whenever an movie action is triggered and the UI should process it.
1206  */
1207  void processMovieAction(const Okular::MovieAction *action);
1208 
1209  /**
1210  * This signal is emitted whenever the availability of the undo function changes
1211  * @since 0.17 (KDE 4.11)
1212  */
1213  void canUndoChanged(bool undoAvailable);
1214 
1215  /**
1216  * This signal is emitted whenever the availability of the redo function changes
1217  * @since 0.17 (KDE 4.11)
1218  */
1219  void canRedoChanged(bool redoAvailable);
1220 
1221  /**
1222  * This signal is emitted whenever the undo history is clean (i.e. the same status the last time it was saved)
1223  * @since 1.3
1224  */
1225  void undoHistoryCleanChanged(bool clean);
1226 
1227  /**
1228  * This signal is emitted whenever an rendition action is triggered and the UI should process it.
1229  *
1230  * @since 0.16 (KDE 4.10)
1231  */
1232  void processRenditionAction(const Okular::RenditionAction *action);
1233 
1234  /**
1235  * This signal is emitted whenever the contents of the given @p annotation are changed by an undo
1236  * or redo action.
1237  *
1238  * The new contents (@p contents), cursor position (@p cursorPos), and anchor position (@p anchorPos) are
1239  * included
1240  * @since 0.17 (KDE 4.11)
1241  */
1242  void annotationContentsChangedByUndoRedo(Okular::Annotation *annotation, const QString &contents, int cursorPos, int anchorPos);
1243 
1244  /**
1245  * This signal is emitted whenever the text contents of the given text @p form on the given @p page
1246  * are changed by an undo or redo action.
1247  *
1248  * The new text contents (@p contents), cursor position (@p cursorPos), and anchor position (@p anchorPos) are
1249  * included
1250  * @since 0.17 (KDE 4.11)
1251  */
1252  void formTextChangedByUndoRedo(int page, Okular::FormFieldText *form, const QString &contents, int cursorPos, int anchorPos);
1253 
1254  /**
1255  * This signal is emitted whenever the selected @p choices for the given list @p form on the
1256  * given @p page are changed by an undo or redo action.
1257  * @since 0.17 (KDE 4.11)
1258  */
1259  void formListChangedByUndoRedo(int page, Okular::FormFieldChoice *form, const QList<int> &choices);
1260 
1261  /**
1262  * This signal is emitted whenever the active @p text for the given combo @p form on the
1263  * given @p page is changed by an undo or redo action.
1264  * @since 0.17 (KDE 4.11)
1265  */
1266  void formComboChangedByUndoRedo(int page, Okular::FormFieldChoice *form, const QString &text, int cursorPos, int anchorPos);
1267 
1268  /**
1269  * This signal is emitted whenever the state of the specified group of form buttons (@p formButtons) on the
1270  * given @p page is changed by an undo or redo action.
1271  * @since 0.17 (KDE 4.11)
1272  */
1273  void formButtonsChangedByUndoRedo(int page, const QList<Okular::FormFieldButton *> &formButtons);
1274 
1275  /**
1276  * This signal is emitted whenever a FormField was changed programmatically and the
1277  * according widget should be updated.
1278  * @since 1.4
1279  */
1280  void refreshFormWidget(Okular::FormField *field);
1281 
1282 private:
1283  /// @cond PRIVATE
1284  friend class DocumentPrivate;
1285  friend class ::DocumentItem;
1286  friend class EditAnnotationContentsCommand;
1287  friend class EditFormTextCommand;
1288  friend class EditFormListCommand;
1289  friend class EditFormComboCommand;
1290  friend class EditFormButtonsCommand;
1291  /// @endcond
1292  DocumentPrivate *const d;
1293 
1294  Q_DISABLE_COPY(Document)
1295 };
1296 
1297 /**
1298  * @short A view on the document.
1299  *
1300  * The Viewport structure is the 'current view' over the document. Contained
1301  * data is broadcasted between observers to synchronize their viewports to get
1302  * the 'I scroll one view and others scroll too' views.
1303  */
1304 class OKULARCORE_EXPORT DocumentViewport
1305 {
1306 public:
1307  /**
1308  * Creates a new viewport for the given page @p number.
1309  */
1310  DocumentViewport(int number = -1);
1311 
1312  /**
1313  * Creates a new viewport from the given @p xmlDesc.
1314  */
1315  DocumentViewport(const QString &xmlDesc);
1316 
1317  /**
1318  * Returns the viewport as xml description.
1319  */
1320  QString toString() const;
1321 
1322  /**
1323  * Returns whether the viewport is valid.
1324  */
1325  bool isValid() const;
1326 
1327  /**
1328  * @internal
1329  */
1330  bool operator==(const DocumentViewport &other) const;
1331  bool operator<(const DocumentViewport &other) const;
1332 
1333  /**
1334  * The number of the page nearest the center of the viewport.
1335  */
1337 
1338  /**
1339  * Describes the relative position of the viewport.
1340  */
1341  enum Position {
1342  Center = 1, ///< Relative to the center of the page.
1343  TopLeft = 2 ///< Relative to the top left corner of the page.
1344  };
1345 
1346  /**
1347  * If 'rePos.enabled == true' then this structure contains the
1348  * viewport center or top left depending on the value of pos.
1349  */
1350  struct {
1351  bool enabled;
1352  double normalizedX;
1353  double normalizedY;
1354  Position pos;
1355  } rePos;
1356 
1357  /**
1358  * If 'autoFit.enabled == true' then the page must be autofit in the viewport.
1359  */
1360  struct {
1361  bool enabled;
1362  bool width;
1363  bool height;
1364  } autoFit;
1365 };
1366 
1367 /**
1368  * @short A DOM tree that describes the Table of Contents.
1369  *
1370  * The Synopsis (TOC or Table Of Contents for friends) is represented via
1371  * a dom tree where each node has an internal name (displayed in the TOC)
1372  * and one or more attributes.
1373  *
1374  * In the tree the tag name is the 'screen' name of the entry. A tag can have
1375  * attributes. Here follows the list of tag attributes with meaning:
1376  * - Destination: A string description of the referred viewport
1377  * - DestinationName: A 'named reference' to the viewport that must be converted
1378  * using metaData( "NamedViewport", viewport_name )
1379  * - ExternalFileName: A document to be opened, whose destination is specified
1380  * with Destination or DestinationName
1381  * - Open: a boolean saying whether its TOC branch is open or not (default: false)
1382  * - URL: a URL to be open as destination; if set, no other Destination* or
1383  * ExternalFileName entry is used
1384  */
1385 class OKULARCORE_EXPORT DocumentSynopsis : public QDomDocument
1386 {
1387 public:
1388  /**
1389  * Creates a new document synopsis object.
1390  */
1391  DocumentSynopsis();
1392 
1393  /**
1394  * Creates a new document synopsis object with the given
1395  * @p document as parent node.
1396  */
1397  DocumentSynopsis(const QDomDocument &document);
1398 };
1399 
1400 /**
1401  * @short An embedded file into the document.
1402  *
1403  * This class represents a sort of interface of an embedded file in a document.
1404  *
1405  * Generators \b must re-implement its members to give the all the information
1406  * about an embedded file, like its name, its description, the date of creation
1407  * and modification, and the real data of the file.
1408  */
1409 class OKULARCORE_EXPORT EmbeddedFile
1410 {
1411 public:
1412  /**
1413  * Creates a new embedded file.
1414  */
1415  EmbeddedFile();
1416 
1417  /**
1418  * Destroys the embedded file.
1419  */
1420  virtual ~EmbeddedFile();
1421 
1422  EmbeddedFile(const EmbeddedFile &) = delete;
1423  EmbeddedFile &operator=(const EmbeddedFile &) = delete;
1424 
1425  /**
1426  * Returns the name of the file
1427  */
1428  virtual QString name() const = 0;
1429 
1430  /**
1431  * Returns the description of the file, or an empty string if not
1432  * available
1433  */
1434  virtual QString description() const = 0;
1435 
1436  /**
1437  * Returns the real data representing the file contents
1438  */
1439  virtual QByteArray data() const = 0;
1440 
1441  /**
1442  * Returns the size (in bytes) of the file, if available, or -1 otherwise.
1443  *
1444  * @note this method should be a fast way to know the size of the file
1445  * with no need to extract all the data from it
1446  */
1447  virtual int size() const = 0;
1448 
1449  /**
1450  * Returns the modification date of the file, or an invalid date
1451  * if not available
1452  */
1453  virtual QDateTime modificationDate() const = 0;
1454 
1455  /**
1456  * Returns the creation date of the file, or an invalid date
1457  * if not available
1458  */
1459  virtual QDateTime creationDate() const = 0;
1460 };
1461 
1462 /**
1463  * @short An area of a specified page
1464  */
1465 class OKULARCORE_EXPORT VisiblePageRect
1466 {
1467 public:
1468  /**
1469  * Creates a new visible page rectangle.
1470  *
1471  * @param pageNumber The page number where the rectangle is located.
1472  * @param rectangle The rectangle in normalized coordinates.
1473  */
1474  explicit VisiblePageRect(int pageNumber = -1, const NormalizedRect &rectangle = NormalizedRect());
1475 
1476  /**
1477  * The page number where the rectangle is located.
1478  */
1480 
1481  /**
1482  * The rectangle in normalized coordinates.
1483  */
1485 };
1486 
1487 /**
1488  * @short Data needed to create a new signature
1489  *
1490  * @since 21.04
1491  */
1492 class OKULARCORE_EXPORT NewSignatureData
1493 {
1494 public:
1495  NewSignatureData();
1496  ~NewSignatureData();
1497  NewSignatureData(const NewSignatureData &) = delete;
1498  NewSignatureData &operator=(const NewSignatureData &) = delete;
1499 
1500  QString certNickname() const;
1501  void setCertNickname(const QString &certNickname);
1502 
1503  QString certSubjectCommonName() const;
1504  void setCertSubjectCommonName(const QString &certSubjectCommonName);
1505 
1506  QString password() const;
1507  void setPassword(const QString &password);
1508 
1509  int page() const;
1510  void setPage(int page);
1511 
1512  NormalizedRect boundingRectangle() const;
1513  void setBoundingRectangle(const NormalizedRect &rect);
1514 
1515 private:
1516  NewSignatureDataPrivate *const d;
1517 };
1518 
1519 }
1520 
1521 Q_DECLARE_METATYPE(Okular::DocumentInfo::Key)
1522 Q_DECLARE_OPERATORS_FOR_FLAGS(Okular::Document::PixmapRequestFlags)
1523 
1524 #endif
1525 
1526 /* kate: replace-tabs on; indent-width 4; */
NormalizedPoint is a helper class which stores the coordinates of a normalized point.
Definition: area.h:119
Rotation
A rotation.
Definition: global.h:48
Printing Not Supported.
Definition: document.h:734
The category of the document.
Definition: document.h:97
The copyright of the document.
Definition: document.h:92
The mime type of the document.
Definition: document.h:96
Native Cross-Platform Printing.
Definition: document.h:735
The author of the document.
Definition: document.h:89
View on the document.
Definition: view.h:32
The path of the file.
Definition: document.h:99
The subject of the document.
Definition: document.h:87
Search complete document.
Definition: document.h:625
A NormalizedRect is a rectangle which can be defined by two NormalizedPoints.
Definition: area.h:192
This is a list of NormalizedRect, to describe an area consisting of multiple rectangles using normali...
Definition: area.h:913
SearchType
Describes the possible search types.
Definition: document.h:622
SaveCapability
Saving capabilities.
Definition: document.h:843
global.h
Definition: action.h:19
An embedded file into the document.
Definition: document.h:1409
Key
The list of predefined keys.
Definition: document.h:85
OpenResult
Describes the result of an open document operation.
Definition: document.h:212
Interface of a text form field.
Definition: form.h:249
The title of the document.
Definition: document.h:86
The Movie action executes an operation on a video on activation.
Definition: action.h:448
PrintingType
What type of printing a document supports.
Definition: document.h:733
PixmapRequestFlag
Describes the possible options for the pixmap requests.
Definition: document.h:485
A small class that represents the information of a font.
Definition: fontinfo.h:27
The date of creation of the document.
Definition: document.h:94
SearchStatus
Describes how search ended.
Definition: document.h:634
No match was found.
Definition: document.h:636
Interface of a choice form field.
Definition: form.h:336
Search complete document (all words in google style)
Definition: document.h:626
CaseSensitivity
The Document.
Definition: document.h:193
Collector for all the data belonging to a page.
Definition: page.h:52
An area of a specified page.
Definition: document.h:1465
A helper class to store information about digital signature.
int pageNumber
The number of the page nearest the center of the viewport.
Definition: document.h:1336
Search previous match.
Definition: document.h:624
The keywords which describe the content of the document.
Definition: document.h:98
Encapsulates data that describes an action.
Definition: action.h:43
A helper class to store information about x509 certificate.
The DocumentInfo structure can be filled in by generators to display metadata about the currently ope...
Definition: document.h:77
NormalizedRect rect
The rectangle in normalized coordinates.
Definition: document.h:1484
Data needed to create a new signature.
Definition: document.h:1492
Defines a source reference.
All the custom keys the generator supports.
Definition: document.h:102
The number of pages of the document.
Definition: document.h:93
The size of the document.
Definition: document.h:100
Defines an entry for the export menu.
Definition: generator.h:81
The creator of the document (this can be different from the author)
Definition: document.h:90
Annotation struct holds properties shared by all annotations.
Definition: annotations.h:88
A small class that represents the size of a page.
Definition: pagesize.h:26
The size of the pages (if all pages have the same size)
Definition: document.h:101
Base class for objects being notified when something changes.
Definition: observer.h:31
The search was cancelled.
Definition: document.h:637
Permission
Describes the DRM capabilities.
Definition: global.h:26
A view on the document.
Definition: document.h:1304
The Rendition action executes an operation on a video or executes some JavaScript code on activation...
Definition: action.h:502
Any match was found.
Definition: document.h:635
Search next match.
Definition: document.h:623
Position
Describes the relative position of the viewport.
Definition: document.h:1341
The description of the document.
Definition: document.h:88
int pageNumber
The page number where the rectangle is located.
Definition: document.h:1479
A DOM tree that describes the Table of Contents.
Definition: document.h:1385
Bookmarks manager utility.
Describes a pixmap type request.
Definition: generator.h:637
The date of last modification of the document.
Definition: document.h:95
The base interface of a form field.
Definition: form.h:41
The producer of the document (e.g. some software)
Definition: document.h:91
This file is part of the KDE documentation.
Documentation copyright © 1996-2021 The KDE developers.
Generated on Fri Apr 9 2021 22:35:40 by doxygen 1.8.11 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.