2015-08-20 1 views
0

У меня есть довольно большой набор данных XML, например:Android ZXing Генерация PDF417 штрих-кода на большом XML набора данных

<book id=“…” serial_no="8472385" height="210" width="600" books="1"> 
    <content> 
    <barcode encoding="code128c" data1="22" data2="50" description="Barcode 1”>…</barcode> 
    <barcode encoding="code128c" data1="510" data2="75" description="Barcode 2”>…</barcode> 
    <chapter sections="8" data1="214" data2="12" description=“Info 1”>…</chapter> 
    <chapter sections="11" data1="88" data2="63" description=“Info 2”>…</chapter> 
    <chapter sections="16" data1="88" data2="42" description=“Info 3”>…</chapter> 
    <chapter sections="13" data1="88" data2="83" description=“Info 4”>…</chapter> 
    <chapter sections="11" data1="88" data2="105" description=“Info 5“>Mon, 24 Aug 2015, 8:30am</chapter> 
    <chapter sections="18" data1="286" data2="120" description=“Info 6”>…</chapter> 
    <chapter sections="19" data1="466" data2="12" description=“Info 7“>…</chapter> 
    <chapter sections="11" data1="496" data2="26" description=“Info 8“>…</chapter> 
    <chapter sections="9" data1="531" data2="28" description=“Info 9“>…</chapter> 
    <chapter sections="11" data1="497" data2="12" description=“Info 10“>8:30am</chapter> 
    <chapter sections="12" data1="88" data2="147" description=“Info 11“>…</chapter> 
    <chapter sections="10" data1="88" data2="125" description=“Info 12”>…</chapter> 
    <chapter sections="13" data1="338" data2="158" description=“Info 13”>…</chapter> 
    <chapter sections="9" data1="81" data2="192" description="book Id”>…</chapter> 
    <chapter sections="8" data1="394" data2="192" description="book Id”>…</chapter> 
    <chapter sections="8" data1="140" data2="12" description=“Info 14”>…</chapter> 
    <chapter sections="9" data1="132" data2="192" description="" /> 
    <chapter sections="10" data1="88" data2="177" description=“Info 15“ /> 
    <chapter sections="12" data1="88" data2="163" description="Some sample data”>…</chapter> 
    <chapter sections="8" data1="286" data2="192" description="Time Stamp">2015-08-19 10:00:55</chapter> 
    <logo data1="402" data2="37" description="Logo">cache/images/logoSample.pcx</logo> 
    <logo_gif data1="402" data2="37" description="Logo">cache/images/book_….gif</logo_gif> 
    <chapter sections="12" data1="446" data2="187" description="Price">$100.00</chapter> 
    </content> 
    </book> 

И я хочу, чтобы закодировать это в PDF417 изображение и отображать его на устройстве Android устройства. Я импортировал базу ZXing и я в настоящее время пытаюсь что-то вроде этого:

ImageView book = (ImageView) mRootView.findViewById(R.id.book_image); 
    Display display = getActivity().getWindowManager().getDefaultDisplay(); 
    Point size = new Point(); 
    display.getSize(size); 
    int width = size.x; 
    int height = size.x/2; 
    String raw = bookXmlString.replace("<","&lt;").replace(">","&gt;"); 

    MultiFormatWriter writer = new MultiFormatWriter(); 
    try { 
     Log.e("PDF_417", String.format("w: %d, h: %d, d: %s", width, height, raw)); 
     BitMatrix bm = writer.encode(raw, BarcodeFormat.PDF_417, width, height); 
     Bitmap ImageBitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888); 
     for (int i = 0; i < width; i++) {//width 
      for (int j = 0; j < height; j++) {//height 
       ImageBitmap.setPixel(i, j, bm.get(i, j) ? Color.BLACK : Color.WHITE); 
      } 
     }    
     book.setImageBitmap(ImageBitmap); 
    } catch (WriterException e) { 
     Log.e("PDF_417", e.getMessage()); 
    } 

Но я продолжаю получать сообщение об ошибке, как это:

Невозможно, чтобы соответствовать сообщению в столбцах

Я продолжаю разбивать сайты, подобные этим: - http://www.racoindustries.com/barcodegenerator/2d/pdf417.aspx - http://generator.onbarcode.com/online-pdf417-barcode-generator.aspx

Когда я кодирую меньше данных, я получаю PDF417 без проблем. Я также не знаю, как установить уровень исправления ошибок.

Я также реализованы методы здесь, чтобы попытаться выяснить, как лучше установить ширину и высоту, без реальной удачи: In a PDF417 barcode where number of columns are fixed, how would I calculate the number of rows required for some text?

В заключение я задаю вопрос:

  1. Как закодировать эти данные как штрих-код PDF417, учитывая, что длина строки может отличаться?
  2. Как установить уровень исправления ошибок?
  3. Каков наилучший способ установить ширину/высоту и количество строк/столбцов?
+1

Вы понимаете, что ваш образец имеет длину 2300 символов, что превышает предел для текста - 2 символа на 900 кодовых слов = 1800 текстовых символов. https://en.wikipedia.org/wiki/PDF417 –

+1

Также может помочь понять пример использования XML, закодированного в PDF417 для отображения на экране Android, то есть кто/что его читает? –

+0

Я этого не осознавал - спасибо! Предполагается, что машина читаема - книга - это «обложка» :) Глупо меня, я просто слушал клиента, когда они его просили ... –

ответ

1

Ваш образец 2300+ символов длинный, что превышает предел для текста - 2 символа x 900 кодовых слов = 1800 текстовых символов. См. https://en.wikipedia.org/wiki/PDF417

Возможно, вам понадобится использовать менее подробный формат, чем XML для передачи данных.

Просто дополнительная информация - вы можете искать «PDF417 сшивание», если вам нужно кодировать большие наборы данных. Все это означает, что у вас будет несколько штрих-кодов PDF для хранения документа и требуется, чтобы читатель собрал их вместе.

Смежные вопросы