copper-cti - v1.0.0
    Preparing search index...

    copper-cti - v1.0.0

    Copper PDF CTI Driver for Node.js

    Node.jsを使ってCopper PDF 2.1以降にアクセスするためのドライバです。

    • Node.js 14以降
    npm install https://github.com/mimidesunya/cti.nodejs.git
    

    詳細は examples/ ディレクトリ内のサンプルコードを参照してください。

    import { get_session } from 'copper-cti';
    import * as fs from 'fs';
    import * as path from 'path';

    async function main() {
    // Copper PDFサーバーに接続 (例: ctip://cti.li/)
    const session = get_session('ctip://cti.li/', {
    user: 'user',
    password: 'kappa'
    });

    try {
    const outFile = 'output/result.pdf';

    // 出力先ディレクトリがない場合は作成
    const outDir = path.dirname(outFile);
    if (!fs.existsSync(outDir)) {
    fs.mkdirSync(outDir, { recursive: true });
    }

    // 結果の出力先をファイルに指定
    session.setOutputAsFile(outFile);

    // 変換中のメッセージを表示するハンドラ
    session.setMessageFunc((code, msg, args) => {
    console.log(`Message [${code}]: ${msg}`);
    });

    // 変換開始 (ストリームへの書き込み)
    const writer = session.transcode('.');

    // HTMLを流し込む
    writer.write('<html><body><h1>Hello, Copper PDF!</h1></body></html>');
    writer.end();

    // 変換完了を待機
    await session.waitForCompletion();
    console.log(`PDF generated successfully: ${outFile}`);

    } catch (err) {
    console.error('Error:', err);
    } finally {
    session.close();
    }
    }

    main();
    const { get_session } = require('copper-cti');
    const fs = require('fs');

    async function main() {
    const session = get_session('ctip://cti.li/', {
    user: 'user',
    password: 'kappa'
    });

    try {
    session.setOutputAsFile('output/result.pdf');

    const writer = session.transcode('.');
    fs.createReadStream('index.html').pipe(writer);

    await session.waitForCompletion();
    console.log('PDF generated successfully');
    } catch (err) {
    console.error('Error:', err);
    } finally {
    session.close();
    }
    }

    main();
    import { get_session } from 'copper-cti';
    import * as fs from 'fs';

    async function main() {
    const session = get_session('ctip://cti.li/', {
    user: 'user',
    password: 'kappa'
    });

    try {
    // 結果を標準出力に流す
    session.setOutputAsStream(process.stdout);

    const writer = session.transcode('.');
    fs.createReadStream('index.html').pipe(writer);

    await session.waitForCompletion();
    } catch (err) {
    console.error(err);
    } finally {
    session.close();
    }
    }

    main();
    session.setProperty('output.pdf.version', '1.5');
    
    import { get_session, Resource } from 'copper-cti';
    import * as fs from 'fs';
    import * as path from 'path';

    async function main() {
    const session = get_session('ctip://cti.li/', {
    user: 'user',
    password: 'kappa'
    });

    try {
    session.setOutputAsFile('output/result.pdf');

    // リソース解決コールバックを設定
    session.setResolverFunc((uri: string, resource: Resource) => {
    const localPath = path.join(__dirname, uri);
    if (fs.existsSync(localPath)) {
    const out = resource.found({ mime_type: 'text/css' });
    fs.createReadStream(localPath).pipe(out);
    }
    // リソースが見つからない場合は resource.found() を呼ばない
    });

    const writer = session.transcode('.');
    fs.createReadStream('index.html').pipe(writer);

    await session.waitForCompletion();
    } finally {
    session.close();
    }
    }

    main();
    // セッションオプション
    interface SessionOptions {
    user?: string;
    password?: string;
    encoding?: string;
    }

    // トランスコードオプション
    interface TranscodeOptions {
    mimeType?: string; // デフォルト: 'text/html'
    encoding?: string; // デフォルト: 'UTF-8'
    length?: number; // デフォルト: -1 (不明)
    }

    // メッセージコールバック
    type MessageCallback = (code: number, message: string, args: string[]) => void;

    // 進捗コールバック
    type ProgressCallback = (total: number | null, read: number) => void;

    // リソース解決コールバック
    type ResolverCallback = (uri: string, resource: Resource) => void | Promise<void>;
    メソッド 説明
    setOutputAsFile(path) PDFをファイルに出力
    setOutputAsStream(stream) PDFをストリームに出力
    setOutputAsDirectory(dir, prefix, suffix) PDFをディレクトリに連番で出力
    setMessageFunc(callback) メッセージコールバックを設定
    setProgressFunc(callback) 進捗コールバックを設定
    setResolverFunc(callback) リソース解決コールバックを設定
    setProperty(name, value) プロパティを設定
    transcode(uri?, opts?) 変換を開始(Writableを返す)
    waitForCompletion() 変換完了を待機
    close() セッションを閉じる
    cti.nodejs/
    ├── src/ # TypeScriptソースコード
    ├── dist/ # コンパイル済みJavaScript + 型定義
    ├── examples/ # 使用例
    └── package.json

    テストにはCopper PDFサーバーへの接続が必要です(インテグレーションテスト)。

    1. test/test-config.json を作成:
    {
    "host": "localhost",
    "port": 8099,
    "user": "user",
    "password": "kappa"
    }
    1. テストを実行:
    npm test
    

    Ant から実行する場合は、cti.nodejs 配下で以下を実行します。

    ant test
    

    サーバーが起動していない場合、インテグレーションテストは自動的にスキップされます。 ユニットテスト(builder, session_boundary)はサーバーなしで実行できます。

    # 依存関係のインストール
    npm install

    # TypeScriptをコンパイル
    npm run build

    # テストを実行
    npm test

    # サンプルを実行
    node examples/output-file.js

    TypeDocを使用してAPIドキュメントを生成:

    npm run doc
    

    生成されたドキュメントは docs/ ディレクトリに出力されます。

    また、Ant から配布アーカイブを生成するには次を実行します。

    ant dist
    

    Apache License 2.0