How does it work:
* What it does is really closing and opening the file again through poppler
* This means that things that are generated in "open" time like Page, Rects, Annotations, Forms need to be updated
* For Page what we do is swap the PagePrivate so that other classes that hold Page* don't break
* Since some parts of the PagePrivate can be reused, we move them in PagePrivate::adoptGeneratedContents
* For all the commands in the undo stack we need to update the annotations/forms it refers to, added a new function to do that
* The annotationmodel needs updating it's pointers
* The widgets for the forms are reused and their form* updated
* the widgets for the videos are recreased since videos don't really hold much content (you lose the playing status on save but i think that's acceptable)
TODO: Make this work for .okular files
TODO: For files with password we will need to reload the file, asking for the password again and thus losing the undo stack, warn the user
TODO: autotests
This patch updates our copy of the chm lib from kchmviewer. The lib files itself are an unmodified copy from kchmviewer 7.7, only our generator needed some changes. In contrast to kchmviewer we still use khtml and therefor still need msits.
REVIEW: 130226
Previously, rasterized printing would use the QPrinter backend whenever
annotations were to be printed, and fall back to the convert-to-ps
toolchain otherwise. Effectively, this meant that printing on
windows without showing the annotations was not possible (because
on windows only the QPrinter can be used for printing).
Starting with poppler 0.60, there is a way to disable annotation
rendering for the renderToImage and renderToPainter methods that
are used by QPrinter. This patch makes use of this new option,
making printing on windows without annotations possible.
Differential Revision: https://phabricator.kde.org/D7688
Don't have the textdocument and dir as members, pass them along
This is to make clear that this is a "one off stateless conversion",
i.e. after convert returns the converter doesn't own the textdocument
anymore, so better don't keep a pointer to it
When the user chooses to print with rasterization and annotations,
it is easy to print directly to a QPrinter, rather than converting
to PostScript and then using CUPS tools. The code for it was
already there, but it was hidden behind an #ifdef Q_OS_WIN.
This patch enables it for all plattforms. If nothing else,
it will make an interesting debugging tool, because it allows
to bypass the postscript & CUPS toolchain from the GUI.
This may allow to track down some of the numerous my-printer-settings-
are-getting-ignored bugs.
The previously windows-only rasterization code used printer.physicalDpiX()
as the rasterization resolution. At least on my machine this resulted
in a dpi value of 1200, which means quite a lot of memory is used.
I left the windows code untouched, but on Unix I lowered that value
to 300dpi, which is what the postscript rasterizer uses.
Incidentally, this patch does fix at least one bug for me:
Without it, my printer will happily ignore the 'print in grayscale'
button. With the patch, that button is suddenly honoured.
REVIEW: 130218
Summary:
In >=KF-5.38 target kimgiotest is only built if BUILD_TESTING=ON,
so subsequent target_compile_definitions will fail if OFF.
Reviewers: #okular
Subscribers: kfunk
Tags: #okular
Differential Revision: https://phabricator.kde.org/D7212