Forums Neueste Beiträge
 

Ressourcen auf mehreren Seiten in XPS Dokument verwenden.

07/04/2010 - 09:01 von neitzel | Report spam
Hallo zusammen,

ich habe ein kleines Problem bei der Erstellung von XPS Dokumenten.
(Falls dies nun ein doppelter Post sein sollte, so bitte ich dies zu
entschuldigen. Aber scheinbar hat mein anderes Program das Posting nicht
versendet und so. Zumindest konnte ich mein eigenes Postin nirgends finden
:(. Daher nun der wechsel des Programmes, des Newsservers, Mal sehen,
ob ich nun zufriedener sein werde :) )

Aber zurück zu meinem XPS Problem:

Ich erstelle mein Dokument mittels:
string fileName = "test.xps"
Package package = Package.Open(fileName);
XpsDocument document = new XpsDocument(package);
IXpsFixedDocumentSequenceWriter xpsDocSeqWriter document.AddFixedDocumentSequence();
IXpsFixedDocumentWriter xpsDocWriter xpsDocSeqWriter.AddFixedDocument();
IXpsFixedPageWriter xpsPageWriter = xpsDocWriter.AddFixedPage();
XmlWriter xmlWriter = xpsPageWriter.XmlWriter;

Ressourcen kann ich problemlos einbinden. Z.B. Fonts per:
string fontFile="c:\some\path\font.ttl";
XpsFont font = xpsPageWriter.AddFont();
WriteObfuscatedStream(font.Uri.ToString(), font.GetStream(), fontFile);
font.Commit();

Den Inhalt selbst schreibe ich mit dem xmlWriter.

Das funktioniert auch alles 1a. Ich kann so schöne Dokumente erstellen.
Nun kommt aber das große ABER:
Wie man sieht sind die Ressourcen pro Seite verlinkt. Somit benötige ich
einen Link auf die Schrift auf jeder Seite, die ich erstelle. Ich bekomme
mittels AddFont() Aufruf aber jedes Mal eine neue Kopie der Font in das
Paket/Zip (Sieht man sehr schön, wenn man das xps in zip umbenennt und
sich nàher anschaut.)

Ich habe hier schon mehrere Dinge versucht, die aber alle zu keinem
lesbaren XPS geführt haben.

Beim ersten Einbinden habe ich mir die XpsFont gemerkt. Und bei
zukünftigen Seiten habe ich versucht:

1. Versuch:
XpsFont newFont = xpsPageWriter.AddFont();
newFont.Uri = rememberedFont.Uri;
newFont.Commit();

2. Versuch:
XpsRessource resource =
xpsPageWriter.AddRessource(rememberedFont.GetType(), rememberedFont.Uri);
XpsRessource.Commit();

Gelaufen sind beide Versuche ohne Exception oder so. Aber das XPS war
nicht lesbar (bzw. die zweite Seite war nicht lesbar.)

Hat jemand eine Idee, wie ich eine Ressource besser verlinken kann, so
dass diese nur einmal in das XPS File aufgenommen werden muss?

Vielen Dank!

Mit den besten Grüßen,

Konrad
 

Lesen sie die antworten

#1 Thomas Scheidegger
07/04/2010 - 09:24 | Warnen spam
Hallo Konrad

einen Link auf die Schrift auf jeder Seite, die ich erstelle.



ungeprüft, aber ganz unten auf
http://social.msdn.microsoft.com/Fo...fb7f85fed0

(Beitrag von "Gertjan van Montfoort")
mit Code wie:
part.CreateRelationship(resourcePart.Uri, TargetMode.Internal,
RESOURCE_RELATIONSHIP_TYPE);
könnte evtl. helfen.



Thomas Scheidegger - 'NETMaster'
http://dnetmaster.net/

Ähnliche fragen