「Qtの基礎 - PDF」の版間の差分

提供:MochiuWiki : SUSE, EC, PCB
ナビゲーションに移動 検索に移動
1行目: 1行目:
== 概要 ==
== 概要 ==
Qtにおいて、PDFを作成する手順を記載する。<br>
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;
 }