Sample code for 30+ languages & platforms
Lua

Unzip a ZIP Entry Directly into a BinData Object Using ZipEntry.UnzipToBd

See more Zip Examples

This example demonstrates how to use the ZipEntry.UnzipToBd method to inflate a ZIP entry directly into a BinData object.

The entry contents are uncompressed entirely in memory without creating a file on disk.

This is useful when:

  • Processing ZIP entry data entirely in memory
  • Avoiding temporary filesystem files
  • Working with binary files such as images, PDFs, or certificates
  • Passing uncompressed ZIP data directly to other APIs

The example opens a ZIP archive, locates a PDF entry, inflates it into a BinData object, and then writes the uncompressed bytes to a new file.

Suppose the ZIP archive contains:

docs/report.pdf

The entry is uncompressed directly into memory before optionally being saved to:

qa_output/report.pdf

Chilkat Lua Downloads

Lua
local chilkat = require("chilkat")

local zip = chilkat.Zip.new()

-- Open an existing ZIP archive.
local success = zip:open_zip("qa_data/zips/documents.zip")
if not success then
    print(zip.last_error_text)
    return
end

-- Locate the PDF entry within the ZIP archive.
local entry = chilkat.ZipEntry.new()

success = zip:entry_of("docs/report.pdf", entry)
if not success then
    print("ZIP entry not found.")
    zip:close_zip()
    return
end

-- ------------------------------------------------------------
-- Inflate the ZIP entry directly into a BinData object.
--
-- The uncompressed bytes are stored entirely in memory.
--
local pdfData = chilkat.BinData.new()

success = entry:unzip_to_bd(pdfData)
if not success then
    print(entry.last_error_text)
    return
end

print("Uncompressed size = " .. pdfData.num_bytes)
print("")

-- ------------------------------------------------------------
-- Optionally save the uncompressed bytes to a file.
--
success = pdfData:write_file("qa_output/report.pdf")
if not success then
    print(pdfData.last_error_text)
    return
end

zip:close_zip()

print("PDF extracted successfully.")