"Schwärzen" von PDF - Anträgen
Vorüberlegung
Das Schwärzen erfolgt nicht auf der Basis von Berechtigungen der Klasse und erfolgt nicht automatisch.
Um allen Fällen gerecht zu werden, kann/muss der Ersteller der XSLT die bereitgestellten Mechanismem integrieren.
Umsetzung
Die Eigenschaft "Semantische Bedeutung" für Entitäten in der Ikx-Klassenstruktur wurden um das Attribut "SecurityCriticalContent" erweitert. Diese Werte werden nicht im normalen Puzzle-Prozess ausgewertet, stehen aber über den Abfruf der Klassenstruktur jederzeit zur Verfügung.
Es ist eine neue XSLT-Erweiterungsmethode "IkxIsEntityMeaningSet" vorhanden, die prüft ob diese Attribut an einer Entität vorhanden ist.
Zudem existiert die Möglichkeit, weitere Argumente die der XSLT übergeben wurden auszulesen. Diese Argumente können per QueryString, POST oder programmtechnisch übergeben werden.
Mit diesen beiden Möglichkeiten kann in einer XSLT die Steuerung, per Konvention, der Ausgabe genutzt werden.
Die XLST sind so aufgebaut, dass diese die Klassenstruktur "ablaufen" und dann gezielt die Werte aus dem aktuellen Dokument verwenden (mit einigen Ausnahmen, Betrachtung von Spezialfällen).
<xsl:variable
name="IS_SEC_CRITICAL"
select="cardoExtension:IkxIsEntityMeaningSet(
@entityMeaning,
'SecurityCriticalContent')
and
cardoExtension:GetArgumentValue('CRIT',-1) ='1'"/>
Anbei ein Auszug aus der (Testweise) angepassten BP_SBP_BBP.xslt
<xsl:template name="IterateIkxClassDef">
<xsl:for-each select="cardoExtension:IkxGetClassXml($className)/ikxdef:ClassDefintions/ikxdef:Class[@classId = $className]">
<!--
weiterer Code ...
....
-->
<!-- alle Entities der aktuellen Struktur .... -->
<xsl:for-each select="ikxdef:Entity">
<!--
Wenn an der Entität die "Semantische Bedeutung" SecurityCriticalContent und
wenn beim Aufruf der xslt SEC=true übergeben werden, dann ...
-->
<xsl:variable name="IS_SEC_CRITICAL" select="cardoExtension:IkxIsEntityMeaningSet(@entityMeaning,'SecurityCriticalContent') and cardoExtension:GetArgumentValue('CRIT',-1) ='1'"/>
<xsl:choose>
<!-- Geschwärtzer Inhalt -->
<xsl:when test="$IS_SEC_CRITICAL">
<table class="simpleValueContainer" xmlns="http://www.w3.org/1999/xhtml" cellpadding="0" cellspacing="0">
<colgroup>
<col width="200"/>
<col width="*"/>
</colgroup>
<tr xmlns="http://www.w3.org/1999/xhtml" valign="top">
<td class="simpleValueLabel">
<xsl:attribute name="title">
<xsl:value-of select="$currentDesc"/>
</xsl:attribute>
<xsl:value-of select="$currentLabel"/>:
</td>
<td>
<div xmlns="http://www.w3.org/1999/xhtml" style="width:140px;background-color:black;color:gray;text-align:center;font-style:italic;font-size:11px;"> </div>
</td>
</tr>
</table>
</xsl:when>
<!-- NICHT Geschwärtzer Inhalt -->
<xsl:otherwise>
<!--
Code, wie bisher
-->
</xsl:otherwise>
</xsl:choose>
</xsl:for-each>
</xsl:for-each>
</xsl:template>
Testen der Anpassungen
Der Handler ogc.ashx erlaubt den Abruf von Puzzle-Daten per Browser-Querystring.
Konkret kann die XSLT auf dem Manger wie folgt getestet werden:
http://cardoServer/net3/ogc.ashx?Service=Puzzle&Request=GetPDF&qid=7:225&crit=1
- Request GetPDF: PDF Dokument erzeugen (wird inline im Browser angezeigt)
- qid : QId des Dokumente (storeId:puzzleNodeId)
- crit : der per Konvention ausgedachte Wert, der per GetArgumentValue geprüft werden kann
Der Abruf erfolgt immmer "live", d.h. es werden keine Daten gecachet o.ö.
Integration in Bergpass
Derzeit werden die "geschwärzten" Dokumente als Schriftstück bei der Erstellung der TÖB Anschreiben im Elvis mit abgelegt. Dazu wird das XSLT immer mit dem Argument CRIT=1 aufgerufen.
Beachte: im Word (Button-Xslt) werden die Originalanhänge derzeit eingebettet. Diese Einbettung müsste dann im XLST des Button-Plans entfernt werden und beim Versandt der Dokumente an die TÖB das geschwärzte PDF separat mit übergeben werden.
Zuletzt geändert: 14.02.2024 12:56:29 (erstmals erstellt 16.10.2017)