チュートリアル
簡単にライブラリーを使用するためのチュートリアルコレクション
PDF からテキストや画像を抽出すると、Word 文書、Web ページ、プレゼンテーションなど、他の種類のファイルでこれらのコンテンツをすばやく再利用できます。この方法は、情報を最初から入力するなど、煩雑で時間のかかるプロセスを回避することができます。そのため、多くの時間と労力を節約するのに役立ちます。この記事では、Spire.PDF for C++ を使用して C++ で PDF からテキストと画像を抽出する方法について説明します。
Spire.PDF for C++ をアプリケーションに組み込むには、2つの方法があります。一つは NuGet 経由でインストールする方法、もう一つは当社のウェブサイトからパッケージをダウンロードし、ライブラリをプログラムにコピーする方法です。NuGet 経由のインストールの方が便利で、より推奨されます。詳しくは、以下のリンクからご覧いただけます。
Spire.PDF for C++ を C++ アプリケーションに統合する方法
Spire.PDF for C++ には、PDF ファイル内のページからテキストを抽出できる PdfPageBase->ExtractText() メソッドが用意されています。詳細な手順は次のとおりです。
#include "Spire.Pdf.o.h"
#include <locale>
#include <codecvt>
using namespace Spire::Pdf;
using namespace std;
int main()
{
//PdfDocumentクラスのインスタンスを初期化する
PdfDocument* doc = new PdfDocument();
//PDFファイルをロードする
doc->LoadFromFile(L"sample.pdf");
wstring buffer = L"";
//ファイル内のすべてのページをループする
for (int i = 0; i < doc->GetPages()->GetCount(); i++)
{
PdfPageBase* page = doc->GetPages()->GetItem(i);
//ページからテキストを抽出する
buffer += (page->ExtractText());
}
//抽出したテキストを.txtファイルに保存する
wofstream write(L"ExtractText.txt");
auto LocUtf8 = locale(locale(""), new std::codecvt_utf8<wchar_t>);
write.imbue(LocUtf8);
write << buffer;
write.close();
doc->Close();
delete doc;
}
Page->ExtractText(RectangleF* rectangleF) メソッドを使用して、PDF ページの特定の矩形領域からテキストを抽出できます。詳細な手順は次のとおりです。
#include "Spire.Pdf.o.h"
#include <locale>
#include <codecvt>
using namespace Spire::Pdf;
using namespace std;
int main()
{
//PdfDocumentクラスのインスタンスを初期化する
PdfDocument* doc = new PdfDocument();
//PDFファイルをロードする
doc->LoadFromFile(L"sample.pdf");
//最初のページを取得する
PdfPageBase* page = doc->GetPages()->GetItem(0);
//ページ内の特定の矩形領域からテキストを抽出する
wstring text = page->ExtractText(new RectangleF(0, 0, 600, 280));
//抽出したテキストを.txtファイルに保存する
wofstream write(L"ExtractTextFromPageArea.txt");
auto LocUtf8 = locale(locale(""), new std::codecvt_utf8<wchar_t>);
write.imbue(LocUtf8);
write << text;
write.close();
doc->Close();
delete doc;
}
PdfPageBase->ExtractImages() メソッドを使用して、PDF ファイル内のページから画像を抽出できます。詳細な手順は次のとおりです。
#include "Spire.Pdf.o.h"
#include <locale>
#include <codecvt>
using namespace Spire::Pdf;
using namespace std;
int main()
{
//PdfDocumentクラスのインスタンスを初期化する
PdfDocument* doc = new PdfDocument();
//PDFファイルをロードする
doc->LoadFromFile(L"sample.pdf");
int index = 0;
//ファイル内のすべてのページをループする
for (int i = 0; i < doc->GetPages()->GetCount(); i++)
{
PdfPageBase* page = doc->GetPages()->GetItem(i);
//ページから画像を抽出する
for (auto image : page->ExtractImages())
{
std::wstring imageFileName = L"Images\\Image-" + to_wstring(index) + L".png";
image->Save(imageFileName.c_str(), ImageFormat::GetPng());
index++;
}
}
doc->Close();
delete doc;
}
結果ドキュメントから評価メッセージを削除したい場合、または機能制限を取り除く場合は、についてこのメールアドレスはスパムボットから保護されています。閲覧するにはJavaScriptを有効にする必要があります。にお問い合わせ、30 日間有効な一時ライセンスを取得してください。
Excel と CSV(カンマ区切り値)は、様々な表形式のデータを管理および保存するためによく使われる2つのファイル形式です。Excel はデータを行と列で組織化し、データ操作、分析、可視化など豊富な機能をユーザーに提供します。一方、CSV はデータを軽量で多様なアプリケーションと高い互換性を持つプレーンテキスト形式で保存されます。Excel を CSV に変換することで、ユーザーは異なるプログラム間で Excel データを交換したりインポートしたりすることができます。CSV を Excel に変換することで、ユーザーはグラフの作成や公式の適用など、より高度なデータ分析機能を利用することができます。この記事では、Spire.XLS for C++ を使用して C++ で Excel を CSV におよび CSV を Excel に変換する方法について説明します。
Spire.XLS for C++ をアプリケーションに組み込むには、2つの方法があります。一つは NuGet 経由でインストールする方法、もう一つは当社のウェブサイトからパッケージをダウンロードし、ライブラリをプログラムにコピーする方法です。NuGet 経由のインストールの方が便利で、より推奨されます。詳しくは、以下のリンクからご覧いただけます。
Spire.XLS for C++ を C++ アプリケーションに統合する方法
Spire.XLS for C++ は、Excel ファイル内のシートを CSV に変換する XlsWorksheet->SaveToFile (LPCWSTR_S fileName, LPCWSTR_S separator, Spire::Common::Encoding* encoding) メソッドを提供します。詳細な手順は次のとおりです。
#include "Spire.Xls.o.h";
using namespace Spire::Xls;
int main()
{
//Workbookクラスのインスタンスを初期化する
Workbook* workbook = new Workbook();
//Excelファイルをロードする
workbook->LoadFromFile(L"Input.xlsx");
//最初のシートを取得する
Worksheet* sheet = workbook->GetWorksheets()->Get(0);
//シートをCSVファイルに保存する
sheet->SaveToFile(L"ExcelToCsv.csv", L",", Encoding::GetUTF8());
workbook->Dispose();
delete workbook;
}
上記のコードを使用して Excel ワークシートを CSV に変換する場合、表示データと非表示データが CSV として保存されます。表示データのみを保存する場合は、XlsWorksheet->SaveToFile (LPCWSTR_S fileName, LPCWSTR_S separator, bool retainHiddenData) メソッドを使用してください。詳細な手順は次のとおりです。
#include "Spire.Xls.o.h";
using namespace Spire::Xls;
int main()
{
//Workbookクラスのインスタンスを初期化する
Workbook* workbook = new Workbook();
//Excelファイルをロードする
workbook->LoadFromFile(L"Input.xlsx");
//最初のシートを取得する
Worksheet* sheet = workbook->GetWorksheets()->Get(0);
//シートの表示されるデータをCSVファイルに保存する
sheet->SaveToFile(L"ExcelToCsv1.csv", L",", false);
workbook->Dispose();
delete workbook;
}
CSV を Excel に変換するには、Workbook->LoadFromFile(LPCWSTR_S fileName, LPCWSTR_S separator) メソッドを使用して CSV ファイルをロードします。次に、Workbook->SaveToFile (LPCWSTR_S fileName, ExcelVersion version) メソッドを使用して Excel ファイルに保存します。詳細な手順は次のとおりです。
#include "Spire.Xls.o.h";
using namespace Spire::Xls;
int main()
{
//Workbookクラスのインスタンスを初期化する
Workbook* workbook = new Workbook();
//セパレータ付きCSVファイルをロードする
workbook->LoadFromFile(L"ExcelToCSV.csv", L",");
//最初のシートを取得する
Worksheet* sheet = workbook->GetWorksheets()->Get(0);
//特定のセル範囲の数値をテキストとして保存するときに「エラーを無視する」を設定
sheet->GetRange(L"C2:C11")->SetIgnoreErrorOptions(IgnoreErrorType::NumberAsText);
//列幅を自動調整する
sheet->GetAllocatedRange()->AutoFitColumns();
//CSVをXLSXファイルに保存する
workbook->SaveToFile(L"CsvToExcel.xlsx", ExcelVersion::Version2013);
workbook->Dispose();
delete workbook;
}
結果ドキュメントから評価メッセージを削除したい場合、または機能制限を取り除く場合は、についてこのメールアドレスはスパムボットから保護されています。閲覧するにはJavaScriptを有効にする必要があります。にお問い合わせ、30 日間有効な一時ライセンスを取得してください。
Spire.Presentation for Java 8.4.1のリリースを発表できることをうれしく思います。このバージョンは、テキスト幅による表の列幅の調整または形状のラウンド半径の設定をサポートしています。カスタムレイアウトを使用した新しいスライドの追加もサポートしています。また、SeriesLinesColorを設定した後、ドキュメントを開いたときにエラーメッセージが表示されるなど、既知の問題が修正されました。詳細は以下の内容を読んでください。
カテゴリー | ID | 説明 |
New feature | SPIREPPT-2213 | テキスト幅による表の列幅の調整がサポートされています。
Presentation ppt = new Presentation(); ppt.loadFromFile(inputFile); ITable table = (ITable) ppt.getSlides().get(0).getShapes().get(0); table.getColumnsList().get(2).adjustColumnByTextWidth(); ppt.saveToFile(outputFile, FileFormat.AUTO); |
New feature | SPIREPPT-2220 | 形状のラウンド半径の設定がサポートされています。
IAutoShape autoShape=iSlide.getShapes().appendShape(ShapeType.ROUND_CORNER_RECTANGLE,new Rectangle2D.Float(50,50,150,150)); IAutoShape autoShape1=iSlide.getShapes().appendShape(ShapeType.ONE_ROUND_CORNER_RECTANGLE,new Rectangle2D.Float(250,50,150,150)); IAutoShape autoShape2=iSlide.getShapes().appendShape(ShapeType.ONE_SNIP_ONE_ROUND_CORNER_RECTANGLE,new Rectangle2D.Float(450,50,150,150)); IAutoShape autoShape3=iSlide.getShapes().appendShape(ShapeType.TWO_DIAGONAL_ROUND_CORNER_RECTANGLE,new Rectangle2D.Float(50,250,150,150)); IAutoShape autoShape4=iSlide.getShapes().appendShape(ShapeType.TWO_SAMESIDE_ROUND_CORNER_RECTANGLE,new Rectangle2D.Float(250,250,150,150)); autoShape.setRoundRadius(autoShape.getWidth()/3); autoShape1.setRoundRadius(autoShape1.getWidth()/3); autoShape2.setRoundRadius(autoShape2.getWidth()/3); autoShape3.setRoundRadius(autoShape3.getWidth()/3); autoShape4.setRoundRadius(autoShape4.getWidth()/3); |
New feature | SPIREPPT-2228 | カスタムレイアウトを使用した新しいスライドの追加がサポートされています。
Presentation presentation = new Presentation(); presentation.loadFromFile(intputFile); //カスタムレイアウトを取得する ILayout iLayout = presentation.getMasters().get(0).getLayouts().get(1); //新しいスライドを追加する presentation.getSlides().append(iLayout); //新しいスライドを挿入する presentation.getSlides().insert(0, iLayout); presentation.saveToFile(outputFile, FileFormat.PPTX_2016); presentation.dispose(); |
New feature | SPIREPPT-2231 | SmartArtを追加する際に、SmartArtLayoutType.PICTURE_ORGANIZATION_CHART and SmartArtLayoutType.NAME_AND_TITLE_ORGANIZATION_CHARTの設定がサポートされています。
ppt.getSlides().get(0).getShapes().appendSmartArt(50, 50, 250, 250, SmartArtLayoutType.PICTURE_ORGANIZATION_CHART); ppt.getSlides().append().getShapes().appendSmartArt(50, 50, 250, 250, SmartArtLayoutType.NAME_AND_TITLE_ORGANIZATION_CHART); |
Bug | SPIREPPT-2071 | SeriesLinesColorを設定した後、ドキュメントを開いたときにエラーメッセージが表示された問題が修正されました。 |
Bug | SPIREPPT-2209 | HtmlをPPTに変換した際にファイルが出力されなかった問題が修正されました。 |
Bug | SPIREPPT-2216 | PPTを画像に変換する際に、アプリケーションが「OutOfMemoryError」をスローする問題が修正されました。 |
Bug | SPIREPPT-2226 | PPTをSVGに変換する際に、プログラムが長時間ハングアップしていた問題が修正されました。 |
ワークシートを作成する際、MS Excel のデフォルトフォントは「Calibri」で、サイズは11、色は黒です。ただし、文書の外観を最適化するために太字や斜体など異なるフォントスタイルを適用したり、大量のデータの中から重要な情報を強調するために特定のフォント色を設定したりする必要がある場合があります。この記事では、Spire.XLS for C++ を使用して C++ で Excel のセルにフォントを適用する方法について説明します。
Spire.XLS for C++ をアプリケーションに組み込むには、2つの方法があります。一つは NuGet 経由でインストールする方法、もう一つは当社のウェブサイトからパッケージをダウンロードし、ライブラリをプログラムにコピーする方法です。NuGet 経由のインストールの方が便利で、より推奨されます。詳しくは、以下のリンクからご覧いただけます。
Spire.XLS for C++ を C++ アプリケーションに統合する方法
Spire.XLS for C++ によって提供される ExcelFont クラスを使用すると、セル内のフォント名、色、サイズ、およびスタイルを設定または変更できます。以下は、Excel のさまざまなセルに異なるまなフォントを適用する手順です。
#include "Spire.Xls.o.h";
using namespace Spire::Xls;
int main() {
//出力ファイルのパスと名前を指定する
std::wstring outputPath = L"Output\\";
std::wstring outputFile = outputPath + L"ApplyFontToCell.xlsx";
//Workbookオブジェクトを作成する
Workbook* workbook = new Workbook();
//最初のシートを取得する
Worksheet* sheet = workbook->GetWorksheets()->Get(0);
//フォント名を設定する
sheet->GetRange(L"B1")->SetText(L"フォント名: Yu Mincho");
sheet->GetRange(L"B1")->GetStyle()->GetFont()->SetFontName(L" Yu Mincho ");
//フォントサイズを設定する
sheet->GetRange(L"B2")->SetText(L"フォントサイズ: 25");
sheet->GetRange(L"B2")->GetStyle()->GetFont()->SetSize(25);
//テキストを太字に設定する
sheet->GetRange(L"B3")->SetText(L"フォントスタイル: 太字");
sheet->GetRange(L"B3")->GetStyle()->GetFont()->SetIsBold(true);
//テキストに下線を追加する
sheet->GetRange(L"B4")->SetText(L"フォントスタイル: 下線");
sheet->GetRange(L"B4")->GetStyle()->GetFont()->SetUnderline(FontUnderlineType::Single);
//フォント色を設定する
sheet->GetRange(L"B5")->SetText(L"フォント色: 赤色");
sheet->GetRange(L"B5")->GetStyle()->GetFont()->SetColor(Spire::Common::Color::GetRed());
//テキストを斜体に設定する
sheet->GetRange(L"B6")->SetText(L"フォントスタイル: 斜体");
sheet->GetRange(L"B6")->GetStyle()->GetFont()->SetIsItalic(true);
//テキストに削除線を追加する
sheet->GetRange(L"B7")->SetText(L"フォントスタイル: 削除線");
sheet->GetRange(L"B7")->GetStyle()->GetFont()->SetIsStrikethrough(true);
//結果ファイルに保存する
workbook->SaveToFile(outputFile.c_str(), ExcelVersion::Version2013);
workbook->Dispose();
}
単一の Excel セルに複数のフォントを適用することで、特定の文字を強調するのに役立ちます。以下は、単一のセルに複数のフォントを適用する手順です。
#include "Spire.Xls.o.h";
using namespace Spire::Xls;
int main() {
//出力ファイルのパスと名前を指定する
std::wstring outputPath = L"Output\\";
std::wstring outputFile = outputPath + L"ApplyMultipleFontstoCell.xlsx";
//Workbookオブジェクトを作成する
Workbook* workbook = new Workbook();
//最初のシートを取得する
Worksheet* sheet = workbook->GetWorksheets()->Get(0);
//ExcelFontオブジェクトを作成し、そのフォントスタイル、色、サイズを設定する
ExcelFont* font1 = workbook->CreateExcelFont();
font1->SetKnownColor(ExcelColors::LightBlue);
font1->SetIsBold(true);
font1->SetSize(13);
//別のExcelFontオブジェクトを作成し、そのフォントスタイル、色、サイズを設定する
ExcelFont* font2 = workbook->CreateExcelFont();
font2->SetKnownColor(ExcelColors::Red);
font2->SetIsBold(true);
font2->SetIsItalic(true);
font2->SetFontName(L"Yu Mincho");
font2->SetSize(15);
//RichText文字列をセルB 5に書き込む
RichText* richText = sheet->GetRange(L"B5")->GetRichText();
richText->SetText(L"C++ 用のスタンドアロン Excel 開発マスター");
//セルB 5のテキストに2スタイルのフォントを適用する
richText->SetFont(0, 12, font1);
richText->SetFont(14, 26, font2);
//結果ファイルに保存する
workbook->SaveToFile(outputFile.c_str(), ExcelVersion::Version2013);
workbook->Dispose();
}
結果ドキュメントから評価メッセージを削除したい場合、または機能制限を取り除く場合は、についてこのメールアドレスはスパムボットから保護されています。閲覧するにはJavaScriptを有効にする必要があります。にお問い合わせ、30 日間有効な一時ライセンスを取得してください。
ドキュメントのセキュリティは、重要なデータやプライベートなデータが Word ドキュメントに含まれている場合に特に重要です。Word ドキュメントには、パスワード保護、読み取り専用モード、編集制限、部分的な保護など、ドキュメントを保護するために使用できるセキュリティ オプションがいくつか用意されています。一方、保護が不要になった場合、作業効率を上げるために、Word ドキュメントの保護を解除する必要がある場合があります。
この記事では、Spire.Doc for C++ を使用して Word ドキュメントを保護または保護解除する方法について紹介します。
Spire.Doc for C++ をアプリケーションに組み込むには、2つの方法があります。一つは NuGet 経由でインストールする方法、もう一つは当社のウェブサイトからパッケージをダウンロードし、ライブラリをプログラムにコピーする方法です。NuGet 経由のインストールの方が便利で、より推奨されます。詳しくは、以下のリンクからご覧いただけます。
Spire.Doc for C++ を C++ アプリケーションに統合する方法
ドキュメントをパスワードで暗号化することで、自分と特定の人だけがそのドキュメントを読んだり編集したりできるようにすることができます。以下は、Spire.Doc for C++ を使用して、Word ドキュメントをパスワードで保護する手順です。
#include "Spire.Doc.o.h";
using namespace Spire::Doc;
using namespace std;
int main() {
//Document のオブジェクトを作成する
Document* document = new Document();
//Wordファイルを読み込む
document->LoadFromFile(L"C:\\予定外.docx");
//パスワードでドキュメントを暗号化する
document->Encrypt(L"password");
//ドキュメントを保存する
document->SaveToFile(L"Output/暗号化.docx", FileFormat::Docx2013);
document->Close();
delete document;
}
ドキュメントを読む許可は与えるが、その人ができる変更の種類を制限したい場合、特定の保護タイプと許可パスワードでドキュメントを保護することができます。
保護の種類 | 説明 |
AllowOnlyComments | ドキュメント内のコメントの修正は可能です。 |
AllowOnlyFormFields | ドキュメント内のフォームフィールドへのデータ入力のみが許可されます。 |
AllowOnlyReading | ドキュメントは読み取り専用です。 |
AllowOnlyRevisions | ドキュメントに変更マークを追加することのみが許可されます。 |
NoProtection | ドキュメントは保護されていません。 |
Spire.Doc for C++ を使用して、Word ドキュメントの編集を制限する手順を以下に示します。
#include "Spire.Doc.o.h";
using namespace Spire::Doc;
using namespace std;
int main() {
//Document のオブジェクトを作成する
Document* document = new Document();
//Wordファイルを読み込む
document->LoadFromFile(L"C:\\予定外.docx");
//保護種類とパスワードを指定してドキュメントを保護する
document->Protect(ProtectionType::AllowOnlyReading, L"permission-psd");
//ドキュメントを保存する
document->SaveToFile(L"Output/編集の制限.docx", FileFormat::Docx2013);
document->Close();
delete document;
}
Word ドキュメントでは、一部のセクションをロックし、残りのセクションを編集可能な状態にすることができます。以下は、Spire.Doc for C++ を使用して、Word ドキュメントの選択したセクションを保護する手順です。
#include "Spire.Doc.o.h";
using namespace Spire::Doc;
using namespace std;
int main() {
//Documentのオブジェクトを作成する
Document* document = new Document();
//Wordファイルを読み込む
document->LoadFromFile(L"C:\\予定外.docx");
//保護種類を"AllowOnlyFormFields "に設定する
document->Protect(ProtectionType::AllowOnlyFormFields, L"permission-psd");
//セクション2を保護解除する
document->GetSections()->GetItem(1)->SetProtectForm(false);
//ドキュメントを保存する
document->SaveToFile(L"Output/セクションの保護.docx", FileFormat::Docx2013);
document->Close();
delete document;
}
特定のセクションを編集可能にする以外に、変更可能な範囲を絞り込むために、テキスト範囲に基づいて編集可能な領域を作成することができます。以下は、Spire.Doc for C++ を使用して、読み取り専用の Word ドキュメントに編集可能な領域を作成する手順です。
#include "Spire.Doc.o.h";
using namespace Spire::Doc;
using namespace std;
int main() {
//Documentのオブジェクトを作成する
Document* document = new Document();
//Wordファイルを読み込む
document->LoadFromFile(L"C:\\予定外.docx");
//保護種類をAllowOnlyReadingに設定する
document->Protect(ProtectionType::AllowOnlyReading, L"permission-psd");
//パーミッションの開始と終了のタグを作成する
PermissionStart* start = new PermissionStart(document, L"regionOne");
PermissionEnd* end = new PermissionEnd(document, L"regionOne");
//選択した段落を編集できるようにするために、開始タグと終了タグを追加する
document->GetSections()->GetItem(0)->GetParagraphs()->GetItem(0)->GetChildObjects()->Insert(0, start);
document->GetSections()->GetItem(0)->GetParagraphs()->GetItem(2)->GetChildObjects()->Add(end);
//ドキュメントを保存する
document->SaveToFile(L"Output/編集可能な領域の設定.docx", FileFormat::Docx2013);
document->Close();
delete document;
}
編集可能領域を削除するためには、ドキュメント内の「PermissionStart」「PermissionEnd」タグを探し出し、削除する必要があります。以下、詳しい手順を説明します。
#include "Spire.Doc.o.h";
using namespace Spire::Doc;
using namespace std;
int main() {
//Documentのオブジェクトを作成する
Document* document = new Document();
//Wordファイルを読み込む
document->LoadFromFile(L"Output\\編集可能な領域の設定.docx");
//「PermissionStart」「PermissionEnd」タグを検索し、削除する
for (int i = 0; i < document->GetSections()->GetCount(); i++)
{
Section* section = document->GetSections()->GetItem(i);
for (int j = 0; j < section->GetBody()->GetParagraphs()->GetCount(); j++)
{
Paragraph* para = section->GetBody()->GetParagraphs()->GetItem(j);
for (int k = 0; k < para->GetChildObjects()->GetCount(); k++)
{
DocumentObject* obj = para->GetChildObjects()->GetItem(k);
if (dynamic_cast<PermissionStart*>(obj) != nullptr || dynamic_cast<PermissionEnd*>(obj) != nullptr)
{
para->GetChildObjects()->Remove(obj);
}
else
{
k++;
}
}
}
}
//ドキュメントを保存する
document->SaveToFile(L"Output/編集可能な領域の削除.docx", FileFormat::Docx2013);
document->Close();
delete document;
}
Spire.Doc for C++ は、権限パスワードを知らなくても編集制限を解除することができます。以下、詳しい手順を説明します。
#include "Spire.Doc.o.h";
using namespace Spire::Doc;
using namespace std;
int main() {
//Documentのオブジェクトを作成する
Document* document = new Document();
//Wordファイルを読み込む
document->LoadFromFile(L"Output\\編集の制限.docx");
//保護種類をNoProtectionにする
document->Protect(ProtectionType::NoProtection);
//ドキュメントを保存する
document->SaveToFile(L"Output/制限の解除.docx", FileFormat::Docx2013);
document->Close();
delete document;
}
暗号化された Word ドキュメントのパスワードが不要になった場合、削除することができます。以下、詳しい手順を説明します。
#include "Spire.Doc.o.h";
using namespace Spire::Doc;
using namespace std;
int main() {
//Documentのオブジェクトを作成する
Document* document = new Document();
//暗号化されたWordファイルを読み込む
document->LoadFromFile(L"Output\\暗号化.docx", FileFormat::Docx, L"password");
//開くパスワードを解除する
document->RemoveEncryption();
//ドキュメントを保存する
document->SaveToFile(L"Output/パスワードの削除.docx", FileFormat::Docx2013);
document->Close();
delete document;
}
結果ドキュメントから評価メッセージを削除したい場合、または機能制限を取り除く場合は、についてこのメールアドレスはスパムボットから保護されています。閲覧するにはJavaScriptを有効にする必要があります。にお問い合わせ、30 日間有効な一時ライセンスを取得してください。
Word ドキュメントは、Microsoft Word やその他の文書処理ソフトで作成されたファイルです。世界中のほとんどの企業で使用されています。契約書、論文、パンフレット、手紙、履歴書、報告書など、さまざまな専門的な文書が Word ドキュメントの形で作成、保存されています。この記事では、Spire.Doc for C++ クラスライブラリを使用して、プログラム的に Word ドキュメントを作成または編集する方法を説明します。
Spire.Doc for C++ をアプリケーションに組み込むには、2つの方法があります。一つは NuGet 経由でインストールする方法、もう一つは当社のウェブサイトからパッケージをダウンロードし、ライブラリをプログラムにコピーする方法です。NuGet 経由のインストールの方が便利で、より推奨されます。詳しくは、以下のリンクからご覧いただけます。
Spire.Doc for C++ を C++ アプリケーションに統合する方法
Spire.Doc for C++ を使用すると、1つまたは複数のセクションを持つ Word ドキュメントを作成し、段落、表、画像、リスト、ハイパーリンク、透かし、ヘッダー、フッター、コンテンツコントロール、コメントなどの様々な要素を追加できます。
次の手順では、セクションと3つの段落を持つ簡単な Word ドキュメントを作成する方法を紹介します。
#include "Spire.Doc.o.h"
using namespace Spire::Doc;
int main()
{
//Documentのインスタンスを作成する
intrusive_ptr<Document> doc = new Document();
//ドキュメントにセクションを追加する
intrusive_ptr<Section> section = doc->AddSection();
//ページの余白を設定する
section->GetPageSetup()->GetMargins()->SetAll(72);
//セクションにタイトル段落を追加する
intrusive_ptr<Paragraph> titlePara = section->AddParagraph();
//タイトル段落にテキストを追加する
titlePara->AppendText(L"Spire.Doc for C++の紹介");
//セクションに本文の段落を追加する
intrusive_ptr<Paragraph> bodyPara1 = section->AddParagraph();
//本文の段落にテキストを追加する
bodyPara1->AppendText(L"Spire.Doc for C++ は、C++ アプリケーションで Word 文書の作成、読み取り、書き込み、変換、結合、分割、比較を高速かつ高品質に行うために開発者向けに特別に設計されたプロフェッショナルな Word ライブラリです。");
//セクションにもう1つ本文の段落を追加する
intrusive_ptr<Paragraph> bodyPara2 = section->AddParagraph();
//本文の段落にテキストを追加する
bodyPara2->AppendText(L"Spire.Doc for C++ を使用することで、ユーザーは Word の Doc/Docx を XML、RTF、EMF、TXT、XPS、EPUB、HTML、SVG、ODT に、またはその逆に変換できます。Spire.Doc for C++ は、Word の Doc/Docx を PDF に変換したり、HTML を画像に変換することもサポートしています。");
//スタイルを作成し、タイトル段落に適用する
intrusive_ptr<ParagraphStyle> style1 = new ParagraphStyle(doc);
style1->SetName(L"titleStyle");
style1->GetCharacterFormat()->SetBold(true);
style1->GetCharacterFormat()->SetTextColor(Color::GetBlue());
style1->GetCharacterFormat()->SetFontName(L"Yu Gothic UI");
style1->GetCharacterFormat()->SetFontSize(16);
doc->GetStyles()->Add(style1);
titlePara->ApplyStyle(L"titleStyle");
//スタイルを作成し、本文の段落に適用する
intrusive_ptr<ParagraphStyle> style2 = new ParagraphStyle(doc);
style2->SetName(L"paraStyle");
style2->GetCharacterFormat()->SetFontName(L"Yu Gothic UI");
style2->GetCharacterFormat()->SetFontSize(12);
doc->GetStyles()->Add(style2);
bodyPara1->ApplyStyle(L"paraStyle");
bodyPara2->ApplyStyle(L"paraStyle");
//タイトルと本文の段落に水平方向の配置を設定する
titlePara->GetFormat()->SetHorizontalAlignment(HorizontalAlignment::Center);
bodyPara1->GetFormat()->SetHorizontalAlignment(HorizontalAlignment::Justify);
bodyPara2->GetFormat()->SetHorizontalAlignment(HorizontalAlignment::Justify);
//タイトルと本文の段落の後に間隔を設定する
titlePara->GetFormat()->SetAfterSpacing(10);
bodyPara1->GetFormat()->SetAfterSpacing(10);
//ドキュメントを保存する
doc->SaveToFile(L"Wordドキュメントの作成.docx", FileFormat::Docx2013);
doc->Dispose();
}
Spire.Doc for C++ は、Word ドキュメントの作成以外にも、既存の Word ドキュメントを編集することも可能です。例えば、ドキュメント内の既存の要素を変更したり、ドキュメントに新しい要素を追加したりすることができます。
次の手順では、Word ドキュメント内の特定の段落のテキストを変更する方法を説明します。
#include "Spire.Doc.o.h"
using namespace Spire::Doc;
int main()
{
//Documentのインスタンスを作成する
intrusive_ptr<Document> doc = new Document();
//Wordドキュメントを読み込む
doc->LoadFromFile(L"Wordドキュメントの作成.docx");
//ドキュメント内の最初のセクションにアクセスする
intrusive_ptr<Section> section = doc->GetSections()->GetItemInSectionCollection(0);
//第1項の第2段落にアクセスする
intrusive_ptr<Paragraph> para = section->GetParagraphs()->GetItemInParagraphCollection(1);
//段落テキストを変更する
para->SetText(L"この段落を更新しました。");
//ドキュメントを保存する
doc->SaveToFile(L"Wordドキュメントの編集.docx", FileFormat::Docx2013);
doc->Dispose();
}
結果ドキュメントから評価メッセージを削除したい場合、または機能制限を取り除く場合は、についてこのメールアドレスはスパムボットから保護されています。閲覧するにはJavaScriptを有効にする必要があります。にお問い合わせ、30 日間有効な一時ライセンスを取得してください。
余白とは、PDF ドキュメントのページの周りにある空白部分のことです。 ページの内容をより多く表示するためにドキュメントの余白を増やしたり、ページの内容をよりコンパクトに見せるためにドキュメントの余白を減らしたりすることができます。 この記事では、Spire.PDF for Java を使用してプログラムで PDF ドキュメントの余白を調整する方法を紹介します。
まず、Spire.PDF for Java を Java プロジェクトに追加する必要があります。JAR ファイルは、このリンクからダウンロードできます。Maven を使用する場合は、次のコードをプロジェクトの pom.xml ファイルに追加する必要があります。
<repositories>
<repository>
<id>com.e-iceblue</id>
<name>e-iceblue</name>
<url> https://repo.e-iceblue.com/nexus/content/groups/public/</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>e-iceblue</groupId>
<artifactId>spire.pdf</artifactId>
<version>8.11.8</version>
</dependency>
</dependencies>
より大きなページを持つ PDF ドキュメントを作成し、元の PDF ドキュメントのページを新しいドキュメントページに描画することで、PDF ドキュメントの余白を拡大することができます。 以下、詳しい手順を説明します。
import com.spire.pdf.FileFormat;
import com.spire.pdf.PdfDocument;
import com.spire.pdf.PdfPageBase;
import com.spire.pdf.graphics.PdfMargins;
import com.spire.pdf.graphics.PdfTemplate;
import java.awt.*;
import java.awt.geom.Dimension2D;
import java.awt.geom.Point2D;
public class enlargePDFMargins {
public static void main(String[] args) {
//PdfDocumentのオブジェクトを作成する
PdfDocument originalPdf = new PdfDocument();
//既存のPDFドキュメントを読み込む
originalPdf.loadFromFile("C:/クライアント向け通話サンプル.pdf");
//ドキュメントの最初のページを取得する
PdfPageBase firstPage = originalPdf.getPages().get(0);
//PdfDocumentの別のオブジェクトを作成する
PdfDocument newPdf = new PdfDocument();
//追加する余白の値を設定する
PdfMargins margins = newPdf.getPageSettings().getMargins();
margins.setTop(40);
margins.setBottom(40);
margins.setLeft(40);
margins.setRight(40);
//新規PDFドキュメントのページサイズを設定する
Dimension2D dimension2D = new Dimension();
dimension2D.setSize(firstPage.getSize().getWidth() + margins.getLeft() + margins.getRight(), firstPage.getSize().getHeight() + margins.getTop() + margins.getBottom());
//元のPDFドキュメント内の全ページをループする
for (int i = 0; i < originalPdf.getPages().getCount(); i++) {
//元のドキュメントのページをもとに、テンプレートを作成する
PdfTemplate template = originalPdf.getPages().get(i).createTemplate();
//新しいPDFドキュメントに新しいページを追加する
PdfPageBase page = newPdf.getPages().add(dimension2D);
//追加されたページでテンプレートを描画する
template.draw(page.getCanvas(), new Point2D.Float(0, 0));
}
//新しいPDFドキュメントを保存する
newPdf.saveToFile("マージンの拡大.pdf", FileFormat.PDF);
}
}
同様の方法で、PDF ドキュメントの余白を減らすには、まずページを小さくしたPDF ドキュメントを作成する必要があります。 次に、指定した座標から新しい PDF ドキュメントのページに元の PDF ドキュメントのページを描画します。 詳しい操作手順は以下の通りです。
import com.spire.pdf.FileFormat;
import com.spire.pdf.PdfDocument;
import com.spire.pdf.PdfPageBase;
import com.spire.pdf.graphics.PdfMargins;
import com.spire.pdf.graphics.PdfTemplate;
import java.awt.*;
import java.awt.geom.Dimension2D;
import java.awt.geom.Point2D;
public class reducePDFMargins {
public static void main(String[] args) {
//PdfDocumentのオブジェクトを作成する
PdfDocument originalPdf = new PdfDocument();
//既存のPDFドキュメントを読み込む
originalPdf.loadFromFile("C:/クライアント向け通話サンプル.pdf");
//ドキュメントの最初のページを取得する
PdfPageBase firstPage = originalPdf.getPages().get(0);
//PdfDocumentの別のオブジェクトを作成する
PdfDocument newPdf = new PdfDocument();
//縮小する余白の値を設定する
double left = -20;
double right = -20;
double top = -20;
double bottom = -20;
//新規PDFドキュメントのページサイズを設定する
Dimension2D dimension2D = new Dimension();
dimension2D.setSize(originalPdf.getPages().get(0).getSize().getWidth() + left + right, originalPdf.getPages().get(0).getSize().getHeight() + top + bottom);
//元のPDFドキュメント内の全ページをループする
for (int i = 0; i < originalPdf.getPages().getCount(); i++) {
//元のドキュメントのページをもとに、テンプレートを作成する
PdfTemplate template = originalPdf.getPages().get(i).createTemplate();
//新しいPDFドキュメントにページを追加する
PdfPageBase page = newPdf.getPages().add(dimension2D, new PdfMargins(0));
//追加されたページでテンプレートを描画する
template.draw(page.getCanvas(), new Point2D.Float((float) left, (float) top));
}
//新しいPDFドキュメントを保存する
newPdf.saveToFile("余白の削減.pdf", FileFormat.PDF);
}
}
結果ドキュメントから評価メッセージを削除したい場合、または機能制限を取り除く場合は、についてこのメールアドレスはスパムボットから保護されています。閲覧するにはJavaScriptを有効にする必要があります。にお問い合わせ、30 日間有効な一時ライセンスを取得してください。
Spire.Presentation 8.4.1のリリースを発表できることをうれしく思います。このバージョンは、PPTを画像に変換する際にプログラムが無限ループに入り、メモリが消耗される問題を修正しました。詳細は以下の内容を読んでください。
カテゴリー | ID | 説明 |
Bug | SPIREPPT-2224 | PPTを画像に変換する際にプログラムが無限ループに入り、メモリが消耗される問題を修正しました。 |
Spire.XLS for Java 13.4.1のリリースを発表できることを嬉しく思います。このバージョンでは、ExcelからHTMLとPDFへの変換機能が強化されました。また、画像を挿入した後に画像の高さが変更するなど、既知の問題が修正されました。詳細は以下をお読みください。
カテゴリー | ID | 説明 |
Bug | SPIREXLS-4512 | 画像を挿入した後に画像の高さが変化する問題が修正されました。 |
Bug | SPIREXLS-4562 | 1行のデータ範囲を指定する際にフィルタが機能しない問題が修正されました。 |
Bug | SPIREXLS-4563 | ExcelをHTMLに変換する際にアプリケーションが「java.lang.NullPointerException」をスローする問題が修正されました。 |
Bug | SPIREXLS-4574 | ExcelをPDFに変換する際にアプリケーションが「Invalid formula」をスローする問題が修正されました。 |
Bug | SPIREXLS-4576 | ExcelをPDFに変換する際にアプリケーションが「String index out of range」をスローする問題が修正されました。 |
Bug | SPIREXLS-4577 | ExcelをPDFに変換する際にアプリケーションが「java.lang.NullPointerException」をスローする問題が修正されました。 |
PDF の1ページの内容を分離して表示、分離印刷などの操作を行う必要がある場合、内容の再編集が面倒になることがあります。 このような場合、1つのページを直接複数のページに分割することで、表示や印刷などの操作を容易にすることができます。 今回は、Spire.PDF for Java を使用して、PDF ドキュメントのページを分割する方法を紹介します。
まず、Spire.PDF for Java を Java プロジェクトに追加する必要があります。JAR ファイルは、このリンクからダウンロードできます。Maven を使用する場合は、次のコードをプロジェクトの pom.xml ファイルに追加する必要があります。
<repositories>
<repository>
<id>com.e-iceblue</id>
<name>e-iceblue</name>
<url> https://repo.e-iceblue.com/nexus/content/groups/public/</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>e-iceblue</groupId>
<artifactId>spire.pdf</artifactId>
<version>9.3.11</version>
</dependency>
</dependencies>
Spire.PDF for Java では、PDF ページの内容を新しい PDF ページに描画するための PdfPageBase.createTemplate().draw() メソッドを提供しています。 このメソッドを使って、元のページの内容を複数ページに分けて描画することで、PDF ページを分割する目的を達成することができます。 以下は、PDF ページを3ページに分割する、詳細な操作手順です。
import com.spire.pdf.*;
import com.spire.pdf.graphics.*;
import java.awt.geom.Point2D;
public class splitPDFPage {
public static void main(String[] args) {
//PdfDocumentのオブジェクトを作成する
PdfDocument pdf = new PdfDocument();
//PDFドキュメントを読み込む
pdf.loadFromFile("C:/4月.pdf");
//PDFドキュメントの最初のページを取得する
PdfPageBase page = pdf.getPages().get(0);
//新規にPDFドキュメントを作成し、余白を削除する
PdfDocument newPdf = new PdfDocument();
newPdf.getPageSettings().getMargins().setAll(0);
//水平分割
newPdf.getPageSettings().setWidth((float) page.getSize().getWidth());
newPdf.getPageSettings().setHeight((float) page.getSize().getHeight()/3);
//垂直分割
//newPdf.getPageSettings().setWidth((float) page.getSize().getWidth()/2);
//newPdf.getPageSettings().setHeight((float) page.getSize().getHeight());
//新規作成したPDFドキュメントにページを追加する
PdfPageBase newPage = newPdf.getPages().add();
//PdfLayoutTypeの設定をPaginateにすることで、コンテンツが自動的にページングされるようになる
PdfTextLayout layout = new PdfTextLayout();
layout.setBreak(PdfLayoutBreakType.Fit_Page);
layout.setLayout(PdfLayoutType.Paginate);
//元のページの内容を新しいドキュメントページにプロットする
page.createTemplate().draw(newPage, new Point2D.Float(0, 0), layout);
//ドキュメントを保存する
newPdf.saveToFile("PDFページの分割.pdf");
newPdf.close();
}
}
結果ドキュメントから評価メッセージを削除したい場合、または機能制限を取り除く場合は、についてこのメールアドレスはスパムボットから保護されています。閲覧するにはJavaScriptを有効にする必要があります。にお問い合わせ、30 日間有効な一時ライセンスを取得してください。