Autor Thema: Screenshot im Dokument begrenzen  (Gelesen 5704 mal)

Offline Bruce Willis

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.002
  • Geschlecht: Männlich
  • Wer nicht wagt...
Screenshot im Dokument begrenzen
« am: 08.07.13 - 14:55:28 »
Hallo,

ich möchte unterbinden, dass man zu große Screenshots in Dokumente einfügt.
z.B. max 800 x 600 Pixel

Wie komme ich an die Größe ran?

Der erster Versuch scheitert irgendwie bzw. liefert nur Schrott:

Code
Function fEmbeddedObjects (doc As NotesDocument)
	
	'Dim doc As NotesDocument
	Dim rtitem As Variant
	'...set value of doc...
	
	'LE Check
	If doc.HasEmbedded Then
		Print "Doc contains an object, link, or attachment"
	Else
		Print "Doc has no objects, links, or attachments"
	End If
	
	'LE List
	Set rtitem = doc.GetFirstItem( "Body" )
	If ( rtitem.Type = RICHTEXT ) And IsArray(rtitem.EmbeddedObjects)  Then
		ForAll o In rtitem.EmbeddedObjects
			If ( o.Type = EMBED_ATTACHMENT ) Then
				Print "Anhang entdeckt..."
			ElseIf ( o.Type = EMBED_OBJECT ) Then
				Print "Eingebettetes Bild o.ä. entdeckt..."
			ElseIf ( o.Type = EMBED_OBJECTLINK ) Then
				Print "Link entdeckt..."		
			End If
		End ForAll
	Else
		Print "Nur reiner Text entdeckt"
	End If

End Function

Gruß
Leo
nobody is perfect but i'm pretty close 

Offline pram

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.170
  • Geschlecht: Männlich
    • Foconis Object Framework
Re: Screenshot im Dokument begrenzen
« Antwort #1 am: 08.07.13 - 15:02:21 »
Dies ist ziemlich schwierig.
Zuerst: Welche Größe willst du beschränken? Die tatsächliche Auflösung des Files oder die skalierte Version (User könnte ein 8MP Bild einfügen und über die Notes-Skalierfunktion verkleinern)
Dann musst du das Dokument/Item mittels DXL (oder C API) auslesen. Hier findest du dann Informationen der Art: "<picture width='50px' height='15px' scaledheight='0.1563in' scaledwidth='0.5208in'....>" Diese Infos sollten in den meisten Fällen ausreichen.

Wenn du die tatsächlichen Abmessungen des GIF/JPG/PNG willst, musst du dich weiterhin mit den Bildformaten auseinandersetzen.

Gruß
Roland
Roland Praml

IBM Certified Application Developer - Lotus Notes and Domino 8
Ich verwende das Foconis Object Framework

Offline Bruce Willis

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.002
  • Geschlecht: Männlich
  • Wer nicht wagt...
Re: Screenshot im Dokument begrenzen
« Antwort #2 am: 08.07.13 - 15:12:01 »
Hallo Roland,

Danke für Deine schnelle Antwort.

Dies ist ziemlich schwierig.
:-[

Zuerst: Welche Größe willst du beschränken?
Eigentlich das, was gesehen wird.

Wir haben eine Tabelle ("feste Breite") in der Maske.
Wenn dann das Screenshot länger als 21 cm ist,
1. Problem: Tabelle sieht sehr schlecht aus
2. Problem: Screenshot verschwindet ab und zu aus unbekannten Gründen beim Speichern des Doks  :-:

Und das Dok hat plötzlich mehere Felder "Body" statt einem...  :-:

Gruß
Leo
« Letzte Änderung: 08.07.13 - 15:14:27 von Bruce Willis »
nobody is perfect but i'm pretty close 

Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Re: Screenshot im Dokument begrenzen
« Antwort #3 am: 08.07.13 - 15:33:08 »
Mehrere Body-Felder sollten Dich nicht stören, denn das ist kein Fehler, sondern ein Feature. Notes teilt große Richtextfelder in mehrere gleichnamige Items auf.

Offline Bruce Willis

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.002
  • Geschlecht: Männlich
  • Wer nicht wagt...
Re: Screenshot im Dokument begrenzen
« Antwort #4 am: 11.07.13 - 16:38:15 »
Kann man per LS irgendwie ermitteln,

1. wie viele Body-Felder ein Dokument hat?
2. wie groß (in KB) ein Screenshot ist?

Gruß
Leo
nobody is perfect but i'm pretty close 

Offline pram

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.170
  • Geschlecht: Männlich
    • Foconis Object Framework
Re: Screenshot im Dokument begrenzen
« Antwort #5 am: 11.07.13 - 18:02:46 »
1
Code
set item = doc.getFirstItem("Body")
do until item is nothing
  item.remove
  set item = doc.getFirstItem("Body")
  i = i + 1
loop
Das Item ist dann natürlich weg, also besser auf einer Kopie machen. Aber wie Peter schon schrieb, ist es völlig normal, wenn es mehrere Body-Items gibt.

2.
Über Notes-Bordmittel (enbeddedobjects etc) kommst du nicht an den Screenshot ran, nur über Umwege wie DXL.
Ggf. hilft dir doc.length weiter. (Wobei man aus der Größe nicht auf die Auflösung schließen kann)

Der einzig saubere Weg wäre m.E. über DXL (oder C-API) auf den Richtext zuzugreifen und daraus die Bild-Abmessungen zu ermitteln.

Gruß
Roland
Roland Praml

IBM Certified Application Developer - Lotus Notes and Domino 8
Ich verwende das Foconis Object Framework

Offline Bruce Willis

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.002
  • Geschlecht: Männlich
  • Wer nicht wagt...
Re: Screenshot im Dokument begrenzen
« Antwort #6 am: 15.07.13 - 11:06:17 »
Nochmals Danke!

Woran könnte es liegen, dass das BODY-Feld mit großen Screenshots beim Speichern des Dokuments gelöscht wird?

Hier z.B. wird eine Mail mit einem bestimmten Text und dem Inhalt des Doks-Body verschickt, dann wird der Text in ein anderes Feld des Doks eingetragen und das Dok wird gespeichert:

Code
	'RT-Body holen	
	Dim rtitemB As NotesRichTextItem					
	Set rtitemB = doc.GetFirstItem("Body")
        .....
        Call uidoc.Save

Gruß
Leo
nobody is perfect but i'm pretty close 

Offline pram

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.170
  • Geschlecht: Männlich
    • Foconis Object Framework
Re: Screenshot im Dokument begrenzen
« Antwort #7 am: 15.07.13 - 14:02:51 »
Gerade bei Richtextfeldern muss man aufpassen, wenn man Backend und Frontendoperationen vermischt.
-> Du greifst auf das RT-Feld im Backend zu (doc.getFirstItem)
-> Du speicherst das Dokument im Frontend.
Wenn du glück hast, reicht ein rtItem.compact() oder rtItem.update() vor dem Save.

Besonders heikel wird es aber, wenn das Feld im UI existiert und gleichzeitig im Backend manipuliert wird. Dabei kommt man oft nicht ohne Tricks wie z.B. einen Reopen aus.

Gruß
Roland
Roland Praml

IBM Certified Application Developer - Lotus Notes and Domino 8
Ich verwende das Foconis Object Framework

Offline Bruce Willis

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.002
  • Geschlecht: Männlich
  • Wer nicht wagt...
Re: Screenshot im Dokument begrenzen
« Antwort #8 am: 15.07.13 - 14:32:17 »
Cool!
Vielen Dank!

Letze Frage: :)
Wann sollte man RT als NotesRichTextItem und wann als Variant definieren?

Gruß
Leo

nobody is perfect but i'm pretty close 

Offline Tode

  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 6.885
  • Geschlecht: Männlich
  • Geht nicht, gibt's (fast) nicht... *g*
Re: Screenshot im Dokument begrenzen
« Antwort #9 am: 15.07.13 - 14:35:40 »
Ein Richtextitem definiert man IMMER als Richtextitem... Warum sollte man hier Variant wählen?
Gruss
Torsten (Tode)

P.S.: Da mein Nickname immer mal wieder für Verwirrung sorgt: Tode hat NICHTS mit Tod zu tun. So klingt es einfach, wenn ein 2- Jähriger versucht "Torsten" zu sagen... das klingt dann so: "Tooode" (langes O, das r, s und n werden verschluckt, das t wird zum badischen d)

Offline Bruce Willis

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.002
  • Geschlecht: Männlich
  • Wer nicht wagt...
Re: Screenshot im Dokument begrenzen
« Antwort #10 am: 15.07.13 - 14:44:00 »
Ein Richtextitem definiert man IMMER als Richtextitem... Warum sollte man hier Variant wählen?

Na ja...
Hier z.B. ein Beispiel, das allerdings bei mir falsche Ergebnisse liefert:

Code
This script counts the number of embedded objects, object links, and file attachments in the 
Body item of a document, and prints the results in the status bar. For example, the script 
prints "3 attachments 2 links 4 objects."
Dim doc As NotesDocument
Dim rtitem As Variant
Dim attachCount As Integer
Dim linkCount As Integer
Dim objectCount As Integer
'...set value of doc...
Set rtitem = doc.GetFirstItem( "Body" )
attachCount = 0
linkCount = 0
objectCount = 0
If ( rtitem.Type = RICHTEXT ) Then
  Forall o In rtitem.EmbeddedObjects
    Select Case o.Type
    Case EMBED_ATTACHMENT:
      attachCount = attachCount + 1
    Case EMBED_OBJECTLINK:
      linkCount = linkCount + 1
    Case EMBED_OBJECT:
      objectCount = objectCount + 1
    End Select
  End Forall
End If
Print( attachCount & " attachments " & linkCount & _
" links " & objectCount & " objects " )
nobody is perfect but i'm pretty close 

Offline pram

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.170
  • Geschlecht: Männlich
    • Foconis Object Framework
Re: Screenshot im Dokument begrenzen
« Antwort #11 am: 15.07.13 - 15:09:52 »
das macht man (ich) normal so:

Code
This script counts the number of embedded objects, object links, and file attachments in the 
Body item of a document, and prints the results in the status bar. For example, the script 
prints "3 attachments 2 links 4 objects."
Dim doc As NotesDocument
Dim item as NotesItem
Dim rtitem As NotesRichtextItem
Dim attachCount As Integer
Dim linkCount As Integer
Dim objectCount As Integer
'...set value of doc...
Set item = doc.GetFirstItem( "Body" )
attachCount = 0
linkCount = 0
objectCount = 0
If not item is nothing then  ' test if item exists!
 If ( item.Type = RICHTEXT ) Then
  set rtItem = item ' if item is type of richtext.
  Forall o In rtitem.EmbeddedObjects
    Select Case o.Type
    Case EMBED_ATTACHMENT:
      attachCount = attachCount + 1
    Case EMBED_OBJECTLINK:
      linkCount = linkCount + 1
    Case EMBED_OBJECT:
      objectCount = objectCount + 1
    End Select
  End Forall
 End If
End If
Print( attachCount & " attachments " & linkCount & _
" links " & objectCount & " objects " )
   
Roland Praml

IBM Certified Application Developer - Lotus Notes and Domino 8
Ich verwende das Foconis Object Framework

Offline Bruce Willis

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.002
  • Geschlecht: Männlich
  • Wer nicht wagt...
Re: Screenshot im Dokument begrenzen
« Antwort #12 am: 19.07.13 - 09:51:46 »
...
Wenn du glück hast, reicht ein rtItem.compact() oder rtItem.update() vor dem Save
....

Hallo Roland,

ich hab beides eingetragen. Sicher ist sicher! ;)

Heute kam das Problem wieder.
Die Screenshots hier zeigen, wie das Body vor dem Versenden/Speichern und danach aussah...  :-:
(Maßstab geändert)

Allerdinds ist das Body nicht vollständig verschwunden wie früher...

Any ideas zum Workaround? :)

Gruß
Leo
« Letzte Änderung: 19.07.13 - 09:55:25 von Bruce Willis »
nobody is perfect but i'm pretty close 

Offline pram

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.170
  • Geschlecht: Männlich
    • Foconis Object Framework
Re: Screenshot im Dokument begrenzen
« Antwort #13 am: 19.07.13 - 15:26:58 »
Die Schrift ist auch völlig anders, hast du etwa "Store Contents as MIME/HTML" im Feld aktiviert oder wurde das Dokument in irgend einer Weise (MailRouter/Bearbeitung im Web) von HTML in Richtext oder umgekehrt konvertiert.

Gruß
Roland
Roland Praml

IBM Certified Application Developer - Lotus Notes and Domino 8
Ich verwende das Foconis Object Framework

Offline Bruce Willis

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.002
  • Geschlecht: Männlich
  • Wer nicht wagt...
Re: Screenshot im Dokument begrenzen
« Antwort #14 am: 19.07.13 - 15:34:14 »
Die Schrift ist auch völlig anders
Stimmt, hatte ich nicht beachtet. Die Punkte sind auch verschwunden.

hast du etwa "Store Contents as MIME/HTML" im Feld aktiviert
Nein, hab gerade überprüft.

oder wurde das Dokument in irgend einer Weise (MailRouter/Bearbeitung im Web) von HTML in Richtext oder umgekehrt konvertiert.
Gute Frage... Das Dok wurde definitiv nicht hin und her gemailt und auch nicht im Web erstellt oder bearbeitet...  :-:
« Letzte Änderung: 19.07.13 - 15:35:50 von Bruce Willis »
nobody is perfect but i'm pretty close 

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz