チュートリアル

簡単にライブラリーを使用するためのチュートリアルコレクション

Koohji

Koohji

PDF からテキストや画像を抽出すると、Word 文書、Web ページ、プレゼンテーションなど、他の種類のファイルでこれらのコンテンツをすばやく再利用できます。この方法は、情報を最初から入力するなど、煩雑で時間のかかるプロセスを回避することができます。そのため、多くの時間と労力を節約するのに役立ちます。この記事では、Spire.PDF for C++ を使用して C++ で PDF からテキストと画像を抽出する方法について説明します。

Spire.PDF for C++ をインストールします

Spire.PDF for C++ をアプリケーションに組み込むには、2つの方法があります。一つは NuGet 経由でインストールする方法、もう一つは当社のウェブサイトからパッケージをダウンロードし、ライブラリをプログラムにコピーする方法です。NuGet 経由のインストールの方が便利で、より推奨されます。詳しくは、以下のリンクからご覧いただけます。

Spire.PDF for C++ を C++ アプリケーションに統合する方法

PDF からテキストを抽出する

Spire.PDF for C++ には、PDF ファイル内のページからテキストを抽出できる PdfPageBase->ExtractText() メソッドが用意されています。詳細な手順は次のとおりです。

  • PdfDocument クラスのインスタンスを初期化します。
  • PdfDocument->LoadFromFile() メソッドを使用して PDF ファイルをロードします。
  • ファイル内のすべてのページをループします。
  • PdfPageBase->ExtractText() メソッドを使用してページからテキストを抽出します。
  • 抽出したテキストを .txt ファイルに保存します。
  • C++
#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;
}

C++:PDF からテキストと画像を抽出する方法

PDF の特定のページ領域からテキストを抽出する

Page->ExtractText(RectangleF* rectangleF) メソッドを使用して、PDF ページの特定の矩形領域からテキストを抽出できます。詳細な手順は次のとおりです。

  • PdfDocument クラスのインスタンスを初期化します。
  • PdfDocument->LoadFromFile() メソッドを使用して PDF ファイルをロードします。
  • PdfDocument->GetPages()->GetItem(int index) メソッドを使用して、インデックスで特定のページを取得します。
  • Page-> ExtractText(RectangleF* rectangleF) メソッドを使用して、ページの特定の矩形領域からテキストを抽出します。
  • 抽出したテキストを.txtファイルに保存します。
  • C++
#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;
}

C++:PDF からテキストと画像を抽出する方法

PDF から画像を抽出する

PdfPageBase->ExtractImages() メソッドを使用して、PDF ファイル内のページから画像を抽出できます。詳細な手順は次のとおりです。

  • PdfDocument クラスのインスタンスを初期化します。
  • PdfDocument->LoadFromFile() メソッドを使用して PDF ファイルをロードします。
  • ファイル内のすべてのページをループします。
  • PdfPageBase->ExtractImages() メソッドを使用してページから画像を抽出します。
  • 抽出した画像を PNG ファイルに保存します。
  • C++
#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;
}

C++:PDF からテキストと画像を抽出する方法

一時ライセンスを申請する

結果ドキュメントから評価メッセージを削除したい場合、または機能制限を取り除く場合は、についてこのメールアドレスはスパムボットから保護されています。閲覧するには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++ をインストールします

Spire.XLS for C++ をアプリケーションに組み込むには、2つの方法があります。一つは NuGet 経由でインストールする方法、もう一つは当社のウェブサイトからパッケージをダウンロードし、ライブラリをプログラムにコピーする方法です。NuGet 経由のインストールの方が便利で、より推奨されます。詳しくは、以下のリンクからご覧いただけます。

Spire.XLS for C++ を C++ アプリケーションに統合する方法

Excel を CSV に変換する

Spire.XLS for C++ は、Excel ファイル内のシートを CSV に変換する XlsWorksheet->SaveToFile (LPCWSTR_S fileName, LPCWSTR_S separator, Spire::Common::Encoding* encoding) メソッドを提供します。詳細な手順は次のとおりです。

  • Workbook クラスのインスタンスを初期化します。
  • Workbook->LoadFromFile() メソッドを使用して Excel ファイルをロードします。
  • Workbook->GetWorksheets()->Get(int index) メソッドを使用して、ワークブック内の特定のシートをインデックスで取得します。
  • XlsWorksheet->SaveToFile (LPCWSTR_S fileName, LPCWSTR_S separator, Spire::Common::Encoding* encoding) メソッドを使用して、ワークシートを CSV ファイルに保存します。
  • C++
#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;
}

C++:Excel を CSV におよび CSV を Excel に変換する方法

Excel の表示されるデータをCSV に変換する

上記のコードを使用して Excel ワークシートを CSV に変換する場合、表示データと非表示データが CSV として保存されます。表示データのみを保存する場合は、XlsWorksheet->SaveToFile (LPCWSTR_S fileName, LPCWSTR_S separator, bool retainHiddenData) メソッドを使用してください。詳細な手順は次のとおりです。

  • Workbook クラスのインスタンスを初期化します。
  • Workbook->LoadFromFile() メソッドを使用して Excel ファイルをロードします。
  • Workbook->GetWorksheets()->Get(int index) メソッドを使用して、ワークブック内の特定のシートをインデックスで取得します。
  • XlsWorksheet->SaveToFile (LPCWSTR_S fileName, LPCWSTR_S separator, bool retainHiddenData) メソッドを使用して、シート内の表示されるデータを CSV ファイルに保存します。
  • C++
#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;
}

C++:Excel を CSV におよび CSV を Excel に変換する方法

CSV を Excel に変換する

CSV を Excel に変換するには、Workbook->LoadFromFile(LPCWSTR_S fileName, LPCWSTR_S separator) メソッドを使用して CSV ファイルをロードします。次に、Workbook->SaveToFile (LPCWSTR_S fileName, ExcelVersion version) メソッドを使用して Excel ファイルに保存します。詳細な手順は次のとおりです。

  • Workbook クラスのインスタンスを初期化します。
  • Workbook->LoadFromFile(LPCWSTR_S fileName,LPCWSTR_S separator) メソッドを使用して、セパレータ付きの CSV ファイルをロードします。
  • Workbook->GetWorksheets()->Get(int index) メソッドを使用して、特定のシートをインデックスで取得します。
  • Worksheet->GetRange(LPCWSTR_S name)->SetIgnoreErrorOptions(IgnoreErrorType::NumberAsText) メソッドを使用して、特定のセル範囲の数値をテキストとして保存するときに「エラーを無視する」を設定します。
  • Worksheet->GetAllocatedRange()->AutoFitColumns() メソッドを使用して列幅を自動調整します。
  • Workbook->SaveToFile (LPCWSTR_S fileName, ExcelVersion version) メソッドを使用して、CSV を Excel ファイルに保存します。
  • C++
#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;
}

C++:Excel を CSV におよび CSV を Excel に変換する方法

一時ライセンスを申請する

結果ドキュメントから評価メッセージを削除したい場合、または機能制限を取り除く場合は、についてこのメールアドレスはスパムボットから保護されています。閲覧するには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に変換する際に、プログラムが長時間ハングアップしていた問題が修正されました。
ここで Spire.Presentation for Java 8.4.1をダウンロードする

ワークシートを作成する際、MS Excel のデフォルトフォントは「Calibri」で、サイズは11、色は黒です。ただし、文書の外観を最適化するために太字や斜体など異なるフォントスタイルを適用したり、大量のデータの中から重要な情報を強調するために特定のフォント色を設定したりする必要がある場合があります。この記事では、Spire.XLS for C++ を使用して C++ で Excel のセルにフォントを適用する方法について説明します。

Spire.XLS for C++ をインストールします

Spire.XLS for C++ をアプリケーションに組み込むには、2つの方法があります。一つは NuGet 経由でインストールする方法、もう一つは当社のウェブサイトからパッケージをダウンロードし、ライブラリをプログラムにコピーする方法です。NuGet 経由のインストールの方が便利で、より推奨されます。詳しくは、以下のリンクからご覧いただけます。

Spire.XLS for C++ を C++ アプリケーションに統合する方法

異なる Excel セルに異なるフォントを適用する

Spire.XLS for C++ によって提供される ExcelFont クラスを使用すると、セル内のフォント名、色、サイズ、およびスタイルを設定または変更できます。以下は、Excel のさまざまなセルに異なるまなフォントを適用する手順です。

  • Workbook オブジェクトを作成します。
  • Workbook->GetWorksheets()->Get() メソッドを使用して特定のワークシートを取得します。
  • Worksheet->GetRange() メソッドを使用して、指定されたセルを取得します。
  • CellRange->SetText() メソッドを使用してセルの値を設定します。
  • CellRange->GetStyle()->GetFont() メソッドを使用して、指定されたセルのフォントを取得します。
  • ExcelFont クラスのメソッドを使用して、フォント名、色、サイズ、およびスタイルを設定します。
  • Workbook->SaveToFile() メソッドを使用して結果ファイルを保存します。
  • C++
#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();
}

C++:Excel のセルにフォントを適用する方法

単一の Excel セルに複数のフォントを適用する

単一の Excel セルに複数のフォントを適用することで、特定の文字を強調するのに役立ちます。以下は、単一のセルに複数のフォントを適用する手順です。

  • Workbook オブジェクトを作成します。
  • Workbook->GetWorksheets()->Get() メソッドを使用して特定のワークシートを取得します。
  • Workbook->CreateExcelFont() メソッドを使用して 2 つの ExcelFont オブジェクトを作成します。
  • Worksheet->GetRange() メソッドを使用して指定されたセルを取得します。
  • 次に、CellRange->GetRichText()->SetText() メソッドを使用してセルのリッチテキストのコンテンツを設定します。
  • RichText->SetFont(int startPos, int endPos, ExcelFont* font) メソッドを使用して、2 つの ExcelFont オブジェクトをリッチ テキストに適用します。
  • Workbook->SaveToFile() メソッドを使用して結果ファイルを保存します。
  • C++
#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();
}

C++:Excel のセルにフォントを適用する方法

一時ライセンスを申請する

結果ドキュメントから評価メッセージを削除したい場合、または機能制限を取り除く場合は、についてこのメールアドレスはスパムボットから保護されています。閲覧するにはJavaScriptを有効にする必要があります。にお問い合わせ、30 日間有効な一時ライセンスを取得してください。

ドキュメントのセキュリティは、重要なデータやプライベートなデータが Word ドキュメントに含まれている場合に特に重要です。Word ドキュメントには、パスワード保護読み取り専用モード編集制限部分的な保護など、ドキュメントを保護するために使用できるセキュリティ オプションがいくつか用意されています。一方、保護が不要になった場合、作業効率を上げるために、Word ドキュメントの保護を解除する必要がある場合があります。

この記事では、Spire.Doc for C++ を使用して Word ドキュメントを保護または保護解除する方法について紹介します。

Spire.Doc for C++ をインストールします

Spire.Doc for C++ をアプリケーションに組み込むには、2つの方法があります。一つは NuGet 経由でインストールする方法、もう一つは当社のウェブサイトからパッケージをダウンロードし、ライブラリをプログラムにコピーする方法です。NuGet 経由のインストールの方が便利で、より推奨されます。詳しくは、以下のリンクからご覧いただけます。

Spire.Doc for C++ を C++ アプリケーションに統合する方法

Word ドキュメントをパスワードで保護する

ドキュメントをパスワードで暗号化することで、自分と特定の人だけがそのドキュメントを読んだり編集したりできるようにすることができます。以下は、Spire.Doc for C++ を使用して、Word ドキュメントをパスワードで保護する手順です。

  • Document のオブジェクトを作成します。
  • Document->LoadFromFile() メソッドを使用して Word ドキュメントを読み込みます。
  • Document->Eencrypt(LPCWSTR_S password) メソッドを使用して、ドキュメントをパスワード付きで暗号化します。
  • Document->SaveToFile() メソッドを使用して、ドキュメントを保存します。
  • C++
#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;
}

C++:Word ドキュメントの保護と保護解除

Word ドキュメントの編集を制限する

ドキュメントを読む許可は与えるが、その人ができる変更の種類を制限したい場合、特定の保護タイプと許可パスワードでドキュメントを保護することができます。

保護の種類 説明
AllowOnlyComments ドキュメント内のコメントの修正は可能です。
AllowOnlyFormFields ドキュメント内のフォームフィールドへのデータ入力のみが許可されます。
AllowOnlyReading ドキュメントは読み取り専用です。
AllowOnlyRevisions ドキュメントに変更マークを追加することのみが許可されます。
NoProtection ドキュメントは保護されていません。

Spire.Doc for C++ を使用して、Word ドキュメントの編集を制限する手順を以下に示します。

  • Document のオブジェクトを作成します。
  • Document->LoadFromFile() メソッドを使用して Word ドキュメントを読み込みます。
  • Document->Protect(Spire::Doc::ProtectionType type, LPCWSTR_S password) メソッドを使用して、保護種類と許可パスワードを指定してドキュメントを保護します。
  • Document->SaveToFile() メソッドを使用して、ドキュメントを保存します。
  • C++
#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;
}

C++:Word ドキュメントの保護と保護解除

Word ドキュメントのセクションを保護する

Word ドキュメントでは、一部のセクションをロックし、残りのセクションを編集可能な状態にすることができます。以下は、Spire.Doc for C++ を使用して、Word ドキュメントの選択したセクションを保護する手順です。

  • Document のオブジェクトを作成します。
  • Document->LoadFromFile() メソッドを使用して Word ドキュメントを読み込みます。
  • Document->Protect() メソッドを使用して、保護種類を AllowOnlyFormFields に設定します。
  • Section->SetProtectForm() メソッドの引数にfalseを渡すことで、特定のセクションの保護を解除します。他のセクションは、保護が維持されます。
  • Document->SaveToFile() メソッドを使用してドキュメントを保存します。
  • C++
#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;
}

C++:Word ドキュメントの保護と保護解除

Word ドキュメントに編集可能な領域を作成する

特定のセクションを編集可能にする以外に、変更可能な範囲を絞り込むために、テキスト範囲に基づいて編集可能な領域を作成することができます。以下は、Spire.Doc for C++ を使用して、読み取り専用の Word ドキュメントに編集可能な領域を作成する手順です。

  • Document のオブジェクトを作成します。
  • Document->LoadFromFile() メソッドを使用して Word ファイルを読み込みます。
  • Document->Protect() メソッドを使用して、保護種類を AllowOnlyReading に設定します。
  • PermissionStart のオブジェクトと PermissionEnd のオブジェクトを作成します。
  • 編集可能な領域の開始を示す PermissionStart のオブジェクトを DocumentObjectCollection->Insert(int index, Spire::Doc::lDocumentObject *entity) メソッドで段落の最初に挿入します。
  • 編集可能な領域の終わりを示す PermissionEnd のオブジェクトを、DocumentObjectCollection->Add(Spire::Doc::lDocumentObject *entity) メソッドで段落の終わりに追加します。
  • Document->SaveToFile() メソッドを使用して、ドキュメントを保存します。
  • C++
#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;
}

C++:Word ドキュメントの保護と保護解除

Word ドキュメントから編集可能な領域を削除する

編集可能領域を削除するためには、ドキュメント内の「PermissionStart」「PermissionEnd」タグを探し出し、削除する必要があります。以下、詳しい手順を説明します。

  • Document のオブジェクトを作成します。
  • Document->LoadFromFile() メソッドを使用して、編集可能な領域を含むWordドキュメントを読み込みます。
  • ドキュメント内のすべての子オブジェクトをループし、ある子オブジェクトが PermissionStart クラスまたは PermissionEnd クラスのインスタンスであるかどうかを判断します。もしそうなら、Paragraph->GetChildObjects()->Remove(Spire::Doc::IDocumentObject *entity) メソッドを使用して、その子オブジェクトを段落から削除します。
  • Document->SaveToFile() メソッドを使用して、ドキュメントを保存します。
  • 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");

	//「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;
}

Word ドキュメントから制限を解除する

Spire.Doc for C++ は、権限パスワードを知らなくても編集制限を解除することができます。以下、詳しい手順を説明します。

  • Document のオブジェクトを作成します。
  • Document->LoadFromFile() メソッドを使用して、編集制限を含む Word ドキュメントを読み込みます。
  • Document->Protect() メソッドを使用して、保護種類を NoProtection に設定します。
  • Document->SaveToFile() メソッドを使用してドキュメントを保存します。
  • 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 ドキュメントからパスワードを削除する

暗号化された Word ドキュメントのパスワードが不要になった場合、削除することができます。以下、詳しい手順を説明します。

  • Document のオブジェクトを作成します。
  • Document->LoadFromFile((LPCWSTR_S fileName, Spire::Doc::FileFormat fileFormat, LPCWSTR_S password) メソッドを使用してパスワード保護された Word ドキュメントを読み込みます。
  • Document->RemoveEncryption() メソッドを使用して、パスワードを削除します。
  • Document->SaveToFile() メソッドを使用して、ドキュメントを保存します。
  • 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", 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++ をインストールします

Spire.Doc for C++ をアプリケーションに組み込むには、2つの方法があります。一つは NuGet 経由でインストールする方法、もう一つは当社のウェブサイトからパッケージをダウンロードし、ライブラリをプログラムにコピーする方法です。NuGet 経由のインストールの方が便利で、より推奨されます。詳しくは、以下のリンクからご覧いただけます。

Spire.Doc for C++ を C++ アプリケーションに統合する方法

Word ドキュメントを作成する

Spire.Doc for C++ を使用すると、1つまたは複数のセクションを持つ Word ドキュメントを作成し、段落、表、画像、リスト、ハイパーリンク、透かし、ヘッダー、フッター、コンテンツコントロール、コメントなどの様々な要素を追加できます。

次の手順では、セクションと3つの段落を持つ簡単な Word ドキュメントを作成する方法を紹介します。

  • Document クラスのインスタンスを作成します。
  • Document->AddSection() メソッドを使用して、ドキュメントにセクションを追加します。
  • セクションのページ余白を設定します。
  • Section->AddParagraph() メソッドを使用して、セクションに3つの段落を追加します。
  • Paragraph->AppendText() メソッドを使用して、段落にテキストを追加します。
  • ParagraphStyle のインスタンスを2つ作成し、2つの段落スタイルを作成します。そして、Paragraph->ApplyStyle() メソッドを使用して、それぞれの段落にスタイルを適用します。
  • Document->SaveToFile() メソッドを使用して、ドキュメントを保存します。
  • C++
#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();
}

C++:Word ドキュメントの作成と編集の方法

既存の Word ドキュメントを編集する

Spire.Doc for C++ は、Word ドキュメントの作成以外にも、既存の Word ドキュメントを編集することも可能です。例えば、ドキュメント内の既存の要素を変更したり、ドキュメントに新しい要素を追加したりすることができます。

次の手順では、Word ドキュメント内の特定の段落のテキストを変更する方法を説明します。

  • Document のインスタンスを作成します。
  • Document->LoadFromFile() メソッドを使用して Word ドキュメントを読み込みます。
  • Document->GetSections()->GetItem(int index) メソッドを使用して、ドキュメント内の特定のセクションにそのインデックスでアクセスします。
  • Section->GetParagraphs()->GetItem(int index) メソッドを使用して、セクション内の特定の段落にそのインデックスでアクセスします。
  • Paragraph->SetText() メソッドを使用して、段落のテキストを変更します。
  • Document->SaveToFile() メソッドを使用してドキュメントを保存します。
  • C++
#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();
}

C++:Word ドキュメントの作成と編集の方法

一時ライセンスを申請する

結果ドキュメントから評価メッセージを削除したい場合、または機能制限を取り除く場合は、についてこのメールアドレスはスパムボットから保護されています。閲覧するにはJavaScriptを有効にする必要があります。にお問い合わせ、30 日間有効な一時ライセンスを取得してください。

余白とは、PDF ドキュメントのページの周りにある空白部分のことです。 ページの内容をより多く表示するためにドキュメントの余白を増やしたり、ページの内容をよりコンパクトに見せるためにドキュメントの余白を減らしたりすることができます。 この記事では、Spire.PDF for Java を使用してプログラムで PDF ドキュメントの余白を調整する方法を紹介します。

Spire.PDF for Java をインストールします

まず、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 ドキュメントのページを新しいドキュメントページに描画することで、PDF ドキュメントの余白を拡大することができます。 以下、詳しい手順を説明します。

  • PdfDocument のオブジェクトを作成します。
  • PdfDocument.loadFromFile() メソッドを使用して、既存の PDF ドキュメントを読み込みます。
  • 別の PdfDocument のオブジェクトを作成し、ページサイズの大きい PDF ドキュメントを作成します。
  • 余白の値を大きくするように設定します。
  • 新しいドキュメントのページサイズを設定します。
  • 元のドキュメントのページをループして、PdfPageBase.createTemplate() メソッドを使用して、指定されたページに基づいてテンプレートを作成します。
  • PdfDocument.getPages().add() メソッドを使用して、新しい PDF ドキュメントにページを追加します。
  • PdfTemplate.draw() メソッドを使用して、追加されたページ上に初期座標 (0, 0) からテンプレートを描画します。
  • PdfDocument.saveToFile() メソッドを使用して、新しい PDF ドキュメントを保存します。
  • Java
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);
    }
}

Java:既存の PDF ドキュメントの余白を調整する方法

既存の PDF ドキュメントの余白を減らす

同様の方法で、PDF ドキュメントの余白を減らすには、まずページを小さくしたPDF ドキュメントを作成する必要があります。 次に、指定した座標から新しい PDF ドキュメントのページに元の PDF ドキュメントのページを描画します。 詳しい操作手順は以下の通りです。

  • PdfDocument のオブジェクトを作成します。
  • PdfDocument.loadFromFile() メソッドを使用して、既存の PDF ドキュメントを読み込みます。
  • 別の PdfDocument のオブジェクトを作成し、ページサイズを小さくした PDF ドキュメントを作成します。
  • 縮小する余白の値を設定します。
  • 新しい PDF ドキュメントの余白を設定します。
  • 元のドキュメントのページをループして、PdfPageBase.createTemplate() メソッドを使用して、指定されたページに基づいてテンプレートを作成します。
  • PdfDocument.getPages().add() メソッドを使用して、新しい PDF ドキュメントにページを追加します。
  • PdfTemplate.draw() メソッドを使用して、追加されたページ上の指定された位置にテンプレートを描画します。
  • PdfDocument.saveToFile() メソッドを使用して、新しい PDF ドキュメントを保存します。
  • Java
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);
    }
}

Java:既存の PDF ドキュメントの余白を調整する方法

一時ライセンスを申請する

結果ドキュメントから評価メッセージを削除したい場合、または機能制限を取り除く場合は、についてこのメールアドレスはスパムボットから保護されています。閲覧するにはJavaScriptを有効にする必要があります。にお問い合わせ、30 日間有効な一時ライセンスを取得してください。

Spire.Presentation 8.4.1のリリースを発表できることをうれしく思います。このバージョンは、PPTを画像に変換する際にプログラムが無限ループに入り、メモリが消耗される問題を修正しました。詳細は以下の内容を読んでください。

このリリースで行われた変更のリストは次のとおりです
カテゴリー ID 説明
Bug SPIREPPT-2224 PPTを画像に変換する際にプログラムが無限ループに入り、メモリが消耗される問題を修正しました。
ここで Spire. Presentation 8.4.1をダウンロードする

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」をスローする問題が修正されました。
ここで Spire.XLS for Java 13.4.1をダウンロードする

PDF の1ページの内容を分離して表示、分離印刷などの操作を行う必要がある場合、内容の再編集が面倒になることがあります。 このような場合、1つのページを直接複数のページに分割することで、表示や印刷などの操作を容易にすることができます。 今回は、Spire.PDF for Java を使用して、PDF ドキュメントのページを分割する方法を紹介します。

Spire.PDF for Java をインストールします

まず、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>

PDF のページを複数ページに分割する

Spire.PDF for Java では、PDF ページの内容を新しい PDF ページに描画するための PdfPageBase.createTemplate().draw() メソッドを提供しています。 このメソッドを使って、元のページの内容を複数ページに分けて描画することで、PDF ページを分割する目的を達成することができます。 以下は、PDF ページを3ページに分割する、詳細な操作手順です。

  • PdfDocument のオブジェクトを作成します。
  • PdfDocument.loadFromFile() メソッドを使用して、PDF ドキュメントを読み込みます。
  • PdfDocument.getPages().get() メソッドを使用して、指定されたページを取得します。
  • 新しい PDF ドキュメントを作成し、その余白を0に設定します。
  • 新しい PDF ドキュメントのページサイズを、元の PDF ドキュメントのページサイズの1/3に設定します。
  • PdfDocument.getPages().add() メソッドを使用して、新しい PDF ドキュメントにページを追加します。
  • PdfPageBase.createTemplate().draw() メソッドを使用して、元の PDF ページの内容を新しいページ上に描画します。
  • PdfDocument.saveToFile() メソッドを使用して、ドキュメントを保存します。
  • Java
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();
    }
}

Java:PDF のページを分割する方法

一時ライセンスを申請する

結果ドキュメントから評価メッセージを削除したい場合、または機能制限を取り除く場合は、についてこのメールアドレスはスパムボットから保護されています。閲覧するにはJavaScriptを有効にする必要があります。にお問い合わせ、30 日間有効な一時ライセンスを取得してください。