2010年02月01日

アドバタイズショートカットに悩む

先日作成したプログラムのセットアップを作成。

作成手順は、本家のこちらを参照しました。

で、ショートカットへPDFファイルをドラッグ&ドロップしても何も起こりません。
exeのショーットカットを手作業で作成したら動くのですが。。。

出来上がったショートカットのリンク先部分がグレーアウトされているので、
通常のリンクとは違うものが出来上がったようです。

いろいろ調べてみると、このショートカットはアドバタイズショートカットと
呼ばれるもののようで、通常のショートカットとはいくつか異なる点が
あるようです。

情報がまとめられてるサイトはこちら

まだ試してませんが、解決方法はこちら


うーん、難儀やなぁ・・・。

追記:

便利なツールを作ってくれた人がいました。
感謝!!



ラベル:VisualStudio 2005
posted by しげ at 17:04| Comment(0) | TrackBack(0) | VisualStudio2003/2005 | このブログの読者になる | 更新情報をチェックする

2010年01月13日

C#でPDF(補足)

先日の補足。

PDFの各ページのレイヤ構成はこんなかんじなので、先日のソースだとtemplate画像が
一番上にあって、ページに挿入した文字なんかは全部隠れちゃう形になります。

なので、

            PdfContentByte cb = writer.getDirectContent(); 



            PdfContentByte cb = writer.getDirectContentUnder(); 

とすると、最下層のレイヤにテンプレートがくるので、凡例画像を上にのっけたい場合には
こうするといい感じになります。


posted by しげ at 19:16| Comment(0) | TrackBack(0) | VisualStudio2003/2005 | このブログの読者になる | 更新情報をチェックする

2010年01月08日

C#でPDF編集

既存のPDFに凡例をつけたいって要望があり、ちょっとしたツールをC#で作ることになりました。
PDF編集ツールを買えば簡単に済む話じゃんって作ってる私もおもうのですが、
まあ、そこはいろいろありまして、作る必要ができちゃってですねぇ・・・とほほ。


PHPのばあいはtcpdfをつかって新規PDFを作成できますが、tcpdfは既存のPDFを
読み込んで編集することができない・・・ような気がします。たぶん。

なのでC#を選択したのですが、C#でPDFを取り扱うにはiText.netがよさそうな
感じだったので、これを使ってみました。


で、出来上がったソースが以下のとおり。
元のPDFを新しいPDFのテンプレートとしてちょっと小さめに貼り付けて、凡例を
一番下に1行画像で追加する形をとってます。


            // base pdf file
            PdfReader reader = new PdfReader("C:\\base.pdf");
            
            // get size of the first page
            Rectangle psize = reader.getPageSize(1);

            // set document object
            Document document = new Document(psize);

            // create pdf file
            PdfWriter writer = PdfWriter.getInstance(document, new FileStream("c:\\hoge.pdf", FileMode.Create));

            // get image file
            //  Watermark(file, a, b)
            // a=x方向位置、b=y軸位置
            Watermark watermark = new Watermark(Image.getInstance("c:\\footer.jpg"), 50, 0);
            document.add(watermark);


            // output pdf file
            document.open();

            PdfContentByte cb = writer.getDirectContent(); 

            PdfImportedPage page1 = writer.getImportedPage(reader, 1);
            
            //元のPDFの大きさと位置。
            // addTemplate(templateFile, a, b, c, d, e, f)
            //  a=x方向大きさ、d=y方向大きさ, e=x方向位置、f=y方向位置。回転不要ならb,c=0
            cb.addTemplate(page1, 0.93f, 0, 0, 0.93f, 45, 50 );

            document.close();


            // print  
            Process printProcess = new Process();
            string filePath = null;

            filePath = "C:\\hoge.pdf";
            printProcess.StartInfo.FileName = "C:\\Program Files\\Adobe\\Reader 9.0\\Reader\\AcroRd32.exe";
            printProcess.StartInfo.Verb = "Open";

            // 引数
            //  /n=開いてたら別インスタンスで起動
            //  /t=印刷ダイアログなしで印刷、プリンタ指定可能
            //  /s=スプラッシュ画面を表示しない
            //  /h=最小化されたウインドウで開く
            //  /p=印刷ダイアログを開く
            printProcess.StartInfo.Arguments = " /n /t " + filePath;
            printProcess.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
            printProcess.StartInfo.CreateNoWindow = true;
            printProcess.Start();
            
            printProcess.WaitForExit(1500); 



仕事の成果物なんで、エラー処理とか、位置調整とか、ファイル関連の処理は
これからちゃんと実装しますが大体こんな感じでしょうか。

iTextのサンプルのココとか、PDF出力はココを参考にしました。


iText.netはなかなか便利なツールですが、ドキュメントが整備されていないのが
困りますね。本を買えばいいんでしょうけど、洋書だしなぁ・・・。

ちなみにiText.netですが、参照設定で

iText.dll
iTextAsian.dll
JSharpLib.dll
vjslib

を参照設定しておきました。
ここもこれでいいのか、はっきりしないです。

ラベル:iText.net PDF C# 2005
posted by しげ at 15:23| Comment(0) | TrackBack(0) | VisualStudio2003/2005 | このブログの読者になる | 更新情報をチェックする

2008年12月24日

クエリビルダではまる

VB.NET + Oracle10g(OleDB) の開発でいろいろとはまってしまい、かなり無駄な
時間を費やして(=睡眠時間を大きく削って)しまいました。


そのうちの1つがVisual Studio2005のクエリビルダ。


よくある事例ですが画面の入力内容によって条件を設定してDBから取り出した
データをDataTableに格納したいんでパラメータクエリを利用しようと考えて、
また、コーディングを楽にしたいんでクエリビルダをつかったんですが、
パラメータを設定する方法がよくわからない。

クエリビルダでパラメータを指定すれば、Fillメソッドの引数としてパラメータを
指定できる、ってことは判明して、そのとおりにしてみたけどうまくパラメータが
渡っていないっぽい。


答えはコチラを参照して判明したんだけど、クエリビルダが勝手にクエリを書き換え
ちゃってたんですね・・・。ひどいなぁ。

Visual Studio2005がそういうんだから、:PARMnで設定されたパラメータに
どうやって設定しようかといろいろ調べたのに。調べたのに。調べたのに。


しかし、DataSetのデザイナ画面、プロパティの設定の反映がおかしくなったり
することがあり、落ちることはないけどちょっと注意が必要。

ラベル:Visual Studio 2005
posted by しげ at 01:50| Comment(0) | TrackBack(0) | VisualStudio2003/2005 | このブログの読者になる | 更新情報をチェックする

2008年08月27日

VSSの管理ファイルの削除

Visual Source Safeの管理ファイルには、VSSのバージョンによって、
vssver.scc/vssver2.sccと2種類あります。

後者のvssver2.sccは隠しファイルとなっているので、エクスプローラでは
表示されず、普通に検索しても表示されません。
見えないクセに、コンペアツールでディレクトリのコンペアかけると
見えてしまう厄介ものです。。。


削除は次のコマンドをコマンド・プロンプトから実行すればOK。
(もちろんディレクトリは削除したいとこに移動した上で。)

DEL /S /A:H /F vssver2.scc

/S = サブディレクトリまで検索して削除
/A:H = /Aは属性により削除、Hは隠しファイル属性
/F = 読み取り専用ファイルを強制削除


消されたら困るファイルであることには違いないけど、だからと言って
消したいときには消せるようにしてほしい。。。。

ラベル:Visual Source Safe
posted by しげ at 13:11| Comment(0) | TrackBack(0) | VisualStudio2003/2005 | このブログの読者になる | 更新情報をチェックする

2008年06月24日

VisualStudioのヘルプ

C#.net(VS2005)でExcelのブックをコントロールしたくて、VisualStudioに
付属してるヘルプを調べてみました。
(ネットにつながらないとこ−帰宅中の電車内だったので)

でも、VisualStudio2005に付属しているヘルプでは、VisualStudio2002で
Excel2000/2002をコントロールする方法しか検索されませんでした。

[HOW TO] Visual C# .NET を使用してデータを Excel ブックに転送する方法
文書番号: 306023


要はCOMを呼び出してごにょごにょしなさい、ということのようです。

最近、VisualStudio2008をインストールしたので、.NET Framework3.5
では、もっとスマートな方法に変わってるかな?と思い、VisualStudio2008の
ヘルプを検索してみました。

すると、VisualStudio2005でExcel2002/2003をコントロールする方法が
見つかりました。ま、やりくちはVisualStudio2003の場合と同じです。
文書番号は同じなので内容が更新されたようですね。

Visual C# 2005 または Visual C# .NET を使用してデータを Excel ブックに転送する方法
文書番号: 306023


・・・。
マイクロソフトさん、私は今使ってるIDEのバージョンで操作する方法が
知りたいのですが、どうして1世代前のIDEのバージョンの情報しか
教えてくれないのでしょうか(涙)。

最新情報は製品に付属するオフラインのヘルプじゃなくてネットから
落として来い、ということなんでしょうけど、チュートリアルレベルの
情報はオフラインでも見たいなぁ。。。
posted by しげ at 21:13| Comment(0) | TrackBack(0) | VisualStudio2003/2005 | このブログの読者になる | 更新情報をチェックする

2008年05月19日

.Net WebClientのメモ書き

メモ書き。

WebClientで、

「サーバーによってプロトコル違反が発生しました. Section=ResponseHeader Detail=CR の後には LF を指定しなければなりません」

が発生した場合は、app.configを追加して、







を追加する。

using System.Net.Configuration;

HttpWebRequestElement hElement = new HttpWebRequestElement();
hElement.UseUnsafeHeaderParsing = true;

でも対応できるみたいだけどなぜかダメだった。。。
WebClientのインスタンス生成前に入れたんだけど、何故?


ラベル:C#.NET
posted by しげ at 18:05| Comment(0) | TrackBack(0) | VisualStudio2003/2005 | このブログの読者になる | 更新情報をチェックする

2008年01月23日

ASP.NET1.1でデフォルトボタン

ASP.NET1.1でページのデフォルトボタンを実現するための
JavaScriptのサンプルをみつけたので、リンクを残しておきます。

@ITの掲示板
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=25362&forum=7

JavaScript本体がある場所
http://www.eggheadcafe.com/articles/System.Web.Resources.txt


ブラウザの判別方法がこれで良いのか気がかりですが、それはさておき、
便利ですね。

いまだにASP.NET2.0でのサイト構築の経験がないのですが、
デフォルトボタンとかSetFocusとかあるみたいなんでうらやましいです。

VS2008(ASP.NET3.0)ではどんな便利な機能が追加になってるんでしょうね。
posted by しげ at 05:20| Comment(0) | TrackBack(0) | VisualStudio2003/2005 | このブログの読者になる | 更新情報をチェックする

2007年10月03日

HTTP/1.1 500 Internal Server Error

開発機器の1台(ノートPC)をリリース用ビルドマシン(検証用環境)
として位置づけてVisualStudio2003で作成したasp.netのプロジェクト
を取り込んでビルドしようとしてたんですが、


以下の URL 'http://localhost/hogehoge' にある Web プロジェクトを作成するか、
開こうとして、以下のエラーが発生しました。'HTTP/1.1 500 Internal Server Error'

というエラーがでてきて、プロジェクトを開けない事態になって
しまいました。

これのPC1台あればいつでもどこでもなんでもできるように構築してたんで、
VisualStudio.NET2003/2005がインストールされてて、.NET Frameworkも
1.0/1.1/2.0が混在してる環境です。
しばらくVisualStudio.NET 2003を使ってなかったんで気づいてません
でしたが、新規プロジェクト(ASP.NET)の作成もできない状態。


こちらを参照させていただきまして、


aspnet_regiis.exe -r

を実行してみたものの、解決せず。。。
また、プロジェクトを入れたフォルダの権限設定を変えても
解決せず。

 
  http://localhost/


でアクセスするとアクセスできるので、IISの動作には問題なさそう。
そこで、イベントを調べてみると、


イベントの種類: エラー
イベント ソース: ASP.NET 1.1.4322.0
イベント カテゴリ: なし
イベント ID: 1084
日付: 2007/10/03
時刻: 13:18:23
ユーザー: N/A
コンピュータ: KUWAIT
説明:
aspnet_wp.exe を起動できませんでした。エラー コードは 80004005 です。このエラーは、ワーカー処理アカウントに .NET Framework ファイルの正しい読み取り権限が指定されていない場合に発生する可能性があります。.NET Framework が正しくインストールされ、インストール ディレクトリの ACL によって、構成されたアカウントへのアクセスが許可されていることを確認してください。

詳細な情報は、http://go.microsoft.com/fwlink/events.asp の [ヘルプとサポート センター] を参照してください。

というものと、


イベントの種類: エラー
イベント ソース: ASP.NET 1.1.4322.0
イベント カテゴリ: なし
イベント ID: 1007
日付: 2007/10/03
時刻: 13:18:55
ユーザー: N/A
コンピュータ: KUWAIT
説明:
構成ファイルの processModel セクションで指定されたユーザー名およびパスワードが無効なため、aspnet_wp.exe を起動できませんでした。

詳細な情報は、http://go.microsoft.com/fwlink/events.asp の [ヘルプとサポート センター] を参照してください。

というものがあったので、これをぐぐって、ようやく、こちら
ページにたどり着いて、原因が


ASPNETユーザのアカウントが何故かロックされてた

ことが判明しました。。。

通常、ユーザとグループの管理(ノートPCはWindowsXP Pro)では、
ASPNETユーザのアカウントって、ロックできないようになっている
のですが、一体どうして、ロックされてしまってたのやら。

リリース直前にこういうトラブルは堪忍してほしいもんです。
自分のせいかもしれないけど。
posted by しげ at 19:33| Comment(2) | TrackBack(1) | VisualStudio2003/2005 | このブログの読者になる | 更新情報をチェックする

2007年08月14日

SOAPの非同期処理

最近、お仕事で

・サーバはWebサービスでしか依頼を受け付けられない。
 (http/https以外はダメってこと)
・クライアントからサーバにftpは許可することが可能。
 (ftpなら追加で許可してもいいそうです)
・クライアントから大量の処理対象データを送る必要がある。
 (たぶん数MBくらい。)
・Webサービスの処理待ちでクライアントがタイムアウトして、
 処理結果がわかんなくなるのは困る。


というような要望を受けまして、どうしたものかと考えてました。
ひとつの案として、

・ftpで処理対象データをクライアントからサーバに送る。
・クライアントからWebサービスで処理を依頼。
・依頼された処理を、Webサービスから別プロセスとかバッチ処理
 とかで処理。処理後、どっかに処理結果を書き込む。
・クライアントはしばらくしてから、Webサービス経由で処理結果を
 参照する


という方法が上がってきたんですが、システム的に煩雑・・・。
すなわち運用が大変ということで、この方式以外になにか方法はない
のかなぁと調べていました。

いろいろググって知ったんですが、SOAPって非同期処理が可能なんですね
(↑ちゃんと勉強しとけよ。>オレ)


参考:[MSDN]信頼できる XML Web サービス


この方法だと(OneWayプロパティを使う)、リクエストさえ投げれれば
クライアントはゆっくり待つことができて、要望に答えられそうです。
ただ、データをSOAPでWebServiceの引数として渡すことになるので、
ftpで送信するよりは、大分時間が・・・たぶん倍以上の時間がかかる
かも。

今回のケースでは、サーバ−クライアント間はLANで接続されてて、
数MBなら数秒で伝送が終わってる実績があるんで、大丈夫かなぁ
と思われます。


ちょっと試してみましたが、
[SoapDocumentMethod(OneWay=true)]

この1行追加するだけなんで、ラクチンです。
posted by しげ at 22:46| Comment(0) | TrackBack(0) | VisualStudio2003/2005 | このブログの読者になる | 更新情報をチェックする

2007年05月25日

アイコンの設定

VB.NETで開発したアプリをチェックしていて、アイコンを設定
していたのに

 『タスクマネージャのアイコンは変わってない』

ということに気づきました。
タスクバーに表示されているアイコン、スタートメニューで
表示されるアイコン、プログラムの追加と削除で表示されるアイコン、
これらのアイコンはちゃんと設定されています。

アイコンの設定は開発したプログラムのプロジェクトデザイナ画面の
アプリケーションの設定で、リソース設定に追加したアイコンを
利用するように設定しています(VB.net2005)。
念のため、formに対してもアイコンを設定してみましたが状況は
変わらず。
iconCache.dbは削除したからキャッシュの問題じゃなさそうだし。


ググってみてもそれらしい情報を得られていません。
検索の仕方に問題があるのかもしれないので調べてみますが、
どうしたらいいのやら。


posted by しげ at 13:11| Comment(0) | TrackBack(0) | VisualStudio2003/2005 | このブログの読者になる | 更新情報をチェックする

2007年05月21日

.NET vs JAVA

クライアントでの画面操作が中心となるシステム開発案件があるんだけど、
開発環境として、.NETを選択すべきか、JAVA+SWTを選択すべきか
悩んでいます。

悩んでいます・・・というものの、私の腹づもりは.NETなんで、
本当に悩んでいるのはユーザさん。


企業ユーザさん(なので、クライアントPCはほぼ100%Windows)で、
Excelでファイルを出力することがあり、UIに十分配慮してほしい、
ということが条件なんで、.NETを回避する理由は無い、と考えてるんだけど、
どうもJAVAのWriteOneceRunAnywhereの言葉に凄く惹かれているみたい。


以前JAVAで、正確にはJ2EEv1.3で、商用プロダクトを利用せずに開発を
したことがあるんだけど、オープンソースの各種プロダクトの整合性や
不具合に悩まさせれて苦労した経験があるだけに、もしもJAVAでの開発
となったら、WebLogicとかWebSphereとかの商用環境を利用したいと
考えています。

この場合、動作環境もWebLogicとかWebSphereに縛られていくし、そもそも
SWTを利用する時点でWindowsに縛られてるっておもうんだけどー。


結局、私の技術要素に対する知識が不十分なんで、ユーザさんを説得
できてないんです。
おっさんになっても、技術の進歩についていく自信はあったんだけど、
既に遅れ始めてるなぁ・・・(涙)

ラベル:.net 雑感 java
posted by しげ at 19:10| Comment(0) | TrackBack(0) | VisualStudio2003/2005 | このブログの読者になる | 更新情報をチェックする

2007年04月27日

.netで文字列の連結

Visual Basic.net 2005 で作成したプログラムのパフォーマンスが出なくて、
調査してたところ、こんな記事を見つけました。

文字列を、+=で結合するよりもStringBuilderを使うと良い、くらいの知識は
あったのですが、どのくらい効果的なのか判ってなかったので、試してみました。。。


(結論)
長い文字列を繰り返し連結する場合はStringBuilderが効果的


KBオーダの文字列を結合する場合、+=で何度も大きい領域を確保するよりも、
StringBuilderのコンストラクタであらかじめバッファサイズを指定して
Appendするほうが、かなり高速でした。
今回作成してたプログラムに関して言えば、5〜10倍程度は早くなりました。


ただし、文字列の長さがあまり長くなかったり、回数が少なかったりすると、
あまり効果はでないみたいです。
posted by しげ at 17:34| Comment(0) | TrackBack(0) | VisualStudio2003/2005 | このブログの読者になる | 更新情報をチェックする

2005年11月18日

VS2003でAsp.netのデバッグ

Visual Studio .net 2003 で、Asp.net のプログラムをdebugしようとして
起動すると、起動できなくて、エラーが発生することがあります。

古いソースを削除して、新しいものをVisual Source Safeから取得したりした場合とか。

Web.configを見ろ、だとか、デバッグなしで開始してみろとか言われます。
んで、「デバッグなしで開始」してみると、「ファイル変更の監視を開始できませんでした」とか
言われたりして。


この原因は、ソースを入れ替えたときにファイル/フォルダの権限が替わってしまい、
作成したdll等を起動できない場合に発生するようです。

対応方法は、IUser,IWAMのユーザに権限を与えてやればOK。


気づかないとハマル落とし穴。。。
ラベル:VisualStudio ASP.NET
posted by しげ at 00:00| Comment(0) | TrackBack(0) | VisualStudio2003/2005 | このブログの読者になる | 更新情報をチェックする
×

この広告は180日以上新しい記事の投稿がないブログに表示されております。