attachment-0001

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=us-ascii">
<TITLE>Message</TITLE>

<META content="MSHTML 6.00.2800.1141" name=GENERATOR></HEAD>
<BODY>
<DIV><SPAN class=010362619-06032003><FONT face=Arial color=#0000ff 
size=2>Kari,</FONT></SPAN></DIV>
<DIV><SPAN class=010362619-06032003><FONT face=Arial color=#0000ff 
size=2></FONT></SPAN>&nbsp;</DIV>
<DIV><SPAN class=010362619-06032003><FONT face=Arial color=#0000ff size=2>Yes, 
the stream length should precede the stream, if possible (this is 
allowed).&nbsp; But, in the case where the stream may be long, this may not be 
possible for the Producer.&nbsp; In that case, the length should be an indirect 
object reference to the length that should come immediately after the 
stream.</FONT></SPAN></DIV>
<DIV><SPAN class=010362619-06032003><FONT face=Arial color=#0000ff 
size=2></FONT></SPAN>&nbsp;</DIV>
<DIV><SPAN class=010362619-06032003><FONT face=Arial color=#0000ff size=2>As for 
your idea of scanning for "endstream" that's followed by the size object.&nbsp; 
This still has the same problem as scanning for "endstream" but just has more 
data and a smaller likelihood of occurrence.</FONT></SPAN></DIV>
<DIV><SPAN class=010362619-06032003><FONT face=Arial color=#0000ff 
size=2></FONT></SPAN>&nbsp;</DIV>
<DIV><SPAN class=010362619-06032003><FONT face=Arial color=#0000ff size=2>Given 
that, and what I discussed in my previous e-mail on this subject (to Rob 
Buckley), I think the best approach might be to:</FONT></SPAN></DIV>
<DIV><SPAN class=010362619-06032003><FONT face=Arial color=#0000ff size=2>1) The 
Producer MUST always write the stream length of all 'Content Streams' and 'ICC 
Profile' streams immediately in the object dictionary (before the 
stream).</FONT></SPAN></DIV>
<DIV><SPAN class=010362619-06032003><FONT face=Arial color=#0000ff size=2>2) 
When&nbsp;writing image streams,&nbsp;the Producer&nbsp;MAY either write the 
stream length before or after the stream, as they prefer.</FONT></SPAN></DIV>
<DIV><SPAN class=010362619-06032003><FONT face=Arial color=#0000ff size=2>3) 
When an image stream is length succeeded (indirect object), the Consumer SHOULD 
decode image streams to determine&nbsp;the stream length,&nbsp;when 
possible.&nbsp;&nbsp;But, the Consumer&nbsp;MAY (at their peril) scan for the 
'endstream' marker.</FONT></SPAN></DIV>
<DIV><SPAN class=010362619-06032003><FONT face=Arial color=#0000ff 
size=2></FONT></SPAN>&nbsp;</DIV>
<DIV><SPAN class=010362619-06032003><FONT face=Arial color=#0000ff size=2>How 
does this sound as a solution?</FONT></SPAN></DIV>
<DIV>&nbsp;</DIV>
<DIV>&nbsp;</DIV><!-- Converted from text/plain format -->
<P><FONT size=2>-Rick<BR></FONT></P>
<BLOCKQUOTE dir=ltr 
style="PADDING-LEFT: 5px; MARGIN-LEFT: 5px; BORDER-LEFT: #0000ff 2px solid; MARGIN-RIGHT: 0px">
  <DIV></DIV>
  <DIV class=OutlookMessageHeader lang=en-us dir=ltr align=left><FONT 
  face=Tahoma size=2>-----Original Message-----<BR><B>From:</B> 
  owner-ifx@pwg.org [mailto:owner-ifx@pwg.org] <B>On Behalf Of </B>Poysa, 
  Kari<BR><B>Sent:</B> Thursday, March 06, 2003 7:15 AM<BR><B>To:</B> 'Carl 
  Kugler'<BR><B>Cc:</B> ifx@pwg.org<BR><B>Subject:</B> RE: IFX&gt; PDF/is 
  Issue.<BR><BR></FONT></DIV>
  <DIV><FONT face=Arial color=#0000ff size=2><SPAN class=265555414-06032003>In 
  my opinion the goal should be to write the stream length immediately to the 
  stream dictionary. </SPAN></FONT></DIV>
  <DIV><FONT face=Arial color=#0000ff size=2><SPAN 
  class=265555414-06032003></SPAN></FONT>&nbsp;</DIV>
  <DIV><FONT face=Arial color=#0000ff size=2><SPAN 
  class=265555414-06032003></SPAN></FONT><FONT face=Arial color=#0000ff 
  size=2><SPAN class=265555414-06032003>Also, the likelihood of "endofstream" to 
  exists in the data is small.&nbsp; We could also require that if a low 
  resource streaming writer is not able to add the length directly into the 
  stream directory, then the PDF object for the length MUST immediately follow 
  the stream object. This way, the reader can scan for "endofstream" (but of 
  course only if the length was not in the stream dictionary) and make sure that 
  it is the correct "endofstream" by verifying that it is immediately followed 
  by something that looks like a length object. Could reader implementers 
  comment on this?</SPAN></FONT></DIV>
  <DIV><FONT face=Arial color=#0000ff size=2></FONT>&nbsp;</DIV>
  <DIV><FONT face=Arial color=#0000ff size=2><SPAN class=265555414-06032003>I 
  think introducing an additional filter like ASCII85 just for spotting the end 
  of stream adds unnecessary complexity to both writer and reader, increases 
  file sizes and also requires more memory and processing as the stream cannot 
  be passed directly to a decompressor.</SPAN></FONT></DIV>
  <DIV><FONT face=Arial color=#0000ff size=2></FONT>&nbsp;</DIV>
  <DIV><FONT face=Arial color=#0000ff size=2><SPAN 
  class=265555414-06032003>&nbsp;&nbsp;&nbsp; --- Kari ---</SPAN></FONT></DIV>
  <BLOCKQUOTE dir=ltr style="MARGIN-RIGHT: 0px">
    <DIV class=OutlookMessageHeader dir=ltr align=left><FONT face=Tahoma 
    size=2>-----Original Message-----<BR><B>From:</B> Carl Kugler 
    [mailto:kugler@us.ibm.com]<BR><B>Sent:</B> Wednesday, March 05, 2003 10:50 
    AM<BR><B>Cc:</B> ifx@pwg.org<BR><B>Subject:</B> RE: IFX&gt; PDF/is 
    Issue.<BR><BR></FONT></DIV><BR><FONT face=sans-serif size=2>I like the 
    chunking approach. &nbsp;It is efficient, reliable, and has low overhead for 
    reasonably sized chunks. &nbsp;Also fits well in a typical implementation 
    that writes a chunk of data at a time.</FONT> <BR><BR><FONT face=sans-serif 
    size=2>&nbsp; &nbsp; &nbsp; &nbsp; -Carl</FONT> <BR><BR><BR><BR>
    <TABLE width="100%">
      <TBODY>
      <TR vAlign=top>
        <TD>
        <TD><FONT face=sans-serif size=1><B>"Zehler, Peter" 
          &lt;PZehler@crt.xerox.com&gt;</B></FONT> <BR><FONT face=sans-serif 
          size=1>Sent by: owner-ifx@pwg.org</FONT> 
          <P><FONT face=sans-serif size=1>03/05/2003 05:00 AM</FONT> <BR></P>
        <TD><FONT face=Arial size=1>&nbsp; &nbsp; &nbsp; &nbsp; 
          </FONT><BR><FONT face=sans-serif size=1>&nbsp; &nbsp; &nbsp; &nbsp; 
          To: &nbsp; &nbsp; &nbsp; &nbsp;"'Rick Seeler'" 
          &lt;rseeler@adobe.com&gt;, ifx@pwg.org</FONT> <BR><FONT 
          face=sans-serif size=1>&nbsp; &nbsp; &nbsp; &nbsp; cc: &nbsp; &nbsp; 
          &nbsp; &nbsp;</FONT> <BR><FONT face=sans-serif size=1>&nbsp; &nbsp; 
          &nbsp; &nbsp; Subject: &nbsp; &nbsp; &nbsp; &nbsp;RE: IFX&gt; PDF/is 
          Issue.</FONT> <BR></TD></TR></TBODY></TABLE><BR><BR><BR><FONT face=Arial 
    color=blue size=2>Rick,</FONT> <BR><FONT face=Arial color=blue size=2>Why 
    not just increase the size of the length field signature? &nbsp;Could this 
    be done by the addition of data or comments in the length object or by 
    adding another object? &nbsp;I don't know pdf very well. &nbsp;I don't think 
    we need 0% probability of confusion just a statistically insignificant 
    chance.</FONT> <BR><FONT face=Arial color=blue size=2>Pete</FONT> <BR><FONT 
    face="Times New Roman" size=3>&nbsp;</FONT> 
    <P><FONT face=Impact size=3>Peter Zehler</FONT><FONT face="Times New Roman" 
    size=3> </FONT><FONT face="Times New Roman" color=red 
    size=3><BR>XEROX</FONT><FONT face="Times New Roman" size=3> </FONT><FONT 
    face=Tahoma size=2><BR>Xerox Architecture Center</FONT><FONT 
    face="Times New Roman" size=3> </FONT><FONT face=Arial size=2><BR>Email: 
    PZehler@crt.xerox.com</FONT><FONT face="Times New Roman" size=3> 
    </FONT><FONT face=Arial size=2><BR>Voice: &nbsp; &nbsp;(585) 
    265-8755</FONT><FONT face="Times New Roman" size=3> </FONT><FONT face=Arial 
    size=2><BR>FAX: &nbsp; &nbsp; &nbsp;(585) 265-8871 <BR>US Mail: Peter 
    Zehler</FONT><FONT face="Times New Roman" size=3> </FONT>
    <P><FONT face=Arial size=2>&nbsp; &nbsp; &nbsp; &nbsp; Xerox 
    Corp.</FONT><FONT face="Times New Roman" size=3> </FONT><FONT face=Arial 
    size=2><BR>&nbsp; &nbsp; &nbsp; &nbsp;800 Phillips Rd.</FONT><FONT 
    face="Times New Roman" size=3> </FONT><FONT face=Arial size=2><BR>&nbsp; 
    &nbsp; &nbsp; &nbsp;M/S 128-30E</FONT><FONT face="Times New Roman" size=3> 
    </FONT><FONT face=Arial size=2><BR>&nbsp; &nbsp; &nbsp; &nbsp;Webster NY, 
    14580-9701</FONT><FONT face="Times New Roman" size=3> </FONT>
    <P><FONT face=Tahoma size=2>-----Original Message-----<B><BR>From:</B> Rick 
    Seeler [mailto:rseeler@adobe.com]<B><BR>Sent:</B> Tuesday, March 04, 2003 
    1:29 PM<B><BR>To:</B> ifx@pwg.org<B><BR>Subject:</B> IFX&gt; PDF/is 
    Issue.<BR></FONT><BR><FONT face=Arial size=2>During prototyping of PDF/is 
    the following problem arose:</FONT> <BR><FONT face="Times New Roman" 
    size=3>&nbsp;</FONT> <BR><FONT face=Arial size=2>How does the Consumer know 
    when the end of a data stream (See section 3.2.7 of [pdf]) is reached? 
    &nbsp;Normally, in a PDF, the Consumer would consult the stream length 
    field. &nbsp;The problem here is where to put the length field. &nbsp;If the 
    length were placed before the stream, the Consumer would know how long the 
    stream is. This requires the Producer to know the stream's length before 
    writing it to the Consumer. &nbsp;If, instead, the length were written at 
    the end of the stream, this would solve the Producer's problem but the 
    Consumer would not know how to find the length since they can't identify, 
    100% of the time, where the stream ends and where the length object 
    is.</FONT> <BR><FONT face="Times New Roman" size=3>&nbsp;</FONT> <BR><FONT 
    face=Arial size=2>An example will illustrate:</FONT> <BR><FONT face=Arial 
    size=2>First, the normal case...</FONT> <BR><FONT face="Times New Roman" 
    size=3>&nbsp;</FONT> <BR><FONT face=Arial size=2>stream</FONT> <BR><FONT 
    face=Arial size=2>sdljfiwefnwfubrevurewliysnhr;hgawebfz;h;uwre (lots of 
    binary data here)....</FONT> <BR><FONT face=Arial 
    size=2>84trhdvfyu7wgf4.nbdrgur4uaru4gb</FONT> <BR><FONT face=Arial 
    size=2>endstream</FONT> <BR><FONT face=Arial size=2>12 0 obj</FONT> 
    <BR><FONT face=Arial size=2>3456 &nbsp; &nbsp;&lt;- the length of the 
    previous stream.</FONT> <BR><FONT face=Arial size=2>endobj</FONT> <BR><FONT 
    face="Times New Roman" size=3>&nbsp;</FONT> <BR><FONT face=Arial size=2>But, 
    what if the data looked like this...</FONT> <BR><FONT face="Times New Roman" 
    size=3>&nbsp;</FONT> <BR><FONT face=Arial size=2>stream</FONT> <BR><FONT 
    face=Arial size=2>sdljfiwefnwfubrevurewliysnhr;hgawebfz;h;uwre (lots of 
    binary data here)....</FONT> <BR><FONT face=Arial size=2>endstream &nbsp; 
    &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;- the binary data could have a string 
    of bytes that looked like this.</FONT> <BR><FONT face=Arial 
    size=2>84trhdvfyu7wgf4.nbdrgur4uaru4gb</FONT> <BR><FONT face=Arial 
    size=2>endstream</FONT> <BR><FONT face=Arial size=2>12 0 obj</FONT> 
    <BR><FONT face=Arial size=2>4567 &nbsp; &nbsp;&lt;- the length of the 
    previous stream.</FONT> <BR><FONT face=Arial size=2>endobj</FONT> <BR><FONT 
    face=Arial size=2>&nbsp;</FONT> <BR><FONT face=Arial size=2>Of course, you 
    could look to bytes after the appearance of the word 'endstream' to see if 
    this is really the end of the stream; but you can always come up with a 
    stream that could match your parsing algorithm's expectations (although with 
    decreasing percentage of occurrence).</FONT> <BR><FONT 
    face="Times New Roman" size=3>&nbsp;</FONT> <BR><FONT face=Arial 
    size=2>Possible solutions:</FONT> <BR><FONT face=Arial size=2>1) Write all 
    data using ASCII85 encoding (See Section 3.3.2 of [pdf]). &nbsp;This will 
    increase stream lengths by 25%. &nbsp;ASCII85 has a stream delimiter which 
    would solve this problem -- the end of the stream can be known for certain 
    and the length field can be placed after the stream.</FONT> <BR><FONT 
    face=Arial size=2>2) Require the Producer to write the stream length before 
    any stream (the streams would stay binary). &nbsp;The Producer can use 
    banding to break up large images into small enough chunks so the Producer 
    can cache the stream before sending.</FONT> <BR><FONT face=Arial size=2>3) 
    Offer a combination of 1 &amp; 2. &nbsp;The Producer would cache streams if 
    possible, but may use ASCII85, if necessary.</FONT> <BR><FONT face=Arial 
    size=2>4) Producer must make certain all streams must not contain a series 
    of bytes "\0D\0Aendstream" in the stream data. &nbsp;This is how the spec is 
    defined currently -- but this may be too onerous for the Producer.</FONT> 
    <BR><FONT face="Times New Roman" size=3>&nbsp;</FONT> <BR><FONT face=Arial 
    size=2>Any other ideas? &nbsp;I'm personally leaning toward solution 
    #3.</FONT> <BR><FONT face="Times New Roman" size=3>&nbsp;</FONT> 
    <P><FONT face="Times New Roman" size=2>-Rick</FONT> 
    <P><FONT face="Times New Roman" size=3></FONT>
    <P>
    <P></P></BLOCKQUOTE></BLOCKQUOTE></BODY></HTML>