[Gelöst]BinaryReader

Bild Microsoft Dynamics 365 Business Central (ehem. Business-Edition)

[Gelöst]BinaryReader

Beitragvon FragenFrager » 25. April 2023 13:59

Hallo,
ich versuche immer noch, ein PDF als Hintergrund/Wasserzeichen in einem RDLC-Report zu drucken.
Dabei bin ich auch auf diesen Link gestoĂźenhttps://stackoverflow.com/questions/37404789/display-blob-field-containing-text-in-rdlc-report-dynamics-nav
Ich wollte das dann sogleich ausprobieren, dummerweise finde ich den binary-Reader schlicht und ergreifend nicht, unter den Assemblys wird er mir nicht angezeigt. Oder wurde der durch etwas anderes ersetzt?
Muss der separat installiert werden? Die verwendete Navision-Version ist BC365 14.0.45810
Zuletzt geändert von FragenFrager am 27. April 2023 09:45, insgesamt 1-mal geändert.
FragenFrager
 
Beiträge: 126
Registriert: 29. Juni 2010 19:15
Bezug zu Microsoft Dynamics: Microsoft Partner
Microsoft Dynamics Produkt: Microsoft Dynamics NAV
Microsoft Dynamics Version: 2.01,3.70,4.0,5.0,2009

Re: BinaryReader

Beitragvon fiddi » 25. April 2023 15:18

Hallo,

den Binray- Reader gibt es nur als Dotnet, und kostet damit Geld in neueren BC- Versionen, da der Code damit nicht CloudReady ist.

Aber in den Antworten steht doch schon einen Antwort ohne Binary Reader drin.

GruĂź Fiddi
Wer aufhört besser zu werden, hat aufgehört gut zu sein. (frei nach Philip Rosenthal)
Frage beantwortet? Schreibe bitte [Gelöst] vor den Titel des ersten Beitrags.
Bitte erst suchen, dann fragen. Bitte beachte den kleinen Community-Knigge.
Kein Support per PN, Mail, IM oder Telefon! DafĂĽr ist dieses Forum da.
fiddi
Moderator
Moderator
 
Beiträge: 7095
Registriert: 9. Juni 2008 10:13
Realer Name: Hans Heinrich Fiddelke
Arbeitsort: Bremen
Bezug zu Microsoft Dynamics: Microsoft Partner
Microsoft Dynamics Produkt: Microsoft Dynamics NAV
Microsoft Dynamics Version: NAV2.6-aktuell

Re: BinaryReader

Beitragvon FragenFrager » 25. April 2023 15:31

Hallo Fiddi,
danke fĂĽr die Info.
InStream (Variante 2) scheidet aus, da ich den in den DataItems nicht als Column angeben kann (oder doch?)
Die dritte Variante (BigText) wĂĽrde ich nochmal ausprobieren.
FragenFrager
 
Beiträge: 126
Registriert: 29. Juni 2010 19:15
Bezug zu Microsoft Dynamics: Microsoft Partner
Microsoft Dynamics Produkt: Microsoft Dynamics NAV
Microsoft Dynamics Version: 2.01,3.70,4.0,5.0,2009

Re: BinaryReader

Beitragvon fiddi » 25. April 2023 16:29

Hallo,
nStream (Variante 2) scheidet aus, da ich den in den DataItems nicht als Column angeben kann (oder doch?)


Was meinst du wie Bilder in den Report kommen?
Du musst den Stream in BC einfach nur Mime-encoden bevor du Ihn als ganz normales Textfeld an den Report übergibst. Im Report holst du dann - wie bei den Bildern - die Binärdaten wieder per Mime-decode wieder aus dem Text raus.

GruĂź fiddi
Wer aufhört besser zu werden, hat aufgehört gut zu sein. (frei nach Philip Rosenthal)
Frage beantwortet? Schreibe bitte [Gelöst] vor den Titel des ersten Beitrags.
Bitte erst suchen, dann fragen. Bitte beachte den kleinen Community-Knigge.
Kein Support per PN, Mail, IM oder Telefon! DafĂĽr ist dieses Forum da.
fiddi
Moderator
Moderator
 
Beiträge: 7095
Registriert: 9. Juni 2008 10:13
Realer Name: Hans Heinrich Fiddelke
Arbeitsort: Bremen
Bezug zu Microsoft Dynamics: Microsoft Partner
Microsoft Dynamics Produkt: Microsoft Dynamics NAV
Microsoft Dynamics Version: NAV2.6-aktuell

Re: BinaryReader

Beitragvon FragenFrager » 26. April 2023 11:25

Habe ich versucht, bin wie folgt vorgegangen:

Code: Alles auswählen
gtxWatermark   Text      
lrtTempBLOB   Record   TempBlob   
lisWatermark   InStream      

 IF lrtTempBLOB.Blob.HASVALUE THEN BEGIN
   lrtTempBLOB.CALCFIELDS(Blob);
   lrtTempBLOB.Blob.CREATEINSTREAM(lisWatermark,TEXTENCODING::UTF8);
   lisWatermark.READTEXT(gtxWatermark);   
 END;



Dann im RDLC Layout fĂĽr BackgroundImage als Source Embedded angegeben und fĂĽr Value den folgenden Ausdruck

Code: Alles auswählen
=System.Convert.ToBase64String(Fields!gtxWatermark.Value)


klappt leider immer noch nicht, es wird kein Hintergrund angezeigt. Was mache ich falsch?
FragenFrager
 
Beiträge: 126
Registriert: 29. Juni 2010 19:15
Bezug zu Microsoft Dynamics: Microsoft Partner
Microsoft Dynamics Produkt: Microsoft Dynamics NAV
Microsoft Dynamics Version: 2.01,3.70,4.0,5.0,2009

Re: BinaryReader

Beitragvon fiddi » 26. April 2023 13:20

Hallo,

ich gehe mal davon aus, das in deinem BLOB ein Bild ist. Dann solltest du beim BLOB nicht mit TETXENCODING arbeiten, dadurch wird das Bild nicht zu transportablem Text, sondern zu Kauderwelsch.
Die Daten aus dem nicht encodierten Blob.Stream mĂĽssen mit der Codeunit "Base64 Convert" in Base64 konvertiert werden, erst dann kannst du das als Text weitergeben.

Im Bericht musst du dann aus dem Base64 wieder dein Bild machen, das wird eher mit der Funktion
Code: Alles auswählen
System.Convert.FromBase64String
funktionieren.

GruĂź Fiddi
Wer aufhört besser zu werden, hat aufgehört gut zu sein. (frei nach Philip Rosenthal)
Frage beantwortet? Schreibe bitte [Gelöst] vor den Titel des ersten Beitrags.
Bitte erst suchen, dann fragen. Bitte beachte den kleinen Community-Knigge.
Kein Support per PN, Mail, IM oder Telefon! DafĂĽr ist dieses Forum da.
fiddi
Moderator
Moderator
 
Beiträge: 7095
Registriert: 9. Juni 2008 10:13
Realer Name: Hans Heinrich Fiddelke
Arbeitsort: Bremen
Bezug zu Microsoft Dynamics: Microsoft Partner
Microsoft Dynamics Produkt: Microsoft Dynamics NAV
Microsoft Dynamics Version: NAV2.6-aktuell

Re: BinaryReader

Beitragvon FragenFrager » 26. April 2023 14:53

Hallo Fiddi,
erstmal danke fĂĽr die Infos.
Der Briefbogen ist ein PDF mit einem Firmenlogo rechts oben in der Ecke.
Ich habe meinen Code jetzt wie folgt geändert.

Code: Alles auswählen
IF lrtTempBLOB.Blob.HASVALUE THEN BEGIN
    lrtTempBLOB.CALCFIELDS(Blob);
    gtxWatermark := lrtTempBLOB.ToBase64String;


Und im Design des Reports entsprechend:
Code: Alles auswählen
=System.Convert.FromBase64String(Fields!gtxWatermark.Value)


Leider wird immer noch nichts angezeigt, egal, ob ich als Source Database (mit dem MIMEType image/bmp) oder Embedded angebe.
Vielleicht einmal zur Info, wenn ich das Firmenlogo (nur das Logo als PNG, nicht den Briefbogen) direkt im Feld 29 in der Tabelle 79 abspeichere, geht es, zumindest wird etwas ausgedruckt.
Nur, wenn ich zur Laufzeit das komplette PDF als BLOB in der TempBlob abspeichere, scheint es irgendwo auf dem Weg verloren zu gehen.

Ich habe dann noch versucht, mir den Inhalt des BLOBs nach dem CALCFIELDS hierĂĽber auszugeben:

Code: Alles auswählen
MESSAGE('%1',lrtTempBLOB.ToBase64String);


Es wird nur ein leeres Fenster angezeigt. Keine Ahnung, ob das mit der MESSAGE ĂĽberhaupt gehen kann, den Trick habe ich hier geklaut
https://community.dynamics.com/nav/f/microsoft-dynamics-nav-forum/364294/convert-pdf-to-base64-using-outstream
FragenFrager
 
Beiträge: 126
Registriert: 29. Juni 2010 19:15
Bezug zu Microsoft Dynamics: Microsoft Partner
Microsoft Dynamics Produkt: Microsoft Dynamics NAV
Microsoft Dynamics Version: 2.01,3.70,4.0,5.0,2009

Re: BinaryReader

Beitragvon fiddi » 26. April 2023 16:59

Hallo,

bei TempBlob (Tabelle) solltest du kein CalcFields machen, da du damit den Inhalt des Blobs löschst, weil er ja gar nicht gespeichert wurde, sondern nur durch die Gegend geschoben wird.

Ich fĂĽrchte aber, das du dann zwar Daten siehst, aber immer noch kein Wasserzeichen. Da fĂĽr muss es sich zwingend um ein Image handeln (BMP/Jpeg/PNG)

GruĂź Fiddi
Wer aufhört besser zu werden, hat aufgehört gut zu sein. (frei nach Philip Rosenthal)
Frage beantwortet? Schreibe bitte [Gelöst] vor den Titel des ersten Beitrags.
Bitte erst suchen, dann fragen. Bitte beachte den kleinen Community-Knigge.
Kein Support per PN, Mail, IM oder Telefon! DafĂĽr ist dieses Forum da.
fiddi
Moderator
Moderator
 
Beiträge: 7095
Registriert: 9. Juni 2008 10:13
Realer Name: Hans Heinrich Fiddelke
Arbeitsort: Bremen
Bezug zu Microsoft Dynamics: Microsoft Partner
Microsoft Dynamics Produkt: Microsoft Dynamics NAV
Microsoft Dynamics Version: NAV2.6-aktuell

Re: BinaryReader

Beitragvon FragenFrager » 27. April 2023 09:31

Hallo Fiddi,
das CALCFIELDS habe ich jetzt weggelassen und mir den Inhalt des BLOBs parallel zum Ausdruck per MESSAGE ausgeben lassen. Dort sehe ich die Daten, der Hintergrund beim Ausdruck bleibt jedoch immer noch penetrant weiss. :?: :-(
Aber okay, ich halte für mich fest, dass es unter RDLC anscheinend nicht so ohne weiteres möglich ist, ein PDF als Briefpapier zu hinterlegen.
Danke trotzdem fĂĽr die Tipps und Hinweise.
FragenFrager
 
Beiträge: 126
Registriert: 29. Juni 2010 19:15
Bezug zu Microsoft Dynamics: Microsoft Partner
Microsoft Dynamics Produkt: Microsoft Dynamics NAV
Microsoft Dynamics Version: 2.01,3.70,4.0,5.0,2009

Re: BinaryReader

Beitragvon BastianB » 27. April 2023 11:09

Hast du mal probiert das PDF in ein Image umzuwandeln (BMP/Jpeg/PNG) und dieses im "Blob" zu hinterlegen? :shock:
BastianB
 
Beiträge: 38
Registriert: 30. November 2022 12:19
Wohnort: Glauchau
Realer Name: Bastian Benicke
Arbeitsort: Neuenkirchen
Bezug zu Microsoft Dynamics: End-Anwender
Microsoft Dynamics Produkt: Microsoft Dynamics NAV
Microsoft Dynamics Version: ab 2013R2

Re: [Gelöst]BinaryReader

Beitragvon FragenFrager » 27. April 2023 11:17

Nein, habe ich nicht. Ich habe nach einer Möglichkeit gesucht, ein PDF in ein Image umzuwandeln und bin auf diesen Beitrag gestoßen:

https://community.dynamics.com/ax/f/microsoft-dynamics-ax-forum/242173/convert-pdf-as-image/938625

Demnach geht es nur mit 3rd-Party-Tools und/oder viel Programmierarbeit. Dann kann ich den Report aber auch gleich in ForNav konvertieren, damit lässt sich auch ein PDF hinterlegen.
Vielleicht mal zur Erklärung, wir haben diverse Custom-Reports, alle ForNav-konvertiert. Für die ist das Briefpapier als PDF hinterlegt, was ja auch problemlos geht.
Nun sollte aber auch für die Gelangensbestätigung (Standard-Report 780) dieses Briefpapier als Hintergrund erscheinen. Dieser Report hat jedoch noch RDLC-Layout.
Nach langem hin- und her bin ich mit der Projektleitung übereingekommen, eine Kopie von der Gelangensbestätigung zu erstellen, diese ForNav zu konvertieren und dann anstelle von Report 780 einzubinden.
FragenFrager
 
Beiträge: 126
Registriert: 29. Juni 2010 19:15
Bezug zu Microsoft Dynamics: Microsoft Partner
Microsoft Dynamics Produkt: Microsoft Dynamics NAV
Microsoft Dynamics Version: 2.01,3.70,4.0,5.0,2009

Re: [Gelöst]BinaryReader

Beitragvon BastianB » 27. April 2023 12:35

Aber das umwandeln ist doch ein einmaliger Vorgang, dazu kann doch z.B. ein online Tool wie https://pdftoimage.com/de/ verwendet werden. Dann hast du das Briefpapier als Image und kannst es in ein "Blob" Feld speichern.
BastianB
 
Beiträge: 38
Registriert: 30. November 2022 12:19
Wohnort: Glauchau
Realer Name: Bastian Benicke
Arbeitsort: Neuenkirchen
Bezug zu Microsoft Dynamics: End-Anwender
Microsoft Dynamics Produkt: Microsoft Dynamics NAV
Microsoft Dynamics Version: ab 2013R2

Re: [Gelöst]BinaryReader

Beitragvon FragenFrager » 27. April 2023 13:02

danke fĂĽr die Info, ich werd's ausprobieren.
FragenFrager
 
Beiträge: 126
Registriert: 29. Juni 2010 19:15
Bezug zu Microsoft Dynamics: Microsoft Partner
Microsoft Dynamics Produkt: Microsoft Dynamics NAV
Microsoft Dynamics Version: 2.01,3.70,4.0,5.0,2009


ZurĂĽck zu 365 Business Central

Wer ist online?

Mitglieder in diesem Forum: oxy und 1 Gast