Spire.Doc for C++ 12.2.1を発表できることを嬉しく思います。このバージョンでは、固定レイアウトによるページ コンテンツの取得がサポートされています。詳細は以下の内容を読んでください。
このリリースで行われた変更のリストは次のとおりです
カテゴリー | ID | 説明 |
New feature | - | 固定レイアウトによるページ コンテンツの取得がサポートされています。
//ファイルパスを指定する wstring input_path = DATAPATH; wstring inputFile = input_path + L"in.docx"; wstring output_path = OUTPUTPATH; wstring outputFile = output_path + L"out.txt"; //Document の新しいインスタンスを作成する intrusive_ptr<Document> document = new Document(); //指定されたファイルからドキュメントを読み込む document->LoadFromFile(inputFile.c_str(), FileFormat::Docx); intrusive_ptr<FixedLayoutDocument> layoutDoc = new FixedLayoutDocument(document); wstring result; //ロードされたドキュメントを使用してFixedLayoutDocumentオブジェクトを作成する intrusive_ptr<FixedLayoutLine> line = layoutDoc->GetPages()->GetItem(0)->GetColumns()->GetItem(0)->GetLines()->GetItem(0); result.append(L"Line: "); result.append(line->GetText()); result.append(L"\n"); //その行に関連付けられた元の段落を取得する intrusive_ptr<Paragraph> para = line->GetParagraph(); result.append(L"Paragraph text: "); result.append(para->GetText()); result.append(L"\n"); //最初のページに表示されるすべてのテキストをプレーン テキスト形式で取得する(ヘッダーとフッターを含む) wstring pageText = layoutDoc->GetPages()->GetItem(0)->GetText(); result.append(pageText); result.append(L"\n"); //ドキュメントの各ページをループし、各ページに表示される行数を出力する for (int i = 0; i < layoutDoc->GetPages()->GetCount(); i++) { intrusive_ptr<FixedLayoutPage> page = layoutDoc->GetPages()->GetItem(i); intrusive_ptr<LayoutCollection> lines = page->GetChildEntities(LayoutElementType::Line, true); result.append(L"Page "); result.append(std::to_wstring(page->GetPageIndex())); result.append(L" has "); result.append(std::to_wstring(lines->GetCount())); result.append(L" lines."); result.append(L"\n"); } //最初の段落のレイアウト エンティティの逆引き参照を実行する result.append(L"\n"); result.append(L"The lines of the first paragraph:"); result.append(L"\n"); intrusive_ptr<Paragraph> para2 = (Object::Dynamic_cast<Section>(document->GetFirstChild()))->GetBody()->GetParagraphs()->GetItemInParagraphCollection(0); intrusive_ptr<LayoutCollection> paragraphLines = layoutDoc->GetLayoutEntitiesOfNode(para2); for (int i = 0; i < paragraphLines->GetCount(); i++) { intrusive_ptr<FixedLayoutLine> paragraphLine = Object::Dynamic_cast<FixedLayoutLine>(paragraphLines->GetItem(i)); result.append(paragraphLine->GetText()); result.append(L"\n"); result.append(paragraphLine->GetRectangle()->ToString()); result.append(L"\n"); result.append(L"\n"); } //抽出したテキストをファイルに書き込む std::wofstream write(outputFile); auto LocUtf8 = locale(locale(""), new std::codecvt_utf8<wchar_t>); write.imbue(LocUtf8); write << result; write.close(); //ドキュメントリソースを破棄する document->Dispose(); |
ここで Spire.Doc for C++ 12.2.1をダウンロードする