カテゴリー別アーカイブ: コラム

<大阪開催>これで出来る! 帳簿・書類の電子化活用 ~領収証・請求書等の「スキャナ保存」の新要件とは~

電子帳簿保存法から最近、アンテナハウス営業Gが力を入れているスキャナ保存について、大坂でもセミナーを開催することが決定しました。

本セミナーの主催はジップインフォブリッジ株式会社様と株式会社NTTデータビジネスブレインズ様です。共催にセイコーソリューションズ株式会社様が参加し、弊社からは講演者として益田が参加します。

【宣伝】

弊社益田講演:「正しく理解!e-文書法と電子帳簿保存法」(13:40~14:10)
トップバッターです。関西方面、大阪近辺でご勤務の方、その日関西方面へご出張の方、ご参加いただければ幸いです。

e-文書法、弊社関連製品へのお問合せ:
TEL:03-5829-9021
e-mail:sis@antenna.co.jp
アンテナハウスS1営業グループ


F# の Seq に驚く

.NET の一級市民と「なるべく」設計されたという F#。一級市民になれたのだろうか。Visual Studio 2013 Community でも最初から F# が使える。がしかし、GUI プログラム (WPF プログラム) が作れるようにはなっていない。拡張プログラムの「F# Empty Windows App (WPF)」をインストールすることで GUI プログラムが作れるようになる。喜んで使い始めるが、どうもプロパティで GUI コントロールをバインドする部分がちゃんと動かない。ツリー表現のコントロール(パス)でアイテムを選べるのだが、アイテム名が表示されないので何を選んでるのかわからない。選ぶと XAML ファイルが変更されるので動いてはいるようだ。これがバグなのか、たまたま微妙に動いてるだけなのかわからない。F# は正規には WPF プログラムを作れるようにはなってないのだからたまたま微妙に動いてるだけという可能性は高い。なんにせよ結局 XAML は手で触らないといけない。一級市民ねぇ。

プロパティをイベントモードにすると「イベントハンドラーを追加する前に、分離コードファイルとクラス定義を追加してください。」などとお願いされちゃう。分離コードってなんだ? と調べると、C# の partial class を使って XAML の定義と C# の定義を融合するといったことをするようだ。問題は F# には partial class なんて概念がないこと。将来的にはサポートされるのかもしれないが、VS2013 の F#(バージョン3.1.2) には存在しない。困ったぞ。しかたがないので、アプリケーションのインスタンスを表す App.xaml を使うのを止め、コードでアプリケーションの初期化を記述した。イベントハンドラはコードで追加。まさしく手で追加。困った一級市民だ。

そんな、皆さんのディスクの肥やしになっているだろう F# の Seq に驚かされた。

.NET の ZipArchive クラスの Entries プロパティは ReadOnlyCollection<ZipArchiveEntry> という型なのだが、こういった .NET でよく使われるコレクションは F# では List の関数では直接扱えない。ところが Seq の関数では扱える。で、map や iter など Seq の関数を List の関数のつもりで(大概同じものがある)使ってるとその仕様の違いに突然驚かされる。で、確認のためプログラムを書いた。

let OnList (d0) =
    let _ = stderr.WriteLine("## OnList ##")
    let _ = stderr.WriteLine("part 1")
    let c = ref 0
    let d1 = 
        List.map 
            (fun (s: string) -> 
                let _ = stderr.WriteLine("function list 1")
                c := !c + 1
                s.ToUpper() + string !c
            ) 
            d0
    if List.length d1 > 2 then
        let _ = stdout.WriteLine("part 2")
        let d2 = 
            List.map
                (fun (s: string) -> 
                    let _ = stderr.WriteLine("function list 2")
                    s
                ) 
                d1
        d2
    else
        []

let OnSeq (d0) =
    let _ = stderr.WriteLine("## OnSeq ##")
    let _ = stderr.WriteLine("sect 1")
    let c = ref 0
    let d1 = 
        Seq.map 
            (fun (s: string) -> 
                let _ = stderr.WriteLine("function seq 1")
                c := !c + 1
                s.ToUpper() + string !c
            ) 
            d0
    if Seq.length d1 > 2 then
    //if true then
        let _ = stderr.WriteLine("sect 2")
        let d2 = 
            Seq.map
                (fun (s: string) -> 
                    stderr.WriteLine("function seq 2")
                    s
                ) 
                d1
        Seq.toList d2
    else
        []

[<EntryPoint>]
let main argv =
    let ls1 = [ "abc"; "def"; "ghi" ]
    let r1 = OnList(ls1)
    let _ = List.iter (fun (s: string) -> stdout.WriteLine(s)) r1
    let r2 = OnSeq(ls1)
    let _ = List.iter (fun (s: string) -> stdout.WriteLine(s)) r2
    0

OnList 関数と OnSeq 関数はどちらも入力の文字列リストを関数1 で大文字に変換して順序数を付けて、リストサイズが 2 より大きかったら関数2 を通って変換後のリストを返す。関数2 では何もさせてないが、何かしてもしなくても同じなので省略した。OnList 関数と OnSeq 関数の違いは List の関数を使うか Seq の関数を使うかだけ。

OnList の実行結果は以下の通り。

## OnList ##
part 1
function list 1
function list 1
function list 1
part 2
function list 2
function list 2
function list 2
ABC1
DEF2
GHI3

目論んだ通り、リスト要素の回数だけ関数1 と関数2 が呼ばれている。

OnSeq の実行結果は以下の通り。

## OnSeq ##
sect 1
function seq 1
function seq 1
function seq 1
sect 2
function seq 1
function seq 2
function seq 1
function seq 2
function seq 1
function seq 2
ABC4
DEF5
GHI6

関数1 が 2 回ずつ呼ばれ、参照を使った順序数が変わってしまっている。この程度のコードで結果が変わるのである。

Seq は遅延評価されるのに加え、要素のインスタンスが常に 1 つという制限がある。で、

if Seq.length d1 > 2 then

のときに d1 が評価され、分岐するのだが、関数2 での評価時、もう d1 の要素は保持されていない(要素のインスタンスは常に 1 つ)ため再度関数1 からやり直している。ところが関数1 は順序数を得るのに参照を使った代入をしている不純な関数なので結果が変化してしまうのである。この関数1 が純粋でも問題は同じ。関数1 が重い処理だったりした場合、無駄に CPU と時間を食うことになる。不純な関数を使ったのは結果が変化するという、どう考えてもダメな判りやすい結果を敢えて出すため。

if true then

というように分岐の判定である d1 の評価をやめると、関数1 は要素数回のみ呼び出される。

ようは Seq には気を付けろということだ。.NET のコレクションがデフォルトでは Seq でしか扱えないのは、どう考えても罠。強烈な罠。

 


月刊論文誌のEPUB化

おはようございます。今日は月刊論文誌のEPUB化についての話題です。

現在、月刊の技術学会誌のEPUB版を制作しています。印刷用のPDFと組版用のテキストデータが校了後に提供され、これをEPUB化して印刷物の発行と同時に公開します。

EPUBは、アンテナハウスの電子書籍制作Webサービス「CAS-UB」で生成します。

時間がないので、できるだけ効率よく作業を行えるよう、組版用のテキストデータをCAS-UBのマークアップテキストに効率よく置き換えられるようにインポートプログラムを用意しています(CAS-UBは、このようなユーザー毎のカスタマイズ要求に対応できます)。

図や数式は画像素材としては提供されないので、アンテナハウスで開発した「PDF加工画像化ツール」でPDFから切り出して使用します。

数式の切り出し

PDFを「PDF加工画像化ツール」で表示し、まずは数式を探して切り出す範囲を指定します。数式のほとんどは特殊なフォントが使われているので、フォントを検索することで自動的に範囲指定できるようにしています。数式は、文章中に置かれたインライン数式と、段落に数式のみが置かれたブロック数式に分けて範囲指定します。

数式の切り出し

数式の切り出し

数式は、インライン数式とブロック数式を分けて、ファイル名に連番を付けて切り出します。
組版用のテキストデータには数式のマークアップがあるので、数式の範囲指定と組版用のテキストデータの数式マークアップを1対1に一致させて、組版用テキストデータの数式マークアップをCAS-UBのマークアップに置き換えます。

図や表、写真などの切り出し

図表やイラスト、写真などは、目視で探してキャプションを含めて範囲指定することで、キャプション付きの画像として切り出します。図表の位置は、組版用テキストデータに情報がないので、本文中に 図1 図2 といった記述があれば、その段落の後にCAS-UBのマークアップで図表を配置します。

画像の切り出し

画像の切り出し

EPUBのカバー画像は、印刷用の表紙を画像化したデータを加工して使用しています。
作成したEPUBは、閲覧用の端末で表示しを確認し、問題があれば調整します。

今回の案件では、アンテナハウスで開発した「会員制出版物配信サービス」でEPUBを購読者向けに配信しています。



「会員制出版物配信サービス」モニター募集!

おはようございます。今日明日は、電子出版サービスグループから電子書籍にまつわる情報を発信します。

【告知】iOSアプリ「EB2Magazine」モニター募集のご案内

昨年リリースした会員制出版物配信サービスの実践例として、編集兼発行人 鎌田博樹氏が率いる『EBook2.0 Magazine』をiOSモバイルユーザー向けアプリとして開発しました。EBook2.0 Magazine を楽しみつつ、アプリの出来具合を確かめていただけるモニターを募集いたします。

ご興味をお持ちいただいた方は、是非下記お申込フォームからお申し込みください。

  • モニター期間:2015年9月末まで
  • モニター特典
    有料会員向けの記事を期間終了まで無料で購読いただけます。

アプリダウンロードURL:E-Book2.0 Magazine iOSアプリダウンロード

「会員制出版物配信サービス」のコンセプト

会員ユーザーのもとに確実に届き、いつでもどこでも読まれる電子書籍(PDF/EPUB)を!

特定ジャンルに絞ったサイトの記事を閲覧するユーザーの多くは、そのジャンル(またはサイト)に元から関心を払っていて、かつ興味をひかれる記事は「きちんと読みたい」「読みながら考えたい」と感じます。

さて、情報配信側はというと、こちらはWebページを制作、更新し、ユーザーに対してその内容を告知します。告知の方法はメールが主流ですが、メールを開く前に大量のスパムに紛れてしまったり、本文の作られ方やユーザーが利用しているメーラーによって可読性が変わり、ユーザーが閲覧をあきらめてしまったりと、なかなかWeb閲覧までの道のりは遠いと伺います。そういうサービスを専門に行う企業に外注するのも一つの手ですが、コストを考えるとなかなか手が出せません。

会員制出版物配信サービスは、ユーザーの読みたい、配信者の見てもらいたいニーズにマッチしたサービスです。

配信サーバーと専用モバイルアプリで問題を解決します。イメージは学会誌、会誌、ニューズレターをモバイル向けに電子書籍で配信する方式で、アプリを端末へインストールすれば、多くのメールに紛れてしまうことがないので、確実にユーザーの手元に届きます。オフラインでも、電車の中でも、いつでもどこでもしっかり読んでもらえます。

詳細ページURL:https://www.antenna.co.jp/epub/e-maga.html

「会員制出版物配信サービス」実例のご案内


「瞬簡PDF 書けまっせ 6」で差込印刷 (3)

「書けまっせ6」は販売終了となりました。最新版は「書けまっせ7」です。

関連リンク:PDF資料室【質問】PDFで配布されている帳票に差し込み印刷するにはどうしたら良いですか?

前回までで納品書はいったん完成しました。
しかし、データが納品書の行数を超えるほど多い場合はどうなるのでしょうか? たとえば1ページでは収まらないほど納品データがあった場合、データが無くなるまでページを複写して繰り返すことになります。
データを繰り返し差し込むときの挙動には大きく分けて2種類あります。「全ページ差込」というパラメータがONのときとOFFのときです。(デフォルトはONです)

全ページ差込がONの場合、次の図のようにデータが無くなるまで全ページを複写して繰り返します。
sashikomi-zenpage

全ページ差込がOFFの場合、[データリピート]というパラメータが関係します。下図のように初めて[データリピート]ONのフィールドがでてきたページのみをデータが無くなるまで繰り返します。
sashikomi
全ページ差し込みOFFはデータを繰り返したいフィールドと繰り返したくないフィールドが混在している場合に使います。

納品書のケースで実際に試してみましょう。
まずデフォルト状態のままで大量のデータを送るとどうなるか試してみます。このデータはテスト用に明細を8行から20行に増やしてあります。
これをセットして印刷するとどうなるか? 印刷プレビューで確認してみましょう。
nouhinshyo10
1ページ目は問題ありませんが、2ページ目を見ると表示がおかしいことが分かります。これは納品先の会社名や日付、納品元の情報が入るべきフィールドに明細データが流し込まれているためです。
デフォルトではすべてのフィールドがデータを繰り返し差し込む対象となるため、このようになってしまうわけです。

納品先、日付、納品元に関するフィールドをすべて選択状態にして[差込]タブにある[データリピート]と[全ページ差込]のチェックをはずしてください。
nouhinsyo11

これで2ページ目も正しく出力されます。

nouhinsyo12

このようにデータを繰り返し挿入したくないフィールドは[データリピート]をOFFにしてください。また[データリピート]機能を有効にするために「全ページ差込」もOFFにする必要があります。

 


「瞬簡PDF 書けまっせ 6」で差込印刷 (2)

「書けまっせ6」は販売終了となりました。最新版は「書けまっせ7」です。

関連リンク:PDF資料室【質問】PDFで配布されている帳票に差し込み印刷するにはどうしたら良いですか?

前回に続き「瞬簡PDF 書けまっせ 6」での差込印刷機能について解説していきます。

前回で文書にフィールドを挿入してデータを差し込むところまでできました。このまま印刷でもかまわないのですが、もう少し見た目をよくするためアレンジすることにします。
nouhinshyo6

「商品名」は左端に少し余白を入れ、「数量」は右揃え、「単位」は中央揃え、「単価」、「金額」は右揃えにしてカンマをつけたいところです。

まず「選択モード」が選択されていることを確認してください。
nouhinshyo7

「品番・商品名」列のフィールドをすべて選択します。[Ctrl]を押しながらクリックしていけば複数選択ができます。もしくは列全体を含む範囲をドラッグすることで一度に選択することも可能です。
選択できたら[テキスト]タブを選び、[文字配置]カテゴリの「左右余白」の数値を「2.0」にします。
nouhinshyo8

「数量」列のフィールドをすべて選択して[テキスト]タブ[文字配置]カテゴリのドロップダウンから「右寄せ(中央)」を選びます。このままだと右端ギリギリに配置されてしまうので「左右余白」を「2.0」にします。同じく「単位」列のフィールドを選択して「中央揃え(中央)」を指定します。
「単価」列、「金額」列のフィールドは「右寄せ(中央)」にして「左右余白」を「2.0」に、[表示形式]カテゴリにある「」ボタンを押してください。これで3桁ごとにカンマがつくようになります。
すべてできると次のようになります。(見やすくするために差込順序を非表示にしてあります)
nouhinshyo9

完成した状態をプロジェクトファイルとしてダウンロードできるようにしておきました。ここからダウンロード
ZIP圧縮されていますので解凍して「瞬簡PDF 書けまっせ 6」で開き、[差込]タブの[データソース]を指定すれば上記を再現することができます。


「瞬簡PDF 書けまっせ 6」で差込印刷(1)

「書けまっせ6」は販売終了となりました。最新版は「書けまっせ7」です。

関連リンク:PDF資料室【質問】PDFで配布されている帳票に差し込み印刷するにはどうしたら良いですか?

「瞬簡PDF 書けまっせ 6」には非常に高度な差込印刷機能が備わっています。
しかしながらどうやって使えばよいのか分からない、何ができるのか分からないなど、実際に使いこなしている方は少ないのではないでしょうか? 今回はこの差込印刷機能について数回にわたって解説してきたいと思います。

差込印刷とは?

まず差込印刷とは文書にデータを埋め込んで印刷することを言います。
「瞬簡PDF 書けまっせ 6」の場合、PDF文書にExcelやCSVデータを埋め込んで印刷したりPDFにしたりすることができます。

納品書をつくってみる

それでは実際に差込印刷機能を使って納品書を作っていきましょう。

  1. まず納品書のPDF文書を開きます。nouhinshyo
  2. 次にリボンから[ホーム]タブの[差込]-[差込フィールド ページ全体を自動認識]を選び、ページ全体に差込フィールドを作成します。この機能は矩形を自動認識して差し込みフィールドを作成してくれますが、完璧ではないため、フィールドができなかった場所には、[ホーム]タブの[差込]-[差込フィールド ドラッグで作成]で手で作成していきます。また、タイトルや備考欄、最後の行には必要ないので削除します。次のようになればOKです。
    nouhinshyo3
  3. 各フィールドには差込順序番号が青色のラベルで表示されています。読み込まれたデータはこの順番にフィールドへ差し込まれていくわけです。
    今回はフィールドを2か所、後から追加したため順序がおかしくなっていますので修正しましょう。
    順序を修正したいフィールドを選択してリボン[差込]タブを選び、[差込順序]の番号を適切なものに変更してEnterを押します。
    nouhinshyo4
  4. 最後にリボン[差込]タブのデータソースへ差し込むデータのパスを指定します。これで次のようにデータが差し込まれました。
    nouhinshyo5
  5. あとは印刷したりPDF出力をおこなえば良いだけです。いかがだったでしょうか? 基本的には差込フィールドを作ってデータを指定すればよいだけです。 次回はもう少し凝った差込方法について解説します。

 


エラー “FO transformation is failed” とは(AH Formatter)

こんにちは。
AH Formatterのサポート担当です。

AH Formatter の Windows 版をご利用のお客様から
以下のようなエラーメッセージについてお問い合わせをいただくことがあります。

 8195 (2003):FO transformation is failed.
 セキュリティ設定で、このスタイルシートのスクリプトコードの実行は許可されていません。

このエラーメッセージの「セキュリティ設定で・・・」以降の部分は
AH Formatter ではなく、XSLT プロセッサから出力されているメッセージです。

Windows 版をお使いの場合、オプション設定による指定がなければ MSXML が選択されます。
このエラーメッセージは MSXML6 での XSLT 変換において出力されています。
MSXML6 ではセキュリティ関係等の変更が行われており、その影響によるものかと思います。
※ MSXML6に関しては次の URL をご参照ください。
 https://msdn.microsoft.com/en-us/library/ms754611(v=vs.85).aspx

このようなエラーが発生した場合、
MSXML プロパティを変更することによって解消される場合もあります。
まずは、AH Formatter のオンラインマニュアルの
「オプション設定ファイル」の「XSLTの設定」をご参照ください。

AH Formatter V6.2 ではオプション設定ファイルで MSXML のプロパティを指定することが可能です。
スクリプトコードの実行を許可する場合には、
 <msxml name=”AllowXsltScript” value=”true”/>
とすれば解決するでしょう。


弊社ウェブサイトのセキュリティ強化のお知らせ

ウェブで使われてきたSSLという暗号通信方法に重大な欠陥(注)が見つかったため、世界中で、これを使わないようにする動きが進められています。

注:パスワードやクレジットカード番号など、暗号通信で守られるはずのデータが、筒抜けになる脆弱性です。

アンテナハウスも、今週末にSSLを廃止して、より安全なTLSという方式に切り替える予定です。
この結果、一部のお客様には、アンテナハウスのウェブに接続できないという影響が出る可能性があります。

接続できないお客様は、まず、ブラウザを最新版にしてみてください。これで、接続できるようになるはずです。

Chrome, Firefox, Operaなどの最新版は、すでに最初からTLSに対応しているので、最新版にするだけで問題は解決します。

最新のブラウザにしても、接続できないということであれば、弊社までご連絡ください。調査いたします。
とにかく最初の段階では、まず、何より、最新のブラウザにしていだくことが肝心です。


明けましておめでとうございます。今年もよろしくお願いします。

新年皆様いかがお過ごしでしょうか。
東京地方は新年から良い天気が続いておりますが、いつもより寒いように感じます。

さて、弊社は、昨年8月で創立30周年を経過しました。

決算期では昨年の12月末に31期が終了しましたが、ありがたいことに、30周年の節目の年を、3期連続の増収増益で終了することができました。

これもひとえに、弊社のソフトウェア製品をご利用いただいた皆様のおかげと、こころより感謝いたします。この場をお借りして、篤くお礼申し上げます。

弊社は、本日より、2015年の営業開始いたしましたが、今年も1年間頑張りたいと存じます。

ブログをお読みになっておられる皆様にとりましても、今年も良い年になりますよう、お祈り申し上げます。

2015年1月5日
アンテナハウス株式会社
代表取締役
小林 徳滋


Pages: Prev 1 2 3 ... 38 39 40 41 42 43 44 ... 118 119 120 Next