2017-07-05 3 views
0

Ich versuche, eine XImage Funktion zu schreiben, die ein Bild von einer bestimmten URL liest und es sieht so aus:PDFsharp Ximage keinen Konstruktor enthält, enthält 1 Argument

public static XImage FromURI(string uri) 
    { 
     HttpWebRequest webRequest = (HttpWebRequest)HttpWebRequest.Create(uri); 
     webRequest.AllowWriteStreamBuffering = true; 
     WebResponse webResponse = webRequest.GetResponse(); 
     System.Drawing.Image image = System.Drawing.Image.FromStream(webResponse.GetResponseStream()); 
     webResponse.Close(); 
     PdfSharp.Drawing.XImage ximg = new PdfSharp.Drawing.XImage(image); 
     return new PdfSharp.Drawing.XImage(image); 
    } 

aber ich bin einen Fehler auf dem immer Linie

 return new PdfSharp.Drawing.XImage(image); 

Dort heißt es:

XImage does not contain a constructor that contains 1 argument. 

Wenn ich die XImage.cs Datei aussehen, es scheint, wie es ein Co hat nstructor mit 1 Argument.

namespace PdfSharp.Drawing 
{ 
    // 
    // Summary: 
    //  Defines an object used to draw image files (bmp, png, jpeg, gif) and PDF forms. 
    //  An abstract base class that provides functionality for the Bitmap and Metafile 
    //  descended classes. 
    public class XImage : IDisposable 
    { 
     // 
     // Summary: 
     //  Initializes a new instance of the PdfSharp.Drawing.XImage class. 
     protected XImage(); 

     // 
     // Summary: 
     //  Gets the vertical resolution of the image. 
     public virtual double VerticalResolution { get; } 
     // 
     // Summary: 
     //  Gets the horizontal resolution of the image. 
     public virtual double HorizontalResolution { get; } 
     // 
     // Summary: 
     //  Gets the size in point of the image. 
     public virtual XSize Size { get; } 
     // 
     // Summary: 
     //  Gets the height of the image in pixels. 
     public virtual int PixelHeight { get; } 
     // 
     // Summary: 
     //  Gets the width of the image in pixels. 
     public virtual int PixelWidth { get; } 
     // 
     // Summary: 
     //  Gets the height of the image in point. 
     public virtual double PointHeight { get; } 
     // 
     // Summary: 
     //  Gets the width of the image in point. 
     public virtual double PointWidth { get; } 
     // 
     // Summary: 
     //  Gets the height of the image. 
     [Obsolete("Use either PixelHeight or PointHeight. Temporarily obsolete because of rearrangements for WPF. Currently same as PixelHeight, but will become PointHeight in future releases of PDFsharp.")] 
     public virtual double Height { get; } 
     // 
     // Summary: 
     //  Gets the width of the image. 
     [Obsolete("Use either PixelWidth or PointWidth. Temporarily obsolete because of rearrangements for WPF. Currently same as PixelWidth, but will become PointWidth in future releases of PDFsharp.")] 
     public virtual double Width { get; } 
     // 
     // Summary: 
     //  Gets or sets a flag indicating whether image interpolation is to be performed. 
     public virtual bool Interpolate { get; set; } 
     // 
     // Summary: 
     //  Gets the format of the image. 
     public XImageFormat Format { get; } 

     // 
     // Summary: 
     //  Tests if a file exist. Supports PDF files with page number suffix. 
     // 
     // Parameters: 
     // path: 
     //  The path to a BMP, PNG, GIF, JPEG, TIFF, or PDF file. 
     public static bool ExistsFile(string path); 
     // 
     // Summary: 
     //  Creates an image from the specified file. 
     // 
     // Parameters: 
     // path: 
     //  The path to a BMP, PNG, GIF, JPEG, TIFF, or PDF file. 
     public static XImage FromFile(string path); 
     // 
     // Summary: 
     //  Conversion from Image to XImage. 
     public static XImage FromGdiPlusImage(Image image); 
     // 
     // Summary: 
     //  Under construction 
     public void Dispose(); 
     // 
     // Summary: 
     //  Disposes underlying GDI+ object. 
     protected virtual void Dispose(bool disposing); 

     // 
     // Summary: 
     //  Implicit conversion from Image to XImage. 
     public static implicit operator XImage(Image image); 
    } 
} 

Und selbst wenn ich versuche, diese Datei zu reparieren, es kann nicht festgelegt werden, da es ein [von Metadaten] Label hat.

+0

Ich habe keinen Konstruktor mit 1 Parameter in Metadaten bemerkt. Wo ist es? Höchstwahrscheinlich müssen Sie FromGdiPlusImage verwenden. –

Antwort

-1

Die letzte Zeile in der Klasse ist ein impliziter Operator, kein Konstruktor. Dies wird die Image implizit, d. H. Ohne Datenverlust, in XImage umwandeln. Du kannst XImage nicht wie bisher aus Bild erstellen. Sie müssen es wie zu tun:

XImage xImage = new PdfSharp.Drawing.XImage(); 
xImage = image; 
return xImage; 

Sie implicehttps://docs.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/implicit über lesen

+0

Danke. Gibt es eine Möglichkeit, eine URL von localhost aufzurufen, um die Funktion "FromURI" zu verwenden? Gerade jetzt, wenn ich es teste, heißt es, der Zugriff ist nicht erlaubt. – Dukakus17

+0

Ich habe deine Frage nicht genau bekommen. Aber können Sie Ihre Eingabe-URL über den Browser aufrufen? –

+0

es funktioniert nur, wenn ich mein Web auf Visual Studio ausführen. Die URL sieht aus wie localhost/somethingsomething .. es funktioniert also nicht mit dem PDF-Generator. – Dukakus17

0

Das Beste, was Sie tun können: überspringen Sie die Image zu schaffen und die XImage direkt aus dem Stream erstellen.

Die Klasse XImage hat einige statische Elemente. Es gibt , dass Geschichten ein Image (das wäre die Antwort auf Ihre Frage) und es gibt XImage.FromStream, die die Erstellung der Image in erster Linie vermeidet.

Wenn Ihr Projekt PDFsharp-DLLs (z. B. von NuGet) referenziert, zeigt Visual Studio dekompilierte Metadaten an, die nicht geändert werden können. Sie können den PDFsharp-Quellcode verwenden, Verweise auf die .csproj-Dateien hinzufügen und die erforderlichen Änderungen vornehmen.
Der Konstruktor, der einen Image als Parameter akzeptiert, ist nicht öffentlich. Es muss nicht veröffentlicht werden, da Sie verwenden können, um darauf zuzugreifen.

Verwandte Themen