Comment puis-je Rapports envoie de la ReportBuilder de fichiers PDF comme sur Intraweb en utilisant ExtraDevices?

StackOverflow https://stackoverflow.com/questions/1595803

  •  22-09-2019
  •  | 
  •  

Question

Nous utilisons Intraweb pour nos applications Web et également utilisons ReportBuilder pour les rapports pour nos applications Windows internes. Nous avons aussi ExtraDevices que nous avons utilisé pour nous permettre de sauver nos rapports de ReportBuilder sous forme de fichiers Excel.

Maintenant, je veux produire un rapport sur nos applications web sous forme de fichier PDF. J'ai un exemple sur la façon dont cela est fait avec ExtraDevices. Cependant, comment l'exemple suivant se changer avec Intraweb?

procedure TWebModule1.WebModule1WebActionItem1Action(Sender: TObject; Request:
  TWebRequest; Response: TWebResponse; var Handled: Boolean);
var
  HD: TPDFDevice;
  MS: TMemoryStream;
begin
  MS := TMemoryStream.Create;
  HD := TPDFDevice.Create(Self);
  HD.PrintToStream := True;
  HD.ReportStream := MS;
  HD.Publisher := Rpt.Publisher;
  Rpt.PrintToDevices;
  Response.ContentType := HD.ContentType;
  Response.ContentStream := MS;
  Response.SendResponse;
  HD.Free;
end;
Était-ce utile?

La solution

Je pense avoir trouvé la réponse à ma question. Je dois simplement utiliser TIWApplication.SendStream.

Le code serait modifié ainsi:

procedure TfrmSomeIWForm.SomeBtnClick(Sender: TObject);
var
  HD: TPDFDevice;
  MS: TMemoryStream;
begin
  MS := TMemoryStream.Create;
  HD := TPDFDevice.Create(Self);
  HD.PrintToStream := True;
  HD.ReportStream := MS;
  HD.Publisher := Rpt.Publisher;
  Rpt.PrintToDevices;
  WebApplication.SendStream(MS,false,HD.ContentType);
  HD.Free;
end;

Autres conseils

Avez-vous vu le RaveDemo livré avec Intraweb? Je crois qu'il fait ce que vous cherchez, mais avec Rave Reports. Je l'ai utilisé pour construire une version PDF Intraweb ReportBuilder un certain temps.

Je ne sais pas si ce flux le rapport bien. Cela a été un moment que je l'ai regardé, mais je pense qu'il peut l'enregistrer sur le disque plutôt que d'envoyer la réponse de la mémoire comme votre exemple.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top