[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: KDE/kdegraphics/kviewshell/plugins/pdf
From: Stefan Kebekus <kebekus () kde ! org>
Date: 2006-05-31 20:02:01
Message-ID: 1149105721.830411.20879.nullmailer () svn ! kde ! org
[Download RAW message or body]
SVN commit 547088 by kebekus:
fix printing for PDF files
M +35 -1 pdfMultipage.cpp
M +2 -0 pdfMultipage.h
M +10 -0 pdfRenderer.cpp
M +15 -0 pdfRenderer.h
--- trunk/KDE/kdegraphics/kviewshell/plugins/pdf/pdfMultipage.cpp #547087:547088
@@ -25,6 +25,8 @@
#include <kconfigdialog.h>
#include <kfiledialog.h>
#include <kparts/genericfactory.h>
+#include <kprinter.h>
+#include <ktempfile.h>
#include "pdfMultipage.h"
#include "pdfWidget.h"
@@ -127,7 +129,7 @@
void PdfMultiPage::inverseSearch(const PageNumber& pageNumber, QPoint point, bool call)
{
-// FIXME
+#warning FIXME
/*
Length x;
Length y;
@@ -141,4 +143,36 @@
}
+void PdfMultiPage::print()
+{
+ // Paranoid safety checks
+ if (pdfRenderer.isEmpty())
+ return;
+
+ // Allocate the printer structure
+ KPrinter *printer = getPrinter(false);
+ if (printer == 0)
+ return;
+
+ // initialize the printer using the print dialog
+ if ( printer->setup(parentWdg, i18n("Print %1").arg(m_file.section('/', -1))) ) {
+ // Now do the printing.
+ QList<int> pageList = printer->pageList();
+ if (pageList.isEmpty())
+ printer->abort();
+ else {
+ KTempFile tmpPSFile(QString::null, "ps");
+ tmpPSFile.close();
+ tmpPSFile.setAutoDelete(true);
+
+ if (pdfRenderer.convertToPSFile(tmpPSFile.name(), pageList ) == true)
+ printer->printFiles( QStringList(tmpPSFile.name()), true );
+ else
+ printer->abort();
+ }
+ delete printer;
+ }
+}
+
+
#include "pdfMultipage.moc"
--- trunk/KDE/kdegraphics/kviewshell/plugins/pdf/pdfMultipage.h #547087:547088
@@ -121,6 +121,8 @@
virtual DocumentWidget* createDocumentWidget(PageView *parent, DocumentPageCache *cache);
+ virtual void print();
+
protected:
virtual void setFile(bool success);
virtual void enableActions(bool);
--- trunk/KDE/kdegraphics/kviewshell/plugins/pdf/pdfRenderer.cpp #547087:547088
@@ -452,6 +452,16 @@
}
+bool PdfRenderer::convertToPSFile(QString filename, QList<int> &pageList )
+{
+ if (document == 0)
+ return false;
+
+#warning THIS BLOCKS THE GUI FOR SOME TIME, AN ASYNC METHOD WOULD BE BETTER
+ return document->print(filename, pageList, 600, 600, 0);
+}
+
+
void PdfRenderer::inverseSearch(PageNumber pageNumber, Length x, Length y, bool call)
{
if (!pageNumber.isValid() || pageNumber > numPages)
--- trunk/KDE/kdegraphics/kviewshell/plugins/pdf/pdfRenderer.h #547087:547088
@@ -124,6 +124,21 @@
virtual bool supportsTextSearch() const { return true; };
+ /** PDF to PostScript conversion
+
+ This method converts the document to a PostScript file.
+
+ @param filename name of the PostScript file to generate
+
+ @param pageList list of pages that are to be converted, with the
+ usual convention that "1" means "first page"
+
+ @returns 'true' if the conversion was successful, 'false' if it
+ wasn't. The conversion can fail, for example, when the user aborts
+ the operation.
+ */
+ bool convertToPSFile(QString filename, QList<int> &pageList );
+
void inverseSearch(PageNumber pageNumber, Length x, Length y, bool call = false);
/** This method will try to parse the reference part of the PDF
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic