複数のPDFファイルをZIPファイルに書き込んで一括出力

339 views
Skip to first unread message

cy

unread,
Jul 12, 2021, 8:23:09 PM7/12/21
to RapidReportサポート QAフォーラム
お世話になります。

複数のPDFファイルを一度に出力したい
(1つのPDFファイルに結合せず、
それぞれのPDFに異なるファイル名をつける形)
と思っております。
ファイル数が多くなる可能性あるため、
Zipファイルに書き込んで出力したいと思っております。

以下を試しましたが、実現できませんでしたので、
実現可能でしたら、参考のプログラムをご教授いただけないでしょうか。
VB.NETを使用しております。

①複数のPDFデータを一旦保存してそのパスを指定しZIpに書きこんでいく
→複数ファイルを一度に保存することは可能でしょうか

②PDFデータを保存せずバイナリ化してZipに書き込んでいく
→PDFデータ(レンダリング後のオブジェクト?)を
バイナリ化することは可能でしょうか

以上、よろしくお願いいたします。

RapidReport

unread,
Jul 13, 2021, 12:36:38 AM7/13/21
to RapidReportサポート QAフォーラム
吉川です。

①に関して
複数ファイルを一度に保存することはできません。

②に関して
のコードをFileStreamではなく、
BinaryWriterを利用することで、バイナリで出力できるはずです。

Message has been deleted

cy

unread,
Jul 15, 2021, 8:32:24 PM7/15/21
to RapidReportサポート QAフォーラム
お忙しいところご回答いただき、誠にありがとうございました。

下記のコードで解決できましたので、貼付させていただきます。

PDFデータ(ReportPages)をバイナリー変換
複数のバイナリーデータをZipファイルへ書き込む
Zipファイルを出力する

ーーーーーーーーーーーーーーーーーーーーーーー

'Zipファイルに使用しているImport
Imports Ionic.Zip


Dim binaryList As New List(Of Byte())

For i = 0 To data.Count - 1

    Dim report As New Report(Json.Read(Server.MapPath("report\test.rrpt")))

    report.Fill(New ReportDataSource(data))

    Dim pages As ReportPages = report.GetPages()

    Using ms As MemoryStream = New MemoryStream()
        Dim renderer As New PdfRenderer(ms)
        pages.Render(renderer)
        Dim binary As Byte() = ms.ToArray()
        binaryList.Add(binary)
        fileNameList.Add("test" & i)
    End Using

Next


'PDFバイナリーデータをZipに書き込んで出力する

Dim zip As New ZipFile With {
    .AlternateEncoding = System.Text.Encoding.GetEncoding(“UTF-8”),
    .AlternateEncodingUsage = Ionic.Zip.ZipOption.Always
}

For i = 0 To binaryList.Count - 1
    zip.AddEntry(fileNameList(i) & ".pdf”, binaryList(i))
Next

Dim out As Stream = Response.OutputStream
zip.Save(out)

Response.ContentType = "application/pdf"
Response.AddHeader("Content-Disposition", "attachment;filename=" & "TestZipFile" & ".zip")

Response.End()


2021年7月13日火曜日 13:36:38 UTC+9 RapidReport:
Reply all
Reply to author
Forward
0 new messages