Fix decoding EOL issue with G3 2D

This commit is contained in:
nkryuchkov 2019-02-07 14:11:55 +03:00
parent cd8ec66acf
commit e05be53dce
2 changed files with 20 additions and 8 deletions

24
main.go
View File

@ -89,14 +89,25 @@ var xObjectImages = 0
var inlineImages = 0 var inlineImages = 0
func main() { func main() {
// save images to pdf /*var files []string
if err := imagesToPdf([]string{"/home/darkrengarius/Downloads/scan223.png"}, "/home/darkrengarius/Downloads/testCombined2232.pdf"); err != nil {
log.Fatalf("Error writing images to pdf: %v\n", err) err := filepath.Walk("/home/darkrengarius/Downloads/4111112", func(path string, info os.FileInfo, err error) error {
if filepath.Ext(path) == ".png" {
files = append(files, path)
}
return nil
})
if err != nil {
log.Fatalf("Error scanning directory: %v\n", err)
} }
if err := imagesToPdf(files, "/home/darkrengarius/Downloads/testCombined4111112.pdf"); err != nil {
log.Fatalf("Error writing images to pdf: %v\n", err)
}*/
// extract images from pdf to zip // extract images from pdf to zip
inputPath := "/home/darkrengarius/Downloads/testCombined2232.pdf" inputPath := "/home/darkrengarius/Downloads/testCombined000141.pdf"
outputPath := "/home/darkrengarius/Downloads/testCombined2232.zip" outputPath := "/home/darkrengarius/Downloads/testCombined000141.zip"
fmt.Printf("Input file: %s\n", inputPath) fmt.Printf("Input file: %s\n", inputPath)
err := extractImagesToArchive(inputPath, outputPath) err := extractImagesToArchive(inputPath, outputPath)
@ -216,8 +227,7 @@ func imagesToPdf(inputPaths []string, outputPath string) error {
encoder.EndOfBlock = true encoder.EndOfBlock = true
encoder.EndOfLine = true encoder.EndOfLine = true
encoder.EncodedByteAlign = true encoder.EncodedByteAlign = true
encoder.BlackIs1 = true encoder.K = -1
encoder.K = 4
img.SetEncoder(encoder) img.SetEncoder(encoder)
img.SetPos(0, 0) img.SetPos(0, 0)

View File

@ -479,6 +479,8 @@ func tryFetchRTC2D(encoded []byte, bitPos int) (bool, int, error) {
if i > 1 { if i > 1 {
return false, startingBitPos, errors.New("RTC code is corrupted") return false, startingBitPos, errors.New("RTC code is corrupted")
} else { } else {
bitPos = startingBitPos
break break
} }
} }
@ -730,4 +732,4 @@ func tryFetchEOL0(encoded []byte, bitPos int) (bool, int) {
func tryFetchEOL1(encoded []byte, bitPos int) (bool, int) { func tryFetchEOL1(encoded []byte, bitPos int) (bool, int) {
return tryFetchExtendedEOL(encoded, bitPos, EOL1) return tryFetchExtendedEOL(encoded, bitPos, EOL1)
} }