2 Stimmen

PDF in einem BookControl anzeigen. PDF in XAML konvertieren?

Ich habe eine PDF-Datei, die ich gerne in einem Buchkontrolle . Da dieses Steuerelement keine PDFs verwenden kann, muss ich es umgehen, indem ich entweder Bilder verwende oder das PDF in XAML konvertiere.

Wie lässt sich dies am elegantesten bewerkstelligen?

3voto

Ich habe zwei Programme zur Konvertierung von PDF in XAML geschrieben, die auf der PDFRenderer-Bibliothek (Open Source) basieren. Ich benötige diese, um meine mathematischen Dokumente und/oder Zeichnungen in XAML zu konvertieren, damit ich sie in ein gemeinsames Whiteboard (meines eigenen Designs) einfügen kann, wenn ich über das Internet Nachhilfe gebe, siehe http://www.mathcoach.ch/blog/?p=30 .

Das Hauptproblem ist die Konvertierung von Schriftreferenzen ("Glyphen"). Wenn Sie PDFRenderer verwenden, der die Konvertierung von Font-Referenzen in Outlines beinhaltet, ist es einfach, XAML-Code zu erzeugen, der nur Path-Elemente enthält. Da XAML meines Wissens nach nicht die Möglichkeit bietet, Bilder direkt einzufügen, tun dies meine beiden Konvertierungsprogramme no Rasterbilder zu konvertieren, sondern sie einfach stillschweigend zu verwerfen (die Konvertierung von Rasterbildern ist etwas, das ich im Moment nicht für zeitlich wertvoll halte).

Um PDFs in XAML zu konvertieren und dabei nur Pfadelemente zu verwenden, können Sie einfach ein Graphics2D-Objekt implementieren (es ist einfacher, wenn Sie von org.apache.batik.ext.awt.g2d.AbstractGraphics2D erben). Die wichtigsten Methoden, die in diesem Fall implementiert werden müssen, sind fill() und stroke(), was einfach zu bewerkstelligen ist, da die GeneralPath-Objekte von Java2 sehr gut auf die Path-Elemente von XAML (Liniensegmente, quadratische und kubische Bézier-Segmente) abgestimmt sind.

Beachten Sie jedoch, dass der resultierende XAML-Code sehr groß sein wird, wenn die Original-PDF-Datei viel Text (Glyphenreferenzen) enthält. Etwa 2 MB pro A4-Seite Text. Bei mathematischen Zeichnungen, die nur relativ wenige Glyphenreferenzen enthalten, funktioniert es jedoch hervorragend.

Für meine eigenen PDFs kann ich die Glyphenreferenzen beibehalten, d. h. ich muss sie nicht in Umrisse und damit in Pfadelemente umwandeln, da ich nur Schriftarten verwende, die auf dem Rechner, auf dem das Dokument angezeigt werden soll, mit Sicherheit bereits installiert sind. Außerdem erfordert dies einen relativ heiklen Prozess der Umwandlung der Glyphenindizes, so dass sie genau richtig sind, wenn sie als Indizes in installierten Schriftdateien verwendet werden.

1voto

Ian Gilham Punkte 1896

Ich würde sagen, dass für den Zweck des Lesens in einem Buch-Steuerelement, das Dokument in Bilder zu konvertieren ist eine bessere Lösung, da das Erstellen von massiven XAML-Dokumente und eine riesige Menge der Verarbeitung zu vermeiden.

Es gibt eine Reihe von kostenlosen und kommerziellen Bibliotheken, die ein PDF-Dokument seitenweise in Bilder umwandeln können. Je nach Leistungsanforderungen können Sie entweder eine Liste von Seiten beim Öffnen des Dokuments erstellen oder jede Seite bei Bedarf abrufen und konvertieren, möglicherweise mit einer Zwischenspeicherung der vorherigen Seiten. Der Himmel ist wirklich die Grenze.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X