Skip to main content
Participant
September 17, 2024
解決済み

InDesignでQRコード(テキスト情報のみ)を作成すると「半角スペース」が反映されません。

  • September 17, 2024
  • 返信数 1.
  • 808 ビュー

下記の通り、「データ結合」からQRコードを作成すると、「行頭」と「行末」に入れた「半角スペース(それぞれ複数個あり)」がQRコードに反映されません。
文字数が限定されたQRコードを作成したい(半角スペースは文字数としてカウントされている)のですが、反映されないため、適切なテキスト情報となりません。
尚、【オブジェクト】ー【QRコードを生成】から種類を「書式なし」にして作成すると正常なテキスト情報のQRコードが作成されます。が、複数のQRコードを一度に作成したいため、「スペースが反映されない」という状況に困っています。
対応方法等あれば教えていただきたいです。
■作業手順
1.Excelで取り込み用データを作成。CSV(コンマ区切り)で保存。
※1行目は「#QR」。テキスト情報は2行目以降。
※CSVファイルをテキストエディターで開くと、スペース込みの正常な文字列になっている。
2.InDesignで正方形のドキュメント(50x50 mm)を作成し、テキスト枠を配置。
3.手順2で作成したドキュメントで、【ウィンドウ】ー【ユーティリティ】―【データ結合】からソースファイル(CSVファイル)を選択、フィールドに読み込む。
4.結合ドキュメントを作成、PNGで書き出し。
■QRコードに入れたいテキスト情報
スペース、数字、アルファベット(全て半角)、89文字
※スペースは行頭と行末、及び数字とアルファベットの間にも複数個入る。

    解決に役立った回答 Omachi

    前後の空白を削除するというのは仕様でしょうね。元々印刷物を作成するためのアプリケーションですから文字列の前後の空白というのは見えないわけで、不要な情報として扱うのが一般的ですね。ですからデータ結合で固定長文字列を扱うのは厳しいでしょう。

     

    まあ、スクリプトを使えば回避できるのを確認しましたので、以下に手順を書いておきます。

    1)ソースファイル

     1行目の「#」を削除してください。QRコードではなくテキストとしてInDesignに取り込みます。

    2)InDesignの元データ

     次のように、テキストフレームと正方形の画像フレームをグループ化しておいてください。データ結合の際はこのグループを複製していきます。

    テキストフレームは89文字が入る大きさ(文字サイズを小さくして絶対に溢れないようにする)にし、そこにテータ結合のフィールドを設定します。テキストフレームと画像フレームは重なっていてもよいです。後からテキストフレーム中のテキストは削除しますので。

    3)データ結合の実行

     テキストフレーム中にテキストが配置されます。この場合は前後の空白が生きています。

    4)スクリプトの実行

     作成されたデータ結合後のドキュメントで次のスクリプトを実行します。

    var doc = app.documents[0];
    var rct, txf;
    for (i = 0; i < doc.groups.length;i++) {          //ドキュメント中の全てのグループに対して実行
        rct = doc.groups[i].rectangles[0];              //テキストフレーム
        txf = doc.groups[i].textFrames[0];             //画像フレーム
        rct.createPlainTextQRCode(txf.contents);  //テキストを使用してQRコードを作成
        txf.contents = "";                                            //テキストフレームの中身を空にする
    }

    5)PNGに書き出し

    返信数 1

    Omachi
    Omachi解決!
    Legend
    September 18, 2024

    前後の空白を削除するというのは仕様でしょうね。元々印刷物を作成するためのアプリケーションですから文字列の前後の空白というのは見えないわけで、不要な情報として扱うのが一般的ですね。ですからデータ結合で固定長文字列を扱うのは厳しいでしょう。

     

    まあ、スクリプトを使えば回避できるのを確認しましたので、以下に手順を書いておきます。

    1)ソースファイル

     1行目の「#」を削除してください。QRコードではなくテキストとしてInDesignに取り込みます。

    2)InDesignの元データ

     次のように、テキストフレームと正方形の画像フレームをグループ化しておいてください。データ結合の際はこのグループを複製していきます。

    テキストフレームは89文字が入る大きさ(文字サイズを小さくして絶対に溢れないようにする)にし、そこにテータ結合のフィールドを設定します。テキストフレームと画像フレームは重なっていてもよいです。後からテキストフレーム中のテキストは削除しますので。

    3)データ結合の実行

     テキストフレーム中にテキストが配置されます。この場合は前後の空白が生きています。

    4)スクリプトの実行

     作成されたデータ結合後のドキュメントで次のスクリプトを実行します。

    var doc = app.documents[0];
    var rct, txf;
    for (i = 0; i < doc.groups.length;i++) {          //ドキュメント中の全てのグループに対して実行
        rct = doc.groups[i].rectangles[0];              //テキストフレーム
        txf = doc.groups[i].textFrames[0];             //画像フレーム
        rct.createPlainTextQRCode(txf.contents);  //テキストを使用してQRコードを作成
        txf.contents = "";                                            //テキストフレームの中身を空にする
    }

    5)PNGに書き出し

    Participant
    September 18, 2024

    早速の返信、ありがとうございます。
    試してみます。