2012-03-30 9 views
5

Mam małą aplikację C#, która pobiera tekst z pliku Microsoft Publisher za pośrednictwem interfejsu API COM Interop. To działa dobrze, ale walczę, jeśli mam wiele stylów w jednej sekcji. Potencjalnie każda postać w słowie może mieć inną czcionkę, format itp.
Czy naprawdę muszę porównywać postać po znaku? Czy jest coś, co zwraca mi różne sekcje stylu? Trochę jak mogę dostać różne akapity?Pobierz różne sekcje stylu w Microsoft Publisher przez Interop

foreach (Microsoft.Office.Interop.Publisher.Shape shp in pg.Shapes) 
{ 
    if (shp.HasTextFrame == MsoTriState.msoTrue) 
    { 
     text.Append(shp.TextFrame.TextRange.Text); 

     for(int i = 0; i< shp.TextFrame.TextRange.WordsCount; i++) 
     { 
      TextRange range = shp.TextFrame.TextRange.Words(i+1, 1); 
      string test = range.Text; 
     } 
    } 
} 

A może ogólnie lepszy sposób wyodrębnienia tekstu z pliku wydawcy? Ale muszę być w stanie go zapisać z tym samym formatowaniem. To do tłumaczenia.

Odpowiedz

0

Próbowaliśmy podejścia, które zostały właśnie porównane dla każdej postaci, jak najwięcej stylów czcionek, jak to możliwe. Nie ładne, ale działa w większości przypadków ...

0

Można rozważyć użycie schowka do skopiowania sekcji tekstowych jako RTF, który można później wkleić z powrotem jako RTF, tak jak w przykładzie poniżej dla programu Word. Nie znam modelu obiektowego wydawcy.

string text = wordDocument.Content.Paragraphs[0]; System.Windows.Forms.Clipboard.SetText(text, TextDataFormat.Rtf);

Poza tym, nie znalazłem kolekcję stylów zastosowanych przy użyciu współdziałanie z któregokolwiek z produktów biurowych.

+0

Dzięki za wejście. Ale przy konwersji RTF mogę utracić pewne opcje formatowania, których chciałbym uniknąć. Obecnie po prostu porównuję każdą postać z kolejną ... – Remy