「Qtの基礎 - PDF」の版間の差分
(→PDFの作成) |
(→概要) |
||
1行目: | 1行目: | ||
== 概要 == | == 概要 == | ||
Qtは、PDFファイルの作成、表示、操作のための複数のクラスとモジュールを提供している。<br> | |||
これらは主に、QtPrintSupportモジュールとQtGuiモジュールに含まれている。<br> | |||
<br> | |||
QtのPDFサポートは基本的なPDF作成や表示において基本的な機能に限られているため、より高度な操作が必要な場合は、追加のライブラリやツールの使用を推奨する。<br> | |||
<br> | |||
例えば、QPdfWriterライブラリは小規模から中規模のPDFファイル生成に適している。<br> | |||
大規模で複雑なPDFファイルの場合、または、複雑なPDF操作や高度な機能が必要な場合は、サードパーティ製ライブラリの使用を検討する必要がある。<br> | |||
<br><br> | |||
== QtのPDFモジュール == | |||
==== 主要なクラス ==== | |||
* QPdfWriterクラス | |||
*: PDFファイルを作成するためのクラスである。 | |||
* QPrinterクラス | |||
*: プリンタやPDFファイルへの出力を扱うクラスである。 | |||
* QPagedPaintDeviceクラス | |||
*: ページベースのペイントデバイスの基本クラスである。 | |||
* QPdfDocumentクラス (Qt 5.10以降) | |||
*: PDFドキュメントを読み込み、操作するためのクラスである。 | |||
<br> | |||
==== PDF作成 ==== | |||
QPdfWriterクラス、または、QPrinterクラスを使用して、PDFファイルを作成することができる。<br> | |||
QPainterクラスと組み合わせて使用することにより、テキスト、図形、画像などをPDFに描画できる。<br> | |||
<br> | |||
==== PDF表示 ==== | |||
Qt 5.10以降、Qt WidgetsではQPdfViewerウィジェットが提供されており、PDFファイルを表示することができる。<br> | |||
<br> | |||
==== PDF操作 ==== | |||
<code>QPdfDocument</code>クラスを使用して、PDFファイルのページ数の取得、ページの抽出、メタデータの読み取り等の操作が可能である。<br> | |||
<br> | |||
==== 印刷サポート ==== | |||
QtPrintSupportモジュールを使用することで、PDFファイルの作成だけでなく、実際のプリンタへの印刷も可能である。<br> | |||
<br> | |||
==== サードパーティ製ライブラリとの統合 ==== | |||
Qtは、Popplerライブラリ、MuPDFライブラリ等のサードパーティ製PDFライブラリと統合することも可能であり、より高度なPDF操作を行うことができる。<br> | |||
<br><br> | <br><br> | ||
2024年8月23日 (金) 17:44時点における版
概要
Qtは、PDFファイルの作成、表示、操作のための複数のクラスとモジュールを提供している。
これらは主に、QtPrintSupportモジュールとQtGuiモジュールに含まれている。
QtのPDFサポートは基本的なPDF作成や表示において基本的な機能に限られているため、より高度な操作が必要な場合は、追加のライブラリやツールの使用を推奨する。
例えば、QPdfWriterライブラリは小規模から中規模のPDFファイル生成に適している。
大規模で複雑なPDFファイルの場合、または、複雑なPDF操作や高度な機能が必要な場合は、サードパーティ製ライブラリの使用を検討する必要がある。
QtのPDFモジュール
主要なクラス
- QPdfWriterクラス
- PDFファイルを作成するためのクラスである。
- QPrinterクラス
- プリンタやPDFファイルへの出力を扱うクラスである。
- QPagedPaintDeviceクラス
- ページベースのペイントデバイスの基本クラスである。
- QPdfDocumentクラス (Qt 5.10以降)
- PDFドキュメントを読み込み、操作するためのクラスである。
PDF作成
QPdfWriterクラス、または、QPrinterクラスを使用して、PDFファイルを作成することができる。
QPainterクラスと組み合わせて使用することにより、テキスト、図形、画像などをPDFに描画できる。
PDF表示
Qt 5.10以降、Qt WidgetsではQPdfViewerウィジェットが提供されており、PDFファイルを表示することができる。
PDF操作
QPdfDocument
クラスを使用して、PDFファイルのページ数の取得、ページの抽出、メタデータの読み取り等の操作が可能である。
印刷サポート
QtPrintSupportモジュールを使用することで、PDFファイルの作成だけでなく、実際のプリンタへの印刷も可能である。
サードパーティ製ライブラリとの統合
Qtは、Popplerライブラリ、MuPDFライブラリ等のサードパーティ製PDFライブラリと統合することも可能であり、より高度なPDF操作を行うことができる。
PDFの作成
QPdfWriterライブラリ
Qtでは、簡単にPDFを作成する機能が用意されている。
#include <QPdfWriter>
// PDFを作成
QPdfWriter pdfWriter("ファイル名");
// レイアウトオブジェクト
QPageLayout pdfLayout;
// 単位をポイントに設定
pdfLayout.setUnits(QPageLayout::Point);
// 紙サイズ、余白を設定
pdfLayout.setPageSize(QPageSize(QPageSize::A4), QMarginsF(105.0, 40.0, 40.0, 20.0));
// 縦に設定
pdfLayout.setOrientation(QPageLayout::Portrait);
// レイアウトオブジェクトをPDFに設置
pdfWriter.setPageLayout(pdfLayout);
// DPIを取得する場合は以下のようにする
double dPixToPoints = (double)pdfWriter.resolution() / 72.0;
// QPainterクラスを使用してPDFを書き込む
QPainter painter;
if(painter.begin(&pdfWriter))
{
painter.drawText(QPoint(100, 100), "何か文字");
// 改ページ
pdfWriter.newPage();
}
painter.end();
Poppler-Qt5ライブラリ
Poppler-Qt5は、QPdfWriterライブラリと比較して、より高度なPDF操作や読み込みに適している。
#include <QCoreApplication>
#include <QPainter>
#include <poppler-qt5.h>
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
// PDFファイルを読み込む
Poppler::Document *document = Poppler::Document::load("input.pdf");
if (!document || document->isLocked()) {
delete document;
return -1;
}
// 最初のページを取得
Poppler::Page *page = document->page(0);
if (page == nullptr) {
delete document;
return -1;
}
// ページを画像として描画
QImage image = page->renderToImage(72.0, 72.0);
// 画像を保存
image.save("output.png");
delete page;
delete document;
return 0;
}