2019-04-14 22:22:41 +00:00
|
|
|
/*
|
|
|
|
* This file is subject to the terms and conditions defined in
|
|
|
|
* file 'LICENSE.md', which is part of this source code package.
|
|
|
|
*/
|
|
|
|
|
|
|
|
package model
|
|
|
|
|
|
|
|
import (
|
|
|
|
"bytes"
|
|
|
|
"os"
|
|
|
|
"testing"
|
|
|
|
|
|
|
|
"github.com/stretchr/testify/require"
|
|
|
|
|
2019-05-16 23:44:51 +03:00
|
|
|
"github.com/unidoc/unipdf/v3/core"
|
2019-04-14 22:22:41 +00:00
|
|
|
)
|
|
|
|
|
|
|
|
func TestReaderLazy(t *testing.T) {
|
|
|
|
f, err := os.Open(`./testdata/minimal.pdf`)
|
|
|
|
require.NoError(t, err)
|
|
|
|
|
|
|
|
reader, err := NewPdfReaderLazy(f)
|
|
|
|
require.NoError(t, err)
|
|
|
|
defer f.Close()
|
|
|
|
|
|
|
|
require.Equal(t, 1, len(reader.PageList))
|
|
|
|
|
|
|
|
page, err := reader.GetPage(1)
|
|
|
|
require.NoError(t, err)
|
|
|
|
|
|
|
|
ref, isRef := page.Contents.(*core.PdfObjectReference)
|
|
|
|
require.True(t, isRef)
|
|
|
|
|
|
|
|
obj := ref.Resolve()
|
|
|
|
_, isStream := obj.(*core.PdfObjectStream)
|
|
|
|
require.True(t, isStream)
|
|
|
|
|
|
|
|
str, err := page.GetAllContentStreams()
|
|
|
|
require.NoError(t, err)
|
|
|
|
require.Equal(t, 55, len(str))
|
|
|
|
|
|
|
|
var buf bytes.Buffer
|
|
|
|
writer := NewPdfWriter()
|
|
|
|
err = writer.AddPage(page)
|
|
|
|
require.NoError(t, err)
|
|
|
|
|
|
|
|
err = writer.Write(&buf)
|
|
|
|
require.NoError(t, err)
|
|
|
|
}
|