Hello again; I did some tests and maybe there is a bug in BarcodeImage or BarcodeRecognize:
I tried to test the code
Graphics[Rectangle[Reverse[#]{1,-1}]&/@Position[ImageData[BarcodeImage["http://www.wolfram.com/","QR"]],0]]
with some random string (here of length 500)
StringJoin[RandomChoice[CharacterRange["a", "z"], 500]]
I did
Do[
str = StringJoin[RandomChoice[CharacterRange["a", "z"], 500]];
If[BarcodeRecognize[
Graphics[
Rectangle[Reverse[#] {1, -1}] & /@
Position[ImageData[BarcodeImage[
str
, "QR"]], 0]]] == str, , Print[str], Print[str]]
, {i, 50}]
and, for example, if i code the string
str = "gfcrvuwurteqkcvuzuojiegqsyhkneoqpihetyenmacgrsvzzafpjdaqcuhqvbn\
zscmcbcwuqfemjcvtyfrksngvyyjczlqdtqxgptcbsislzgxgzfqlqwliacnbpeaytoafc\
hogzcjkiqtmlrhcyxnjaimeexmxwuhnattymjbpqgydledfvfnicjngdgvubqtumhfxugp\
tmowvqufoliatwuilcmvdzlxjouvgzzmpyefmqfqvozgukksungahgmbyibqecmmfpgpna\
nhksjtmvcvpryxtdeggpllpfitfhflvmrgikodtsbkyrxyqxugyfbmppugmzjnmxsnivhx\
gtymhttvpcsqnvpajebblskmyqwodkprmyttdzcbzymcvofwwogudisnulczmxtzybmpav\
ufpcvuxakcujuskrmqcexbpdixvmcphwrzigbyzicsoitsapycfnkpshgjlwyfibbcpcgd\
ujdvvmqktzefwfdnm"
the decode gives
160886041590044
I suppose it's a Mathematica bug.
P.S.
about the initial question, to save space in the pdf output we could use the code
Graphics[Rectangle[First[#], Last[#] + {1, 1}] & /@
Split[Reverse[#] {1, -1} & /@
Position[
ImageData[BarcodeImage["http://www.wolfram.com/", "QR", 1]], 0],
First[#1] + 1 == First[#2] &]]
that generates rectangles and not only squares (less rectangle and less bites ;) )