PDF Tools ホーム > PDF Tools ライト > PDF Image-LP概要 > C++サンプル > 画像変換時のフォント代替

PDF Imager-LP 画像変換時にフォントを代替する C++サンプル

PDF Imager-LPは、PDF文書を画像(TIFF、JPEG、PNG)に変換するライトなライブラリです。
機能を限定してお求めやすくしました。 (PDF Imager-LP概要は、こちらです。)

PDF Imager-LP 購入(価格)


ここでは、PDFに指定されたフォントを別のフォントで代替するサンプルを示します。
フォント指定時にフォントの太さ(font weight)や斜体(font style)などを指定できます。


他の開発言語によるサンプル:
 VB.NET画像変換時にフォントを代替するサンプル
 VB6.0画像変換時にフォントを代替するサンプル
 C#画像変換時にフォントを代替するサンプル
 C++他のサンプル


ダウンロード:
PDF Imager-LPの無償体験版は、以下からダウンロードできます。無償体験版は、製品版と同じ機能が使えます。
利用許諾契約書をご確認のうえダウンロードしてください。ダウンロードしますと、利用許諾に同意したものとみなします。
評価利用では、ライセンスキーが必要ですので一緒にダウンロードしてください。


高機能な、画像変換ライブラリ「PDF to Image Converter」は、こちらです。

インストール

ライブラリは、無償でダウンロードおよび試用できます。 ダウンロードしてから、適当なフォルダーに解凍してください。以下のようなフォルダーができますので適宜ご利用ください。

docライブラリ説明書、利用許諾契約書
includeC/C++用ヘッダー(.h)ファイル
VB6.0用モジュール
lib.NET用ラッパーDLLおよびDLLライブラリ、Libファイル
sampleC/C++言語、C#/VB.NET言語および
Visual Basic 6.0サンプル

サンプル実行前に、lib/PdfImagerLP.dllをサンプルの実行イメージと同じフォルダーにコピーしてください。

画像への変換時にフォントを代替するC++サンプルコード

フォントが埋め込まれていないPDFを画像に変換する際、PDF指定フォントを別のフォントで代替するC++のサンプルコードです。 (C#サンプルはこちら)
PDFに埋め込まれたフォントを別のフォントで代替するサンプルこちらです。

以下のPDF文書の明朝フォントをゴシックフォントに替えて変換(結果はこちら)します。

#include "ImagerLp.h"
#pragma comment(lib, "PdfImagerLP.lib")

int main(int argc, char* argv[])
{
    //初期化
    if(MlpInitialize("ライセンスキー")){
        printf("ライセンスキーが不正です。正しいライセンスキーを使用してください。");
        return 1;
    }

    //初期化ファイル(省略可)
    //MlpSetAlternateFont関数で直接の指定も可能
    if(MlpLoadInitFile("init.xml")){
        printf("初期化ファイルエラーです。");
        return 2;
    }

    //フォントの代替
    //初期化ファイルでの指定も可能です
    MlpSetAlternateFont("MS-PMincho", "MS Pゴシック", 1);

    //PDF文書オープン
    if(MlpOpenDoc("ファイル.pdf", NULL, NULL)){
        printf("PDFファイルをオープンできません。");
        return 3;
    }

    //画像作成
    MlpCreatePict(1, "ファイル.jpg");  //最初のページを画像に変換

    //文書クローズ
    MlpCloseDoc();

    //後始末
    MlpUninitialize();

    return 0;
}
MlpInitialize 初期化
引数にライセンスキーを指定します。
成功すると、0(ゼロ)が戻ります。それ以外はエラーです。
MlpLoadInitFile 初期データを指定
代替するフォントを記述したXMLファイルを指定できます。
成功すると、0(ゼロ)が戻ります。それ以外はエラーです。
以下は、「MS-PMincho」フォントを「MS Pゴシック」に代替するXMLデータの具体例です。
<?xml version="1.0" encoding="shift_jis" ?>
<init>
 <fonts>
  <font org="MS-PMincho" alt="MS Pゴシック" always="true"/>
 </fonts>
</init>
MlpSetAlternateFont PDFのフォントを代替
PDF文書に指定されたフォント名と代替するフォント名を指定します。
成功すると、0(ゼロ)が戻ります。それ以外はエラーです。
引数に以下を指定します。
第一引数PDF文書に指定されたフォント名
第二引数代替するフォント名
第三引数0を指定すと第一引数で指定したフォントがシステムにインストールされている場合はそのフォントで画像に変換します。
1を指定すると第一引数に指定したフォントがシステムにインストールされている場合でも第二引数に指定したフォントを使って画像に変換します。
MlpOpenDoc PDFファイルを開く
指定したファイルが画像への変換対象になります。
成功すると、0(ゼロ)が戻ります。それ以外はエラーです。
引数に以下を指定します。
第一引数PDFファイル名
第二引数オーナーパスワード(パスワードで暗号化されている場合)、またはNULL
第三引数ユーザーパスワード(パスワードで暗号化されている場合)、またはNULL
MlpCreatePict 指定されたページを画像に変換します。
成功すると、0(ゼロ)が戻ります。それ以外はエラーです。
引数は以下を指定します。
第一引数PDF文書のページ番号(最初のページは1と指定します。)
第二引数結果を格納するファイル名を指定します。指定された拡張子によって画像形式が以下のように変わります。
拡張子画像形式
.pngPNG(Porable Network Graphics)形式
.jpegまたは.jpgJPEG(Joint Photographic Experts Group)形式
.tiffまたは.tifTIFF(Tagged Image File Format)形式
MlpCloseDoc 開いたPDFファイルを閉じます。
MlpUninitialize 終了します。
変換結果:明朝フォントをゴシックフォントに代替

入力のPDF文書はこちらです。

画像への変換時に埋め込みフォントを代替するC++サンプルコード

フォントがPDF文書に埋め込まれている場合でも、そのフォントを別のフォントで代替して画像に変換するC++のサンプルコードです。 (C#サンプルはこちら)

以下のPDF文書のメイリオフォント(サロゲートペア文字)を明朝フォントに替えて変換(結果はこちら)します。

#include "ImagerLp.h"
#pragma comment(lib, "PdfImagerLP.lib")

int main(int argc, char* argv[])
{
    //初期化
    if(MlpInitialize("ライセンスキー")){
        printf("ライセンスキーが不正です。正しいライセンスキーを使用してください。");
        return 1;
    }

    //初期化ファイル(省略可)
    if(MlpLoadInitFile("init.xml")){
        printf("初期化ファイルエラーです。");
        return 2;
    }

    //フォントの代替
    //初期化ファイルでの指定も可能
    MlpSetAlternateFont2("Meiryo", "MS 明朝", "", "", 1, 1);

    //PDF文書オープン
    if(MlpOpenDoc("ファイル.pdf", NULL, NULL)){
        printf("PDFファイルをオープンできません。");
        return 3;
    }

    //画像作成
    MlpCreatePict(1, "out.jpg");  //最初のページを画像に変換

    //文書クローズ
    MlpCloseDoc();

    //後始末
    MlpUninitialize();

    return 0;
}
MlpSetAlternateFont2 PDFのフォントを代替
PDF文書に指定されたフォント名と代替するフォント名を指定します。
成功すると、0(ゼロ)が戻ります。それ以外はエラーです。
引数に以下を指定します。
第一引数PDF文書に指定されたフォント名
第二引数代替するフォント名
第三引数代替するフォントの太さ(boldなど)
第四引数代替するフォントのスタイル(italicなど)
第五引数0を指定すると第一引数で指定したフォントがシステムにインストールされている場合はそのフォントで画像に変換します。
1を指定すると第一引数に指定したフォントがシステムにインストールされている場合でも第二引数に指定したフォントを使って画像に変換します。
第六引数0を指定すると第一引数で指定したフォントがPDF文書に埋め込まれている場合はそのフォントを使って画像に変換します。
1を指定すると第一引数に指定したフォントがPDF文書に埋め込まれている場合でも第二引数に指定したフォントを使って画像に変換します。
変換結果: メイリオフォントを明朝フォントに代替

入力のPDF文書はこちらです。

画像への変換時に大文字フォントに代替するC++サンプルコード

小文字のASCII文字を小さなサイズの大文字に替えて変換する画像に変換するC++のサンプルコードです。(C#サンプルはこちら)

以下のPDF文書のASCII文字("mager"部分)を小さな大文字に替えて変換(結果はこちら)します。

#include "ImagerLp.h"
#pragma comment(lib, "PdfImagerLP.lib")

int main(int argc, char* argv[])
{
    //初期化
    if(MlpInitialize("ライセンスキー")){
        printf("ライセンスキーが不正です。正しいライセンスキーを使用してください。");
        return 1;
    }

    //初期化ファイル(省略可)
    if(MlpLoadInitFile("init.xml")){
        printf("初期化ファイルエラーです。");
        return 2;
    }

    //PDF文書オープン
    if(MlpOpenDoc("ファイル.pdf", NULL, NULL)){
        printf("PDFファイルをオープンできません。");
        return 3;
    }

    //画像作成
    MlpCreatePict(1, "out.jpg");  //最初のページを画像に変換

    //文書クローズ
    MlpCloseDoc();

    //後始末
    MlpUninitialize();

    return 0;
}
MlpLoadInitFile 初期データを指定
代替するフォントを記述したXMLファイルを指定できます。
成功すると、0(ゼロ)が戻ります。それ以外はエラーです。
以下は、Times New Romanフォントの小文字を小さな大文字に代替するXMLデータの具体例です。
<?xml version="1.0" encoding="shift_jis" ?>
<init>
  <fonts>
   <font org="TimesNewRomanPSMT" alt="Times New Roman"
                       variant="small-caps" always="true"/>
  </fonts>
 </init>
変換結果: ASCIIの小文字を小さな大文字に代替

入力のPDF文書はこちらです。

エラーコード

以下のエラーコードが戻ります。

MLP_ALREADY_INITIALIZED既に初期化されています。
MLP_NOT_INITIALIZED初期化できない、もしくは、初期化していない場合。
MLP_INIT_FILE_OPEN_ERROR初期化ファイルを読めません。
MLP_LICENSE_ERROR不正なライセンスキーもしくは、評価用ライセンスキーの期限切れです。
MLP_ALREADY_OPENED既にPDF文書をオープンしています。
MLP_FILE_OPEN_ERROR指定のPDF文書をオープンできません。
MLP_FILE_IS_NOT_PDFPDF文書として解析できません。
MLP_FILE_NOT_DECRYPTEDPDF文書が暗号化されていますが、指定のパスワードでは復号できません。
MLP_FILE_NOT_OPENEDPDF文書がオープンされていません。
MLP_PDF_PARSE_ERRORPDFの解析中にエラーとなりました。
MLP_PDF_HAS_NOT_PAGE指定のPDF文書にはページがありません。
MLP_INVALID_PAGE_NUMBER指定したページの番号は無効です。
MLP_INVALID_RESOLUTION指定された解像度は無効です。
MLP_INVALID_QUALITY指定されたJPEG品質は無効です。
MLP_NO_OUTPUT_FILE出力ファイルが指定されていません。または、指定の出力ファイルの形式(拡張子)が無効です。
MLP_TOO_LARGE_PIXEL作成しようとしている画像が大きすぎます。
MLP_DRAW_ERROR画像作成用のメモリー領域を確保できません。

無償評価版およびサンプル

PDF Imager-LPの無償体験版は、以下からダウンロードできます。無償体験版は、製品版と同じ機能が使えます。
利用許諾をご確認のうえダウンロードしてください。ダウンロードしますと、利用許諾に同意したものとみなします。
評価利用では、ライセンスキーが必要ですので一緒にダウンロードしてください。


サンプル ソースコード

サンプルのソースコードは、以下をダウンロードしてください。(Visual Studio2008プロジェクト)

ご質問、お問い合わせ

メールで support@TrustSS.co.jp 宛てにお送りください。
または、質問のページからお送りいただくようお願いします。ご要望も承っております。




PDF Imager-LPサンプル

C++

C#

VB.NET

VB6.0