pdfcpu / pdfcpu

A PDF processor written in Go.

Home Page:http://pdfcpu.io/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Merging PDFs - Merged file does not open

lnashier opened this issue · comments

pdfcpu Version: 0.7.0

OS: darwin / arm64

I am trying to merge two PDF files. I wrote this small program as POC to validate if it works.

package main

import (
	"bytes"
	"fmt"
	"github.com/pdfcpu/pdfcpu/pkg/api"
	"github.com/pdfcpu/pdfcpu/pkg/pdfcpu/model"
	"io"
	"os"
)

func main() {
	files := []string{"file1.pdf", "file2.pdf"}

	readSeekers := make([]io.ReadSeeker, len(files))
	for i, file := range files {
		f, err := readFile(file)
		if err != nil {
			fmt.Println("error reading file:", err)
			return
		}
		readSeekers[i] = f
	}

	w := bytes.NewBuffer([]byte{})

	err := api.MergeRaw(readSeekers, w, true, &model.Configuration{
		Reader15: true,
	})
	if err != nil {
		fmt.Println("error merging pdfs:", err)
		return
	}

	savedBytes, err := saveFile("merged.pdf", w.Bytes())
	if err != nil {
		fmt.Println("error saving pdf:", err)
		return
	}

	fmt.Printf("merged successfully: %d\n", savedBytes)
}

func readFile(filename string) (io.ReadSeeker, error) {
	content, err := os.ReadFile(filename)
	if err != nil {
		return nil, err
	}
	return bytes.NewReader(content), nil
}

func saveFile(name string, data []byte) (int, error) {
	f, err := os.Create(name)
	if err != nil {
		return 0, err
	}
	defer f.Close()
	return f.Write(data)
}

It does create merged.pdf however, it does not open. It seems to me, program created corrupted file.
Would someone validate my program?

After scanning CLI code, I made it work by passing in model.NewDefaultConfiguration() to MergeRaw