2012-03-30 25 views
5

Tôi có một ứng dụng C# nhỏ để trích xuất văn bản từ tệp Nhà xuất bản của Microsoft qua API COM Interop. Điều này hoạt động tốt, nhưng tôi đang đấu tranh nếu tôi có nhiều kiểu trong một phần. Tiềm năng mỗi ký tự trong một từ có thể có phông chữ, định dạng khác nhau, v.v.
Tôi có thực sự phải so sánh ký tự sau ký tự không? Hoặc là có cái gì đó trả về cho tôi những phần phong cách khác nhau? Kinda như tôi có thể nhận được các đoạn khác nhau?Nhận các phần kiểu khác nhau trong Nhà xuất bản Microsoft qua 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; 
     } 
    } 
} 

Hoặc có cách nào tốt hơn để trích xuất văn bản từ tệp nhà xuất bản? Nhưng tôi phải có khả năng viết lại nó với cùng một định dạng. Đó là bản dịch.

Trả lời

0

Chúng tôi đã thử một cách tiếp cận là chúng tôi chỉ so sánh với mọi ký tự như nhiều kiểu phông chữ nhất có thể. Không đẹp, nhưng hoạt động trong hầu hết các trường hợp ...

0

Bạn có thể xem xét sử dụng clipboard để sao chép phần văn bản như RTF mà bạn sau này có thể dán lại như RTF như với ví dụ dưới đây cho Word. Tôi không quen với mô hình đối tượng của Nhà xuất bản.

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

Khác hơn thế, tôi đã không tìm thấy một bộ sưu tập phong cách ứng dụng khi sử dụng interop với bất kỳ sản phẩm văn phòng.

+0

Cảm ơn bạn đã nhập. Nhưng với việc chuyển đổi RTF tôi có thể mất một số tùy chọn định dạng, mà tôi muốn tránh. Hiện tại tôi chỉ so sánh mọi nhân vật với nhân vật tiếp theo ... – Remy

Các vấn đề liên quan