忍者ブログ
Admin*Write*Comment
元素記号W
[486]  [485]  [484]  [483]  [482]  [481]  [480]  [479]  [478]  [477]  [476
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

何を思ったか、サポート窓口のお兄さんはVB.NETをはじめました。
VBに関するプログラムの知識レベルはもちろん芥以下です。

何で唐突にそんなことし始めたかというと…

業務対応で頻繁に利用する製品マニュアルがPDF形式なんですが
"manual01.pdf"みたいなファイル名なんです。

しかも、Explorerで詳細一覧にしてもファイルのプロパティはまっさら。
んでもってそれが、manual01~manual19までナンバリングしていて...

お客さんに電話口でぱっと説明するのにどれ開いたらいいのか

わかり難いったらありゃしねえ!


…というわけで、はじめちゃったわけです。
(夜勤はひと段落してやることなくなったし。)

  とりあえず最初は困ったときのgoogle先生でフリーのツールを
ぱぱっと探そうと思ったんです

が、でも、なんかしっくりくるのがないんです。

文書情報を取り出すってとことまではできているのに。
それをファイルのプロパティに…書き出しできるのがない!


悔しいので自作してやろう(←ここから発想がぶっ飛び始める)
よりによって、どうしてまたこんなややこしいことはじめちゃったのだろう。
でも…なんかたのしい…

で、見つけたのはこんな感じ。

PDFファイルの文書情報を調べるには - @IT

→これは、Linux環境のコマンド?Windows版を見つけられず。

PDFDesigner Tools

→対応しているのがPDF-1.4までであることに途中まで気が付かず…
 何とかアプリをつくった!が、マニュアル郡が1.5以降のAcrobatDistillerで
 できてたオチ。肝心の読み込むファイルが…orz

libHaru

→英語の読解力不足で断念・・・。というか、手元にあった業務端末の
 VB.NETで動かす自信がなくて・・・ゴニョゴニョ

最終的にたどり着いたのが次のライブラリでした。

iTextSharp

もうどうやって、ココにたどり着いたのか忘れました。

ただ、覚えているのは、次のサイトの管理者が親切に
このライブラリの解説をされていたので、これ見よがしに
知識を拝借させていただきました。

e-manual

# うーん、ホームページのドメインを見ると"kanazawa-net"だったので、
#もしかして ゆかりのある方…な訳ないか。

まあ、いろいろ探して、アプリを作ってみましたが…
なぜしっくりくるのがないか作ってから理解しました。

ファイルのプロパティを読み込むにはVisual Studioが用意したライブラリで
パパット読み込めるんですが…
書き込むにはなんかNTFS固有の動きがあるのでレジストリから拡張子に
結びつくID情報抜き出したりなんなりして、動かさないとうんたらかんたら…
仕事の合間にすることではないなと断念しました。

ということで、夜勤の暇をもてあましてできたのは
PDFの文書情報を書き出すだけのコンソールアプリです。
フリーソフト探せば画面つきのきっともっとましなものがあるのでは…


結局やりたいことやれず、何したかったんだ!とお思いでしょうが…
その通りです。


でも時間は潰せたので良しですネ。

【参考】
DOBON.NET
e-manual
iTextSharpを利用して.NETでPDF帳票を出力する - CodeZine
連載
 改訂版 プロフェッショナルVB.NETプログラミング
 Chapter 15 コンソール・アプリケーション

拍手[0回]


[>ソースはこんな感じで書きあがっています]

Imports System.IO           'File IO
Imports System.IO.File        'File IO
Imports System.Collections.Generic  '例外処理
Imports iTextSharp.text        'iTextSharp
Imports iTextSharp.text.pdf      'iTextSharp

Module ShowAttr

 Sub Main(ByVal CmdArgs() As String)
 
  'コマンドライン引数審査
  If CmdArgs.Length = 1 Then
  
   'コマンドライン引数を変数に格納
   Dim Cmdline As String = CmdArgs(0)
   
   'ファイルが実在するか検証
   If Exists(Cmdline) Then
   
    'PDFファイル読み込み
    Dim rPDF As PdfReader = New PdfReader(Cmdline)
    
    'PDF文書情報書き出し部
    
    'タイトル取得
    Try
      Console.Write("タイトル:")
      Console.WriteLine(rPDF.Info("Title"))
    Catch ex As KeyNotFoundException
      '例外:空欄が主なため、そのまま空欄で返す
      Console.WriteLine(" ")
    End Try
    
    'サブタイトル
    Try
      Console.Write("サブタイトル:")
      Console.WriteLine(rPDF.Info("Subject"))
    Catch ex As KeyNotFoundException
      '例外:空欄が主なため、そのまま空欄で返す
      Console.WriteLine(" ")
    End Try
    
    '作者名
    Try
      Console.Write("作者:")
      Console.WriteLine(rPDF.Info("Author"))
    Catch ex As KeyNotFoundException
      '例外:空欄が主なため、そのまま空欄で返す
      Console.WriteLine(" ")
    End Try
    
    'PDF作成アプリ名
    Try
      Console.Write("作成アプリケーション:")
      Console.WriteLine(rPDF.Info("Creator"))
    Catch ex As KeyNotFoundException
      '例外:空欄が主なため、そのまま空欄で返す
      Console.WriteLine(" ")
    End Try
    
    'PDF変換モジュール
    Try
      Console.Write("PDF変換モジュール:")
      Console.WriteLine(rPDF.Info("Producer"))
    Catch ex As KeyNotFoundException
      '例外:空欄が主なため、そのまま空欄で返す
      Console.WriteLine(" ")
    End Try
    
    '作成日
    Try
      Console.Write("作成日:")
      Console.WriteLine(rPDF.Info("CreationDate"))
    Catch ex As KeyNotFoundException
      '例外:空欄が主なため、そのまま空欄で返す
      Console.WriteLine(" ")
    End Try
    
    '更新日
    Try
      Console.Write("更新日:")
      Console.WriteLine(rPDF.Info("ModDate"))
    Catch ex As KeyNotFoundException
      '例外:空欄が主なため、そのまま空欄で返す
      Console.WriteLine(" ")
    End Try
    
    'キーワード
    Try
      Console.Write("キーワード:")
      Console.WriteLine(rPDF.Info("Keywords"))
    Catch ex As KeyNotFoundException
      '例外:空欄が主なため、そのまま空欄で返す
      Console.WriteLine(" ")
    End Try
    
    '総ページ数
    Try
      Console.Write("総ページ数:")
      Console.WriteLine(rPDF.NumberOfPages)
    Catch ex As KeyNotFoundException
      '例外:空欄が主なため、そのまま空欄で返す
      Console.WriteLine(" ")
    End Try
    
    'PDF バージョン
    Try
      Console.Write("PDFバージョン:")
      Console.WriteLine(rPDF.PdfVersion)
    Catch ex As KeyNotFoundException
      '例外:空欄が主なため、そのまま空欄で返す
      Console.WriteLine(" ")
    End Try
    
    'PDF参照を終了
    rPDF.Close()
    
   Else
     'ファイルなかった。
     Console.WriteLine("ファイルの指定に誤りがあります。")
     Console.WriteLine(" ")
     Console.WriteLine("ファイルはフルパスで指定するか、")
     Console.WriteLine("プログラムと同じディレクトリに配置して実行してください。")
     Exit Sub
   End If
  
  Else
    Console.WriteLine("不正なパラメータが付与されました。")
    Console.WriteLine("次の通り指定してください。")
    Console.WriteLine(" ")
    Console.WriteLine(" testApp.exe filename")
    Exit Sub
  End If
  
 End Sub

End Module


いやぁ、にわか勉強ではMainにだだ書きするのが精一杯。
見る人が見たらひどいソースだといわれそうです。
あと、長いことダラダラ書いたソースですが、dllも使い切ってないしょーもない感じです(笑)

ちなみに動かすとこんな感じ。(手元にあったプリンタのマニュアルを拝借)

<PDF文書情報>


<コマンド実行結果>


あと動作も荒削りすぎなので…
本格的にテコ入れするなら次を何とかせねばですが、
きっとなんもしないでしょう。
・自作関数を使った、ソースの整理(部品化)
・取り出し処理切り替えスイッチ化
・日時情報を数字の羅列じゃなくて年月日をつけたい・・・
PR
この記事にコメントする
お名前
タイトル
メール
URL
コメント
文字色
パスワード   Vodafone絵文字 i-mode絵文字 Ezweb絵文字
secret
  • ABOUT
このブログは、思いつき、やる気、オンラインゲームの活動記録が配合されています。
  • カレンダー
06 2017/07 08
S M T W T F S
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31
  • プロフィール
HN:
あき/落日
性別:
非公開
職業:
おふぃすわーかー
自己紹介:
ヽ(・⊥・)ノ

忍者ツールズプローフィール:
忍者ツールズプロフィールは終了しました
  • アクセス解析&カウンタ
  • 最新コメント
無題(返信済)
(11/28)
無題(返信済)
(09/25)
(05/06)
  • 最新トラックバック
  • 著作権について
当ブログにて頻繁に登場する、オンラインゲームのスクリーンショット等の著作権表示です。
◆Ragnarok Online◆
このブログ内における「ラグナロクオンライン」から転載された全てのコンテンツの著作権につきましては、運営元であるガンホー・オンライン・エンターテイメント株式会社と開発元である株式会社Gravity並びに原作者であるリー・ミョンジン氏に帰属します。

© Gravity Co., Ltd. & LeeMyoungJin(studio DTDS) All rights reserved.
© 2010 GungHo Online Entertainment, Inc. All Rights Reserved.


◆R.O.H.A.N. Online◆
Copyright 2010 R.O.H.A.N by WeMade Online Co.,Ltd. All Rights Reserved.
Copyright 2005-2010 R.O.H.A.N by YNK GAMES Inc. All Rights Reserved.


◆Phantasy Star Online 2◆
(C)SEGA PHANTASY STAR ONLINE 2

『PHANTASY STAR ONLINE 2』公式サイト

なお、当ブログに掲載しているコンテンツの再利用(再転載・配布など)は、禁止しています。
  • Twitter
Copyright © 元素記号W All Rights Reserved.*Powered by NinjaBlog
Graphics By R-C free web graphics*material by 工房たま素材館*Template by Kaie
忍者ブログ [PR]