要件
・請求書のPDF生成
・全ページを一つのPDFファイルで出力したい
前提
・請求書の「1ページ目」と「2ページ目以降」でレイアウトが異なり、prepdファイルも2つに分けて作られている
以下のようなソースコードで要件を満たせるかと思ったのですが、
ChangeDefFile()を読んでいるところで「印刷データがセットされていません。」というエラーが出て動作しませんでした。
どのように書けば要件を満たせるでしょうか?
paoRep = ReportCreator.GetPDF()
paoRep.LoadDefFile("D:\test1.prepd")
paoRep.PageStart()
paoRep.PageEnd()
paoRep.ChangeDefFile("D:\test2.prepd")
paoRep.PageStart()
paoRep.PageEnd()
paoRep.SavePDF("D:\test.pdf")
お問い合わせありがとうございます。
ChangeDefFile を使用しないといけないでしょうか?
もし、LoadDefFile のみであれば、
インストーラに付属るしているサンプルの「2.郵便番号 (PDF・SVZ出力・QRコード)」の通りコーディングしていただければ、
問題なく違うレイアウトの帳票スタイルを読み込み、
1つのPDFファイルに出力できます。
念のためそのサンプルのロジックを抜粋して書いておきます。
DataTable table = ds.Tables["PostTable"];
IReport paoRep = null;
//PDF出力オブジェクトのインスタンスを獲得
paoRep = ReportCreator.GetPdf();
int page = 0;
int line = 999;
string hDate = System.DateTime.Now.ToString();
paoRep.LoadDefFile(appPath + "..\\..\\..\\PaoRep1.prepd");
foreach (DataRow row in table.Rows){
line++;
if (line > 32){ // Head Print
if ( page != 0 ) paoRep.PageEnd();
page++;
if(page == 6)
{
paoRep.LoadDefFile(appPath + "..\\..\\..\\PaoRep2.prepd");
}
paoRep.PageStart();
paoRep.Write("日時", hDate);
paoRep.Write("ページ", "Page-" + page.ToString());
line = 1;
}
//Body Print
paoRep.Write("郵便番号", row["郵便番号"].ToString(), line);
paoRep.Write("市区町村", row["市区町村"].ToString(), line);
paoRep.Write("住所", row["住所"].ToString(), line);
paoRep.Write("横罫線", line);
}
paoRep.PageEnd();
//ファイルの保存ダイアログの処理
saveFileDialog.FileName = "郵便番号帳票";
saveFileDialog.Filter = "PDF形式 (*.pdf)|*.pdf";
if (saveFileDialog.ShowDialog() == DialogResult.OK)
{
//PDF出力
paoRep.SavePDF(saveFileDialog.FileName);
if(MessageBox.Show(this,"PDFを表示しますか?", "PDF の表示", MessageBoxButtons.YesNo ) == DialogResult.Yes)
{
System.Diagnostics.Process.Start(saveFileDialog.FileName);
}
}
- YY-BOARD -