WPF - Verwenden von MoonPDF für die PDF Anzeige

  • WPF

Es gibt 3 Antworten in diesem Thema. Der letzte Beitrag () ist von Nofear23m.

    WPF - Verwenden von MoonPDF für die PDF Anzeige

    Moin!

    gleich eines vorweg - mir ist, als wenn ich schon einmal ein Posting zu diesem Thema aufgemacht hatte. Ich finde es nur wenn nicht wieder. :S

    Es geht darum das ich in einem WPF-Dialog eine PDF anzeigen lassen will. Über den viel im Web beschriebenen Weg mittels Webbrowser bin ich auch nicht weiter gekommen. Es wird die PDF immer eigenständig geöffnet.

    Bei meiner Suche bin ich dann auf MoonPDF (sourceforge.net/projects/moonpdf/) gestossen. Leider ist meine Einbindung bisher nur schief gelaufen.

    Ich habe das heruntergeladene Archiv im Explorer unter C:\Program Files (x86)\MoonPdf-0.2.3-x86 entpackt und in den Verweisen die Dateien MoonPdfLib.dll und libmupdf.dll zugewiesen.

    Dann habe ich versucht das aus dem Beispielcode

    VB.NET-Quellcode

    1. <Window xmlns:mpp="clr-namespace:MoonPdfLib;assembly=MoonPdfLib" ...>
    2. <mpp:MoonPdfPanel Background="LightGray" ViewType="SinglePage" PageDisplay="ContinuousPages" PageMargin="0,2,4,2" AllowDrop="True"/>
    3. </Window>


    bei mir einzubinden. Das sieht dann so aus:

    VB.NET-Quellcode

    1. <Window x:Class="DLG_Hausanschlusskarte"
    2. xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    3. xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    4. xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    5. xmlns:mpp="clr-namespace:MoonPdfLib;assembly=MoonPdfLib"
    6. xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    7. mc:Ignorable="d" Title="Hausanschlusskarte zuordnen" ResizeMode="NoResize" Height="600" Width="600" WindowStartupLocation="CenterScreen">
    8. <ScrollViewer HorizontalScrollBarVisibility="Disabled" VerticalScrollBarVisibility="Auto" Margin="0,0,-38,0">
    9. <DockPanel>
    10. <DockPanel.Resources>
    11. <Style TargetType="{x:Type Button}">
    12. <Setter Property="Margin" Value="3"/>
    13. <Setter Property="Padding" Value="5"/>
    14. </Style>
    15. </DockPanel.Resources>
    16. <WrapPanel Orientation="Horizontal" DockPanel.Dock="Top" Height="500">
    17. <mpp:MoonPdfPanel Background="LightGray" ViewType="SinglePage" PageDisplay="ContinuousPages" PageMargin="0,2,4,2" AllowDrop="True"/>
    18. <WrapPanel Orientation="Vertical" DockPanel.Dock="Top" Height="500">
    19. <Button x:Name="bt_Help3a" Content="Hilfe" Width="96" ToolTip="Hilfestellung"/>
    20. <Button x:Name="bt_Help4a" Content="Hilfe" Width="96" ToolTip="Hilfestellung"/>
    21. </WrapPanel>
    22. </WrapPanel>
    23. <WrapPanel Orientation="Horizontal" DockPanel.Dock="Top" Margin="10"/>
    24. <WrapPanel Orientation="Horizontal" VerticalAlignment="Bottom" DockPanel.Dock="Bottom" Height="48">
    25. <Button x:Name="bt_Cancel" Content="Abbruch" Width="96" ToolTip="Beendet diese Funktion" IsCancel="True" IsDefault="True"/>
    26. <Button x:Name="bt_Help" Content="Hilfe" Width="96" ToolTip="Hilfestellung"/>
    27. <Button x:Name="bt_Create" Content="Anlegen" Width="96" ToolTip="Anfrage anlegen"/>
    28. </WrapPanel>
    29. </DockPanel>
    30. </ScrollViewer>
    31. </Window>


    Aber hier wird schon folgendes angemerkt:



    Kann mir einer weiterhelfen - damit ich wenigstens die nächsten Schritte ausprobieren kann?

    Ich verstehe nämlich noch nicht, wie ich die externen DLL hier sonst einbinden soll.

    Gruß Jan
    Kommentiere mal das Control selbst aus. Den Namespace lass drinnen. 1x Kompilieren. STRG + SHIFT + B und dann wieder einkommentieren.

    Nur ein Versuch.

    Grüße
    Sascha
    If _work = worktype.hard Then Me.Drink(Coffee)
    Seht euch auch meine Tutorialreihe <WPF Lernen/> an oder abonniert meinen YouTube Kanal.

    ## Bitte markiere einen Thread als "Erledigt" wenn deine Frage beantwortet wurde. ##

    Moin!

    ich gehe davon das Du mit Control diese Zeile meinst:

    VB.NET-Quellcode

    1. <mpp:MoonPdfPanel Background="LightGray" ViewType="SinglePage" PageDisplay="ContinuousPages" PageMargin="0,2,4,2" AllowDrop="True"/>


    Habe dann eben noch etwas gefunden: stackoverflow.com/questions/37…ot-exist-in-the-namespace

    Da steht dann:

    Your local namespace may be DocumentViewer, but namespaces for 3rd party libraries use the project references. So, you don't include your namespace unless it's an actual component in your namespace, such as your own custom control. Even then, the namespace is delimited with a period, ., not a colon.


    Ich verstehe das nicht ganz! Kann es sein, dass ich die DLL anderswo als oben beschrieben hinterlegen muss?

    Alles gemacht - mpp wird immer noch markiert.

    :(

    Nur einmal so eine Idee ... wenn die Meldung schreibt, dass "MoonPdfPanel" nicht in dem Namespace enthalten ist, dann kann man doch sicherlich irgendwie auslesen was überhaupt enthalten ist.

    Gruß Jan

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „jan99“ ()

    Hallo und sorry für die späte Antwort

    Also ich habe die dll`s nun auch mal geladen und ausprobiert. Bei mir mekert er nix an.
    Beim Debuggen wird das PDF auch geladen.

    XML-Quellcode

    1. <Window x:Class="MainWindow"
    2. xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    3. xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    4. xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    5. xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    6. xmlns:local="clr-namespace:MoonPdfTest"
    7. xmlns:moon="clr-namespace:MoonPdfLib;assembly=MoonPdfLib"
    8. mc:Ignorable="d"
    9. Title="MainWindow" Height="450" Width="800">
    10. <Grid>
    11. <moon:MoonPdfPanel ViewType="BookView" x:Name="pdf"/>
    12. </Grid>
    13. </Window>


    Leider besitzt das Control kein Property welchem man eine Datei übergeben oder gar Binden kann.
    Man muss über CodeBehind die OpenFile Methode aufrufen.

    VB.NET-Quellcode

    1. Me.pdf.OpenFile("C:\Users\Patschka\Documents\Anleitung Waschmaschine.pdf")


    Zu beachten ist nur: Die dll libmupdf.dll muss auch ins Ausgabeverzeichnis kopiert werden!!

    Grüße
    Sascha
    If _work = worktype.hard Then Me.Drink(Coffee)
    Seht euch auch meine Tutorialreihe <WPF Lernen/> an oder abonniert meinen YouTube Kanal.

    ## Bitte markiere einen Thread als "Erledigt" wenn deine Frage beantwortet wurde. ##