PDF Modify JSON
電話:03-5316-337503(5316)3375
info@trustss.co.jp
SAMPLE CODES

PDF Modify JSON サンプル コード

PDF作成サンプル

JSONデータによる

目次
  1. PDFを作成(変更)するJSONファイルをロードする
  2. 画像を文字の外形で切り抜くJSON
  3. 文字にルビを振るJSON
  4. 文字を指定された幅で自動改行するJSON
  5. RGBおよびCMYKでの色を指定するJSON

PDFを作成(変更)するJSONファイルをロードするサンプル

PDFへのページ追加や内容(文字列、画像、図形)を追加するためのJSONデータを読み込むコードです。
「PDF Modify」はJSONデータに従ってPDFに様々なコンテンツを追加します。
JSONデータには、描画の指示ばかりではなく、入出力PDFを指定します。さらに、出力PDFにはPDFビュワーで開いたときの初期状態も指定できます。

←いずれかをクリック 無償評価版とサンプルコードのダウンロード
PdfModify/load-json-smple.cs
using PDFTools.PdfStructure;

// ライブラリの初期化
using (var stc = new Structure("license-key")  //license-keyを省略すると試用版として機能
{
	// JSON形式データによるPDF変更指示
	stc.ModifyByJson("data.json");
}
PdfModify/load-json-smple

このサンプルコードは、JSONファイルを読み込ませるためのものです。
「PDF Modify」は読み込まれたJSONデータに従って、PDFにページを追加したり、そのページにコンテンツ(文字列、画像、図形)を追加したりします。
出力PDFへの指示もJSONデータに記載します。

画像を文字の外形で切り抜く

文字の外形で切り抜かれた画像を表示するPDFを作成します。
複雑なマスク処理を指定しなくとも、デザイン性の高いビジュアルをJSONデータから直接作成できます。
画像だけでなく、文字や図形も切り抜きできます。 新規にPDFを作成する場合は、入力のPDFを指定しません。ページも1ページだけですので、その指定も不要です。

無償評価版とサンプルコードのダウンロード
data.json - 文字の外形で画像切り抜き
{
	"page":[{
		"size":["18cm","8cm"],
		"contents":[
			{"color":"DodgerBlue"},
			{"linewidth":5},
			{"text":{
				"value":"CLIPS",
				"charspace":-0.05,
				"font":{ "name":"Arial Bold", "size":"5cm" },
				"render":5,
				"position":["18mm","15mm"],
				"scale":[1,1.3]}
			},
			{"image":{ "source":"CLIPS.jpg", "position":[45,"5mm"]}}
		]
	}]
}
【JSONデータ 各要素説明】
"page"PDFに関する指定(ページ番号やページへの上書きまたは新規作成など)をします。複数のページ要素を指定できます。
"size"生成するページのサイズ 数値または単位("mm","cm","inch"."in","pt")付きで指定します。
(サンプルは横18cm,縦8cm)
"contents"ページの内容を指定します。指定順に描画されるように配列で要素(文字列や画像など)を指定します。
後から描画したものがより前面に描画されます。
"Color"この指定以降に描画される文字や図形の色を指定します。サンプルにある色名だけでなくRGBやCMYKを数値で指定できます。以降の描画がら有効になります。
「RGBおよびCMYKでの色指定」参照
"linewidth"線描の線幅を指定 以降の描画がら有効になります。
"text"描画する文字列とそのスタイルを指定
"text"によって変更されたグラフィック・ステート(現在の描画位置やMatrix(写像)、クリッピングパスなど)は以降の描画に影響を与えますので、次に描画される"image"(画像)が切り抜かれます。影響を与えない指定も可能です。
"value"描画する文字列
"charspace"文字間隔 フォントサイズの倍数(数値または百分率[%])で指定します。指定された間隔が増加します。
負数を指定すると間隔が減少します(間隔が狭くなります)。
"font"
"name"フォント名 システムにインストールされているファイル名を指定
"size"フォントサイズ 数値または単位("mm","cm","inch"."in","pt")付きで指定します。
"render"文字のレンディングモード 以下の数値を指定できます。
0文字を塗りつぶす
1文字の外形を線描
2文字を塗りつぶした後に外形を線描
3文字非表示
4文字を塗りつぶし、外形を切り抜きパスとする
5文字の外形を線描し、外形を切り抜きパスとする
6文字を塗りつぶした後に外形を線描し、外形を切り抜きパスとする
7文字の外形を切り抜きパスとする
"position"描画位置 2つの要素を持った配列で指定します。配列の最初の要素にはX座標、二番目にはY座標を指定します。各要素は数値または単位("mm","cm","inch"."in","pt")付きで指定します。
文字列の原点は文字の境界(BBox)の左上です。このY座標の原点を文字のBaselineで位置を指定することもできます。
"scale"描画する文字列を拡大します。倍率を数値または百分率[%]で指定します。
他に"transform"(写像変換)などを指定でき、文字をゆがめることができます。
"image"後から描画しますので「CLIPS」という文字より前面に描画されますが、「CLISP」の描画の際にクリップ(切り抜き)が指定されているため、文字外形の内側だけが前面に描画されます。
"source"画像のファイルパス
"position"画像の表示位置 画像の原点(画像の左下)を位置を指定 数値または百分率[%]で指定します。
他に"opacity"(透明度)や"transform"(写像変換)などを指定できます。
出力ファイルは既定の(JSONファイル名と同じ)"data.pdf"が作成されます。

ルビを振った文字列

ルビの位置調整の必要なく、簡単にルビを指定できます。 座標計算が非常に煩雑なルビ振り(語全体へのルビやそれぞれの文字へのルビ)が設定きます。
ルビを中央配置や左右寄せ、均等配置にでき、前後に間隔(パディング)を指定することもできます。

無償評価版とサンプルコードのダウンロード
data.json - 文字の外形で画像切り抜き
{
	"page":[{
		"size":["15cm","6cm"],
		"contents":[
			{"text":{
				"value":["印刷用語のルビは",{"ruby":["宝石","ほうせき"],"pos":"center"},
				"のルビー(Ruby)に\n由来しています。"],
				"font":{"name":"MS ゴシック","size":"7mm"},
				"position":["10mm","37mm"]}}
		]
	}]
}
【JSONデータ 各要素説明】
"page"PDFに関する指定(ページ番号、ページ回転、やページへの上書きまたは新規作成など)をします。複数のページ要素を指定できます。
"size"生成するページのサイズ 数値または単位("mm","cm","inch"."in","pt")付きで指定します。
(サンプルは横15cm,縦6cm)
"contents"ページの内容を指定します。指定順に描画されるように配列で要素(文字列や画像など)を指定します。
後から描画したものがより前面に描画されます。
"text"描画する文字列とそのスタイルを指定
"value"文字列を複数に分割した場合は、配列として記述します。
ルビを振る場合は必ず配列として記述します。
"ruby"ルビ振り指定の配列 第一要素がベースとなる文字列で第二要素がルビ文字列です
ルビ文字はそのサイズやY方向の位置などを指定することができます。
"pos"ルビ文字のX方向の配置指定です。以下を指定できます。
"center"中央に描画
"left"左寄せで描画
"right"右寄席で描画
"justify"均等割りで描画
"padding"ルビ文字の前後に余白を指定 ルビのフォントサイズの倍数(数値または百分率[%])で指定します。
"msize"ルビ文字のサイズをベース フォント サイズの倍数で指定 倍数は数値または百分率[%]で指定します。
"rise"ルビ文字のY座標位置をベース フォント サイズの倍数で指定 倍数は数値または百分率[%]で指定します。
"font"
"name"フォント名 システムにインストールされているファイル名を指定
"size"フォントサイズ
"position"描画位置 既定では文字境界の上端の位置を指定
文字のBaselineで位置を指定することもできます。
他に"transform"(写像変換)などを指定でき、文字をゆがめることができます。
出力ファイルは既定の(JSONファイル名と同じ)"data.pdf"が作成されます。

文字列を指定された幅での自動改行、禁則処理

指定された行幅に合わせて自動改行します。
文頭に置けない文字や記号などを前行に残す禁則処理を施した日本語レイアウトを作成します。 改行の指定は単に改行コードを文字列に記載するだけで次の行の先頭から描画します。
禁則文字は、「初期設定」で変更できます。

無償評価版とサンプルコードのダウンロード
data.json - 文字の外形で画像切り抜き
{
	"page":[{
		"size":["15cm","10cm"],
		"contents":[
			{"text":{"value":"桃太郎",
				"font":{"name":"MS P明朝","size":"24pt","embed":true},
				"position":["10mm","95mm"]}},
			{"text":{
				"value":[
	"むかし、むかし、あるところに、おじいさんとおばあさんがいました。\n",
	"おじいさんは山へ",{"ruby":["芝刈","しばかり"]},"に、おばあさんは川へ",{"ruby":["洗濯","せんたく"]},"に行きました。\n",
	"おばあさんが川で洗濯をしていますと、",{"ruby":["川上","かわかみ"]},"から、大きな桃が、「どんぶらこ、どんぶらこ」と、流れてきました。\n",
	"「おや、これはみごとな桃だこと。おじいさんへのお",{"ruby":["土産","みやげ"]},"に持って帰りましょう。」\n",
	"おばあさんは桃を拾い上げて、家に持ち帰りました。\n",
	"そして、おじいさんと一緒に食べようと桃を包丁で切ろうとしたところ、桃がパカッとふたつに割れて、中から元気な男の子の赤ちゃんが飛び出しました。"
				],
				"font":{"size":"12pt"},
				"columnwidth":"13cm",
				"kinsoku":1,
				"position":["8mm","83mm"]}
			}
		]
	}]
}
【JSONデータ 各要素説明】
"page"PDFに関する指定(ページ番号、ページ回転、やページへの上書きまたは新規作成など)をします。複数のページ要素を指定できます。
"size"生成するページのサイズ 数値または単位("mm","cm","inch"."in","pt")付きで指定します。
(サンプルは横15cm,縦10cm)
"contents"ページの内容を指定します。指定順に描画されるように配列で要素(文字列や画像など)を指定します。
後から描画したものがより前面に描画されます。
"text"描画する文字列とそのスタイルを指定
"value"文字列を複数に分割した場合は、配列として記述します。
ルビを振る場合は必ず配列として記述します。
"ruby"ルビ振り指定の配列 第一要素がベースとなる文字列で第二要素がルビ文字列です
ルビ文字はそのサイズやY方向の位置などを指定することができます。
"font"
"name"フォント名 システムにインストールされているファイル名を指定
省略すると、規定値または直前に指定された値が使用されます。
"size"フォントサイズ
省略すると、規定値または直前に指定された値が使用されます。
"embed"フォントの埋め込み指定
Trueを指定すると、このフォントをPDFに埋め込みます。
"columnwidth"行(カラム)の長さ 文字列の長さがこのサイズを超えると「改行」されます。 数値または単位("mm","cm","inch","in","pt")付きで指定します。
"kinnsoku"が"0"でない場合は、禁則文字およびルビの振られた文字列を行末に残します。
"kinsoku"禁則処理を実施する場合は"1"を指定します。"0"または無指定の場合は禁則処理しません。
"columnwidth"の指定がある場合に有効です。
"position"描画位置 既定では文字境界の上端の位置を指定
文字のBaselineで位置を指定することもできます。
他に"transform"(写像変換)などを指定でき、文字をゆがめることができます。
出力ファイルは既定の(JSONファイル名と同じ)"data.pdf"が作成されます。

RGBおよびCMYKでの色指定

RBG色空間およびCMYK色空間のいずれでも色指定できます
線描(Stroking)と塗りつぶし(filling)のそれぞれを違う色で指定できます。

無償評価版とサンプルコードのダウンロード
data.json - 文字の外形で画像切り抜き
{
	"page":[{
		"size":["12cm","8cm"],
		"contents":[
			{"linejoin":"bevel"},
			{"color":[1,0,0,0]},
			{"text":{"value":"Cyan(シアン)","position":["10mm","73.1mm"]}},
			{"rectangle":[ "10mm","45mm","20mm","25mm","both",2 ]},
			{"color":[0,1,0,0]},
			{"text":{"value":"Magenta(マゼンタ)","position":["35mm","73.1mm"]}},
			{"rectangle":[ "35mm","45mm","20mm","25mm","both",2 ]},
			{"color":[0,0,1,0]},
			{"text":{"value":"Yellow(イエロー)","position":["60mm","73.1mm"]}},
			{"rectangle":[ "60mm","45mm","20mm","25mm","both",2 ]},
			{"color":[0,0,0,1]},
			{"text":{"value":"Key(キー)","position":["85mm","73.1mm"]}},
			{"rectangle":[ "85mm","45mm","20mm","25mm","both",2 ]}

			{"color":"Red"},
			{"text":{"value":"Red(赤)","position":["10mm","38mm"],
				"font":{"name":"MS-Gothic","size":"2mm","embed":false}}},
			{"rectangle":[ "10mm","10mm","20mm","25mm","both",2 ]},
			{"color":"Green"},
			{"text":{"value":"Green(緑)","position":["35mm","38mm"]}},
			{"rectangle":[ "35mm","10mm","20mm","25mm","both",2 ]},
			{"color":"Blue"},
			{"text":{"value":"Blue(青)","position":["60mm","38mm"]}},
			{"rectangle":[ "60mm","10mm","20mm","25mm","both",2 ]},
		]
	}]
}
【JSONデータ 各要素説明】
"page"PDFに関する指定(ページ番号、ページ回転、やページへの上書きまたは新規作成など)をします。複数のページ要素を指定できます。
"size"生成するページのサイズ 数値または単位("mm","cm","inch"."in","pt")付きで指定します。
(サンプルは横15cm,縦10cm)
"contents"ページの内容を指定します。指定順に描画されるように配列で要素(文字列や画像など)を指定します。
後から描画したものがより前面に描画されます。
"linejoin"線描(Stroke)パスの接続されたセグメント間の接合部の形状を指定します。
この指定以降の描画から有効になります。
"miter"2つの線分セグメントの外側の縁は額縁のように指定された角度でそれらが交わるまで延長されます。
これらのセグメントが交わる角度が鋭すぎる場合は"miter"に代わって"bevel"が使用されます。
"round"2つの線分が交わる点を中心として線幅に等しい直径を持つ円弧を描き、両線分の外縁同士を接続し、この扇形の領域を塗りつぶすことで角が丸い形状に描きます。
"bevel"2つの線分セグメントは"Butt"(線描はパスの終点で直角に切り落とされ、パスの終点を超えて突出する部分が無い)描画され、各セグメントの端を超えて生じる切り欠き部分を三角形で埋めます。
"color"線描(Stroke)および塗りつぶし(fill)の色を指定します。文字列または数値を要素とした配列で指定します。
色指定を1つだけ指定した場合は、線描と塗りつぶしに同じ色が指定されます。それぞれを別の色にする場合は2要素の配列で指定します。この場合、最初の要素を線描色に指定し、2番目の色をそれ以外の描画色にします。
以下を組み合わせて指定でき、以降の描画から有効になります。
文字列"red"や"cyan"といった色彩名で指定できます。
3つの要素を持つ配列RGB色空間の指定となり、要素は順に赤、緑、青を指定します。
各要素は数値(0.0から1.0)、または"0%"から"100%"までの文字列で指定できます。
4つの要素を持つ配列CMYK色空間の指定となり、要素は順にシアン、マゼンタ、イェロー、墨を指定します。
各要素は数値(0.0から1.0まで)、または"0%"から"100%"までの文字列で指定できます。
"text"描画する文字列とそのスタイルを指定
"value"描画する文字列
"font"
"name"フォント名 システムにインストールされているファイル名を指定
省略すると、規定値または直前に指定された値が使用されます。
"size"フォントサイズ
省略すると、規定値または直前に指定された値が使用されます。
"embed"フォントの埋め込み指定
Trueを指定すると、このフォントをPDFに埋め込みます。
"position"描画位置 既定では文字境界の上端の位置を指定
文字のBaselineで位置を指定することもできます。
他に"transform"(写像変換)などを指定でき、文字をゆがめることができます。
"rectangle"矩形を描画 以下の配列で位置やサイズなどを指定できますし、オブジェクトでより詳細なグラフィック・ステート指定もできます。
なお、ここで指定されたグラフィック・ステート(色、線幅、写像など)は矩形の描画だけに使われ、以降の描画に影響を与えません。
配列で指定位置とサイズなどを指定できます。位置やサイズは数値または単位("mm","cm","inch","in","pt")付きで指定できます。
指定の無い項目は現在のグラフィック・ステートが適用されます。
[w,h]現在の原点に幅w、高さhの矩形を描画します。
[w,h,linewidth]現在の原点に幅w、高さhの矩形を線幅linewidthで描画します。
[w,h,paint]現在の原点に幅w、高さh矩形をpaintします。
paintには"stroke"(線描),"fill"(塗りつぶし),"both"(線描と塗りつぶし)のいずれかを指定します。
[x,y,w,h]位置(x,y)に幅w、高さhの矩形を描画します。
[x,y,w,h,linewidth]位置(x,y)に幅w、高さhの矩形を線幅linewidthで描画します。
[x,y,w,h,paint]位置(x,y)に幅w、高さh矩形をpaintします。
paintには"stroke"(線描),"fill"(塗りつぶし),"both"(線描と塗りつぶし)のいずれかを指定します。
[x,y,w,h,paint,linewidth]位置(x,y)に幅w、高さh矩形を線幅linewidthでpaintします。
paintには"stroke"(線描),"fill"(塗りつぶし),"both"(線描と塗りつぶし)のいずれかを指定します。
出力ファイルは既定の(JSONファイル名と同じ)"data.pdf"が作成されます。

Pdftools SDK

PDFをPDF/Aに変換

PDFを最適化・サイズを適切に圧縮

画像をPDFに変換

PDFを画像に変換

PDFを合成・分割

PDFに電子署名・署名検証

セキュアで暗号化されたPDFを作成

PDF仕様との規格準拠検証

フォームフィールドの追加と内容入力

PDFへの内容追加と削除

PDFからの情報抽出

PDF生成

印刷用にレイアウト

アノテーション管理

メタデータ管理

PDFの編集

PDF/A 概要

PDF/A とは

PDF/A 概要

PDF/A 入門

10の最も重要なこと

ディジタルソースから

PDF/A処理

PDFA-2

PDFA-3


PDF Toolsライト

PDF Structure(構成)

PDF Imager-LP(画像変換)

PDF Primitive

PDF Metadata

PDF Stamper(電子印鑑)

PDF 構文解説-1

PDFファイル解析手順

PDFファイル構造 -概要-

PDFファイル構造

ドキュメント カタログ

ページツリー

ページ

Contentsオブジェクト

Articlesノード

デスティネーション

アクション(Actions)

テキスト

フォント


お問い合わせ

PDF 構文解説-2

ナビゲーション

XMP

メタデータ

文書情報

オブジェクト ストリーム

クロスリファレンス ストリーム

各種 ディクショナリ

アノテーション

インターラクティブフォーム

増加更新(Incremental Update)

電子署名(Digital Signature)

出力色特性(Output Intent)