QGIS API Documentation
4.3.0-Master (16eddb2670e)
Toggle main menu visibility
Loading...
Searching...
No Matches
src
server
services
wms
qgspdfwriter.cpp
Go to the documentation of this file.
1
/***************************************************************************
2
qgspdfwriter.cpp
3
-------------------------------------------------------------------
4
Date : 09 October 2023
5
Copyright : (C) 2023
6
email : marco.hugentobler at sourcepole dot com
7
8
***************************************************************************
9
* *
10
* This program is free software; you can redistribute it and/or modify *
11
* it under the terms of the GNU General Public License as published by *
12
* the Free Software Foundation; either version 2 of the License, or *
13
* (at your option) any later version. *
14
* *
15
***************************************************************************/
16
17
#include "
qgspdfwriter.h
"
18
19
#include "
qgsapplication.h
"
20
#include "
qgsmaprenderertask.h
"
21
#include "
qgsmapsettings.h
"
22
#include "
qgsmodule.h
"
23
#include "
qgswmsrenderer.h
"
24
25
#include <QString>
26
27
using namespace
Qt::StringLiterals;
28
29
namespace
QgsWms
30
{
31
void
writeAsPdf
(
QgsServerInterface
*serverIface,
const
QgsProject
*project,
const
QgsWmsRequest
&request,
QgsServerResponse
&response )
32
{
33
QgsWmsRenderContext
context( project, serverIface );
34
context.
setFlag
(
QgsWmsRenderContext::UpdateExtent
);
35
context.
setFlag
(
QgsWmsRenderContext::UseOpacity
);
36
context.
setFlag
(
QgsWmsRenderContext::UseFilter
);
37
context.
setFlag
(
QgsWmsRenderContext::UseSelection
);
38
context.
setFlag
(
QgsWmsRenderContext::AddHighlightLayers
);
39
context.
setFlag
(
QgsWmsRenderContext::AddExternalLayers
);
40
context.
setFlag
(
QgsWmsRenderContext::SetAccessControl
);
41
context.
setFlag
(
QgsWmsRenderContext::UseTileBuffer
);
42
context.
setParameters
( request.
wmsParameters
() );
43
QTemporaryFile tmpFile;
44
if
( !tmpFile.open() )
45
{
46
QgsDebugError
( u
"Can't open temporary file"
_s );
47
// TODO return error to the user?
48
}
49
QgsRenderer
renderer( context );
50
std::unique_ptr<QgsMapRendererTask> pdfTask = renderer.
getPdf
( tmpFile.fileName() );
51
QgsApplication::taskManager
()->
addTask
( pdfTask.get() );
52
pdfTask->waitForFinished();
53
response.
setHeader
(
"Content-Type"
,
"application/pdf"
);
54
response.
write
( tmpFile.readAll() );
55
tmpFile.close();
56
}
57
}
// namespace QgsWms
QgsApplication::taskManager
static QgsTaskManager * taskManager()
Returns the application's task manager, used for managing application wide background task handling.
Definition
qgsapplication.cpp:2544
QgsProject
Encapsulates a QGIS project, including sets of map layers and their styles, layouts,...
Definition
qgsproject.h:114
QgsServerInterface
Defines interfaces exposed by QGIS Server and made available to plugins.
Definition
qgsserverinterface.h:61
QgsServerResponse
Defines the response interface passed to QgsService.
Definition
qgsserverresponse.h:42
QgsServerResponse::write
virtual void write(const QString &data)
Write string This is a convenient method that will write directly to the underlying I/O device.
Definition
qgsserverresponse.cpp:29
QgsServerResponse::setHeader
virtual void setHeader(const QString &key, const QString &value)=0
Set a single header value replacing any existing value(s) for the same key.
QgsTaskManager::addTask
long addTask(QgsTask *task, int priority=0)
Adds a task to the manager.
Definition
qgstaskmanager.cpp:424
QgsWms::QgsRenderer
Map renderer for WMS requests.
Definition
qgswmsrenderer.h:71
QgsWms::QgsRenderer::getPdf
std::unique_ptr< QgsMapRendererTask > getPdf(const QString &tmpFileName)
Returns a configured pdf export task.
Definition
qgswmsrenderer.cpp:1233
QgsWms::QgsWmsRenderContext
Rendering context for the WMS renderer.
Definition
qgswmsrendercontext.h:35
QgsWms::QgsWmsRenderContext::setParameters
void setParameters(const QgsWmsParameters ¶meters)
Sets WMS parameters.
Definition
qgswmsrendercontext.cpp:48
QgsWms::QgsWmsRenderContext::setFlag
void setFlag(Flag flag, bool on=true)
Sets or unsets a rendering flag according to the on value.
Definition
qgswmsrendercontext.cpp:71
QgsWms::QgsWmsRenderContext::UseFilter
@ UseFilter
Definition
qgswmsrendercontext.h:42
QgsWms::QgsWmsRenderContext::UseOpacity
@ UseOpacity
Definition
qgswmsrendercontext.h:41
QgsWms::QgsWmsRenderContext::AddHighlightLayers
@ AddHighlightLayers
Definition
qgswmsrendercontext.h:44
QgsWms::QgsWmsRenderContext::UseSelection
@ UseSelection
Definition
qgswmsrendercontext.h:43
QgsWms::QgsWmsRenderContext::UseTileBuffer
@ UseTileBuffer
Definition
qgswmsrendercontext.h:51
QgsWms::QgsWmsRenderContext::AddExternalLayers
@ AddExternalLayers
Definition
qgswmsrendercontext.h:49
QgsWms::QgsWmsRenderContext::SetAccessControl
@ SetAccessControl
Definition
qgswmsrendercontext.h:46
QgsWms::QgsWmsRenderContext::UpdateExtent
@ UpdateExtent
Definition
qgswmsrendercontext.h:45
QgsWms::QgsWmsRequest
Defines request interfaces passed to WMS service.
Definition
qgswmsrequest.h:35
QgsWms::QgsWmsRequest::wmsParameters
const QgsWmsParameters & wmsParameters() const
Returns the parameters interpreted for the WMS service.
Definition
qgswmsrequest.cpp:32
QgsWms
Median cut implementation.
Definition
qgsdxfwriter.cpp:27
QgsWms::writeAsPdf
void writeAsPdf(QgsServerInterface *serverIface, const QgsProject *project, const QgsWmsRequest &request, QgsServerResponse &response)
Output GetMap response in PDF format.
Definition
qgspdfwriter.cpp:31
qgsapplication.h
QgsDebugError
#define QgsDebugError(str)
Definition
qgslogger.h:71
qgsmaprenderertask.h
qgsmapsettings.h
qgsmodule.h
qgspdfwriter.h
qgswmsrenderer.h
Generated on
for QGIS API Documentation by
1.17.0