C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[3]: テキスト→PDF


(過去ログ 31 を表示中)

[トピック内 10 記事 (1 - 10 表示)]  << 0 >>

■14833 / inTopicNo.1)  テキスト→PDF
  
□投稿者/ やしろ (1回)-(2008/02/27(Wed) 15:57:51)

分類:[VB.NET/VB2005] 

ども、はじめまして。

今現在、テキストをPDFファイルに変換するプログラムを作成しようと思っているのです。
ただ単純にテキストからPDFファイルに変換することは出来ます。

私がやろうとしていることは、ある一文を座標指定して配置し、それをPDFファイルに変換したいのです。
しかし、それらしいものが見つからず作成が進みません。

いい案があればぜひ教えていただきたいと思います。
引用返信 編集キー/
■14840 / inTopicNo.2)  Re[1]: テキスト→PDF
□投稿者/ Mr.T (187回)-(2008/02/27(Wed) 16:43:13)
Mr.Tです、こんにちは。

> 私がやろうとしていることは、ある一文を座標指定して配置し、それをPDFファイルに変換したいのです。
> しかし、それらしいものが見つからず作成が進みません。

座標指定って、例えば何行目の何文字目からみたいな指定のことですか?

テキストっていってるテキストファイルということであれば、
その部分だけを抜き出してテキストファイルに落とせばよいのではないでしょうか。


引用返信 編集キー/
■14841 / inTopicNo.3)  Re[1]: テキスト→PDF
□投稿者/ 魔界の仮面弁士 (664回)-(2008/02/27(Wed) 16:52:50)
No14833 (やしろ さん) に返信
> 今現在、テキストをPDFファイルに変換するプログラムを作成しようと思っているのです。
> ただ単純にテキストからPDFファイルに変換することは出来ます。
現在は、どのようにして変換しているのでしょうか?


> 私がやろうとしていることは、ある一文を座標指定して配置し、それをPDFファイルに変換したいのです。
> しかし、それらしいものが見つからず作成が進みません。
PDF のテキストブロックは、非圧縮の場合で

BT                    … (BT:begin text) テキストストリームの開始
/F1 12 Tf             … (Tf:text font) "/F1" という名のフォントリソース、12Point
1 0 0 1 72 720 Tm     … (Tm:text rendering matrix)
(Sample PDF) Tj       … (Tj:show text) "(ASCII)" または <16進数表記>" のテキスト
ET                    … (ET:end text) テキストストリームの終了

などのようになっており、個別に座標指定できるかと思います。
上記の場合、原点から座標(72, 720)の位置ですね。(単位は1/72インチ)


座標指定については、下記 [PDF Reference, Sixth Edition] の
http://www.adobe.com/devnet/pdf/pdf_reference.html

[5 Text]
 [5.3 Text Objects]
  [5.3.1Text-Positioning Operators]

のあたりを参照してみてください。406 ページの近辺です。

引用返信 編集キー/
■14842 / inTopicNo.4)  Re[2]: テキスト→PDF
□投稿者/ やしろ (2回)-(2008/02/27(Wed) 16:53:43)
No14840 (Mr.T さん) に返信
返信ありがとうございます。

説明不足ですみません。

何行目からとかではなく、XY座標な感じで指定したいのです。
引用返信 編集キー/
■14844 / inTopicNo.5)  Re[2]: テキスト→PDF
□投稿者/ やしろ (3回)-(2008/02/27(Wed) 17:05:48)
No14841 (魔界の仮面弁士 さん) に返信
> 現在は、どのようにして変換しているのでしょうか?

現在はiTextSharpというやつでやっています


> PDF のテキストブロックは、非圧縮の場合で
>
> BT … (BT:begin text) テキストストリームの開始
> /F1 12 Tf … (Tf:text font) "/F1" という名のフォントリソース、12Point
> 1 0 0 1 72 720 Tm … (Tm:text rendering matrix)
> (Sample PDF) Tj … (Tj:show text) "(ASCII)" または <16進数表記>" のテキスト
> ET … (ET:end text) テキストストリームの終了
>
> などのようになっており、個別に座標指定できるかと思います。
> 上記の場合、原点から座標(72, 720)の位置ですね。(単位は1/72インチ)
>
>
> 座標指定については、下記 [PDF Reference, Sixth Edition] の
> http://www.adobe.com/devnet/pdf/pdf_reference.html
>
> [5 Text]
>  [5.3 Text Objects]
>   [5.3.1Text-Positioning Operators]
>
> のあたりを参照してみてください。406 ページの近辺です。

えっと。一応見てみたのですが、私にはなにが書いてあるのだかさっぱりでした…^^;
引用返信 編集キー/
■14846 / inTopicNo.6)  Re[3]: テキスト→PDF
□投稿者/ 魔界の仮面弁士 (666回)-(2008/02/27(Wed) 17:11:53)
No14844 (やしろ さん) に返信
>>現在は、どのようにして変換しているのでしょうか?
> 現在はiTextSharpというやつでやっています

使った事が無いので、他の人にパス…… ε=ε=ε=ε=ヽ(;^^)ノ


> えっと。一応見てみたのですが、私にはなにが書いてあるのだかさっぱりでした…^^;
それでは、このあたりは如何でしょう。日本語で書かれた簡易資料です。
http://web.archive.org/web/20041028051730/http://www.kobu.com/docs/pdf/pdfxhand.htm

(すでに閉鎖されたサイトの記事なので、archive.org のキャッシュで紹介しています)
引用返信 編集キー/
■14849 / inTopicNo.7)  Re[3]: テキスト→PDF
□投稿者/ IIJIMAS (70回)-(2008/02/27(Wed) 17:28:56)
2008/02/27(Wed) 17:29:47 編集(投稿者)

No14844 (やしろ さん) に返信

>>座標指定については、下記 [PDF Reference, Sixth Edition] の
>>http://www.adobe.com/devnet/pdf/pdf_reference.html
>>
>>[5 Text]
>> [5.3 Text Objects]
>>  [5.3.1Text-Positioning Operators]
>>
>>のあたりを参照してみてください。406 ページの近辺です。
>
> えっと。一応見てみたのですが、私にはなにが書いてあるのだかさっぱりでした…^^;

まさにテキストの配置に関する座標などの事柄が書いてあります。

ちなみに「PDFリファレンス」には古いバージョンですが日本語訳の書籍があります。
「PDFリファレンス第2版―Adobe Portable Document Format Version 1.3」
http://www.amazon.co.jp/dp/4894713381
引用返信 編集キー/
■14850 / inTopicNo.8)  Re[4]: テキスト→PDF
□投稿者/ やしろ (4回)-(2008/02/27(Wed) 17:30:25)
No14846 (魔界の仮面弁士 さん) に返信

色々と情報ありがとうございます

> それでは、このあたりは如何でしょう。日本語で書かれた簡易資料です。
> http://web.archive.org/web/20041028051730/http://www.kobu.com/docs/pdf/pdfxhand.htm
>
> (すでに閉鎖されたサイトの記事なので、archive.org のキャッシュで紹介しています)
上記のサイトを見てみましたが、何が書いてあるのかわかっても何をやってるのかさっぱりでした^^;
正直なところ、これをVB.netでどうしろよっといった感じです。

引用返信 編集キー/
■14852 / inTopicNo.9)  Re[3]: テキスト→PDF
□投稿者/ Mr.T (188回)-(2008/02/27(Wed) 17:35:51)
んが、テキストって、PDF内のテキストってことですか。
失礼しました。
引用返信 編集キー/
■14861 / inTopicNo.10)  Re[5]: テキスト→PDF
□投稿者/ まぐねしうむ (12回)-(2008/02/27(Wed) 20:52:46)
■C#でよろしければ・・・。
自分もiTecxSharpを使用していますがご存知の通り日本語の資料が無いので
iText.NETを参考にコードを書いています。
(元が同じなので比較的似てます。)

まずは下のHPを参照すれば良いと思います。
http://codezine.jp/a/article/aid/462.aspx

iTextSharp.text.pdf.PdfReader reader;
Document document = new Document(PageSize.A4.Rotate()); //出力先ファイルサイズ指定

//テンプレート読込
reader = new PdfReader(strTemplate);

//ページサイズを取得
iTextSharp.text.Rectangle psize = reader.GetPageSize(1);
float width = psize.Width;
float height = psize.Height;
//出力ファイル作成
PdfWriter writer = PdfWriter.GetInstance(document, new FileStream(strOutPut, FileMode.Create));

//テンプレートを開く
document.NewPage();
PdfImportedPage page = writer.GetImportedPage(reader, 1);

PdfContentByte cb = writer.DirectContent;
string exFont = @"hgrsmp.ttf";
cb.AddTemplate(page, 0, 0); //コンテンツに読み込んだテンプレートを使う
cb.BeginText();
cb.SetFontAndSize(exFonts, 12);
//ユーザ名を記入する
cb.ShowTextAligned(PdfContentByte.ALIGN_CENTER, strName, xS, yS, 0);
cb.EndText();

これで、xS,ySの座標軸を中心にstrName内の文字列を記入します。
他にもテキスト領域にしたいなら

ColumnText ct = new ColumnText(cb);

//左上と右下を指定してテキストを流し込む
ct.SetSimpleColumn(xS, yS, xE, yE, 8, Element.ALIGN_JUSTIFIED);

//コメントを記載する
ColumnText ct = new ColumnText(cb);
ct.AddText(new Chunk("なんかのテキスト文章 たくさん", font8));
ct.Go();
cb.Stroke();

でどうでしょうか?
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -