2016-08-24 15 views
0

Ich versuche, ein PDF meiner Ansicht in meinem MVC-Projekt zu erstellen und es in einem Azure-Blobspeicher zu speichern, ohne eine Kopie der Datei auf meinem Server zu haben.Erstelle PDF mit rotativa und speichere nach Azure-Blob

Ich verwende Rotativa, um meine pdf zu erstellen, und das funktioniert gut.

return new ActionAsPdf(ContractVersion) { FileName = "documentname.pdf" }; 

Ich verwende den folgenden Code, um eine Datei in Azure Storage zu speichern.

Aber ich weiß nicht, wie man die beiden Funktionen zusammenbringt, um die PDF aus der Sicht zu erstellen und dann in Blob zu speichern.

Ich hoffe, dass mein Problem klar ist. Danke im Voraus.

Antwort

0

Ich habe die Baugruppe herunterladen. Es hat nur drei Konstruktfunktionen. Alle Funktionen erstellen eine PDF-Datei.

enter image description here

Es scheint, dass wir die PDF-Datei als Vorlage-Datei zu speichern, dann laden zu Azure Blob benötigen.

+0

Vielen Dank für Ihre Hilfe. Ich nehme an, dass ich ein paar Optionen habe? Ich könnte eine Datei auf meinem Server erstellen, sie in Blob hochladen und dann erneut löschen. Oder vielleicht könnte ich versuchen, nach einem alternativen pdfwriter zu suchen. Was ist der empfohlene Ansatz? Ich bin ein Neuling in diesem Bereich und habe Serverdateien nie wirklich gespeichert, also möchte ich nicht den falschen Weg gehen. Danke noch einmal. – Ste

0

Ich erreichte es mit einer MVC5 Partial View in einer Controller-Methode, ich habe es aus Gründen der Übersichtlichkeit abgekürzt und nicht gezeigt, meine Azure-Service-Objekt, das das Blob-Objekt zurückgibt, wie dies Standard-MS Zeug ist. Funktioniert wie ein Leckerbissen!

  1. Rückgabe pdf von Rotativa;
  2. Verwenden Sie "BuildPdf", um in Byte-Array zu konvertieren;
  3. Setzen Sie es in einen Speicherstream;
  4. hochladen zu Azure Blob mit UploadFromStream auf Blob-Objekt

    var file = new Rotativa.PartialViewAsPdf("viewname", model) { FileName = "test" + ".pdf" }; byte[] applicationPDFData = file.BuildPdf(this.ControllerContext); Stream stream = new MemoryStream(applicationPDFData); blob.UploadFromStream(stream);

Verwandte Themen