Merging PDFs - Merged file does not open
lnashier opened this issue · comments
lnashier commented
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?
lnashier commented
After scanning CLI code, I made it work by passing in model.NewDefaultConfiguration()
to MergeRaw