<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Problem mit XPDF in GCC]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich zerbreche mir schons seit ein paar Tagen den Kopf über ein C++ Problem, kenne C++ sehr wenig, bin mehr VB / <a href="http://VB.net" rel="nofollow">VB.net</a>.</p>
<p>Es geling mit XPDF zu kompilieren (<a href="http://www.foolabs.com/xpdf/download.html" rel="nofollow">http://www.foolabs.com/xpdf/download.html</a>), aber ich benötige eine Erweiterung die mir Path oder Bild Objekte mit einem Marker &quot;Path&quot;/&quot;Bild&quot; erlaubt, wenn ich den Text nach Html extrahiere.</p>
<p>Lexer::getObj in <a href="http://Lexer.cc" rel="nofollow">Lexer.cc</a> liest den Textstream aus (der vorher schon entschlüsselt und dekomprimiert wurde) und gibt ein Objekt nach dem Anderen aus.</p>
<p><a href="http://Gfx.cc" rel="nofollow">Gfx.cc</a> fragt Objekt nach Objekt ab und führt die Opcodes aus (Positionier Cursor, zeiche Liene/Text ...).</p>
<p>BT -&gt; Begin Text<br />
1 0 0 -1 0.58355 25.75842 Tm -&gt; Setze Textmatrix<br />
/F0 15 Tf -&gt; Setze Schriftart und Grösse<br />
&lt;002E0026002E00300033002A0022002D&gt;Tj -&gt; Textstring anzeigen (hex, unicode)<br />
ET -&gt; End Text<br />
0 0.73906 m -&gt; Cursor bewegen<br />
464.88193 0.73906 l -&gt; Linie zeichnen zu</p>
<p>Den Code habe ich mir angeschaut, und wollte <a href="http://Gfx.cc" rel="nofollow">Gfx.cc</a> folgendermassen verändern:</p>
<p>Gleich am Anfang von Gfx::Go 4 Objekte definieren (BT=Begin Text, Tf=Set Textfont, Tj=Write Text, ET=End Text):</p>
<pre><code class="language-cpp">char BTchar[2];
  BTchar[0] = 'B';
  BTchar[1] = 'T';
  BTchar[2] = '\0';
  char *BTptr = &amp;BTchar[0];
  Object BTobj;
  BTobj.initCmd(BTptr);
  Object BTargs[0];
  printf(&quot;BTobj &quot;);
  BTobj.print(stdout);
  printf(&quot;-----------------------------------\n&quot;);
  execOp(&amp;BTobj, BTargs, 0);

  char Tfchar[2];
  Tfchar[0] = 'T';
  Tfchar[1] = 'f';
  Tfchar[2] = '\0';
  char *Tfptr = &amp;Tfchar[0];
  Object Tfobj;
  Tfobj.initCmd(Tfptr);
  Object Tfargs[1];
  Tfargs[0].initName((char*) 'F0\0');
  Tfargs[1].initInt(12);
  printf(&quot;Tfobj &quot;);
  Tfobj.print(stdout);
  printf(&quot;-----------------------------------\n&quot;);
  execOp(&amp;Tfobj, Tfargs, 2);

  char Tjchar[2];
  Tjchar[0] = 'T';
  Tjchar[1] = 'j';
  Tjchar[2] = '\0';
  char *Tjptr = &amp;Tjchar[0];
  Object Tjobj;
  Tjobj.initCmd(Tjptr);
//  Tjobj.initCmd((char) 'Tj\0');
  Object Tjargs[0];
  Tjargs[0].initString(new GString((char*) 'ABC'));
  printf(&quot;Tjobj &quot;);
  Tjobj.print(stdout);
  printf(&quot;-----------------------------------\n&quot;);
  execOp(&amp;Tjobj, Tjargs, 1);

  char ETchar[2];
  ETchar[0] = 'E';
  ETchar[1] = 'T';
  ETchar[2] = '\0';
  char *ETptr = &amp;ETchar[0];
  Object ETobj;
  ETobj.initCmd(ETptr);
  Object ETargs[0];
  printf(&quot;ETobj &quot;);
  ETobj.print(stdout);
  printf(&quot;-----------------------------------\n&quot;);
  execOp(&amp;ETobj, BTargs, 0);
</code></pre>
<p>Ein wenig drunter, vor der Zeile</p>
<pre><code class="language-cpp">execOp(&amp;obj, args, numArgs);
</code></pre>
<p>wollte ich die &quot;l&quot; (kleines L) abfangen, und meine 4 Objekte ausgeben:</p>
<pre><code class="language-cpp">if (strcmp(&quot;l&quot;, obj.getCmd()) == 0) {

  printf(&quot;BTobj &quot;);
  BTobj.print(stdout);
  printf(&quot;-----------------------------------\n&quot;);
  execOp(&amp;BTobj, BTargs, 0);

  printf(&quot;Tfobj &quot;);
  Tfobj.print(stdout);
  printf(&quot;-----------------------------------\n&quot;);
  execOp(&amp;Tfobj, Tfargs, 2);

  printf(&quot;Tjobj &quot;);
  Tjobj.print(stdout);
  printf(&quot;-----------------------------------\n&quot;);
  execOp(&amp;Tjobj, Tjargs, 1);

  printf(&quot;ETobj &quot;);
  ETobj.print(stdout);
  printf(&quot;-----------------------------------\n&quot;);
  execOp(&amp;ETobj, BTargs, 0);

}
</code></pre>
<p>Das Programm kompiliert korrekt, bei der Ausgabe geschieht folgendes:</p>
<p>l 0 716.79<br />
BTobj BT-----------------------------------<br />
Tfobj 12-----------------------------------<br />
Error (484516): Unknown operator ''<br />
Tjobj Tj-----------------------------------<br />
ETobj ET-----------------------------------</p>
<p>Er fängt also korrekt ab, Objekt BT scheint er ohne Probleme zu übergeben, nur bei Tf gibt er ein Fehler &quot;Unknown operator ''&quot; aus, Tf scheint er als 12 (???) in meinem Objekt zu speichern, solch einen Token gibt es ja nicht.</p>
<p>Tj und ET übergibt er wieder ohne Fehler.</p>
<p>Was mache ich falsch, vielen Dank für jede Hilfe!</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/234161/problem-mit-xpdf-in-gcc</link><generator>RSS for Node</generator><lastBuildDate>Thu, 24 Sep 2026 11:54:59 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/234161.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 13 Feb 2009 22:10:09 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Problem mit XPDF in GCC on Fri, 13 Feb 2009 22:10:09 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich zerbreche mir schons seit ein paar Tagen den Kopf über ein C++ Problem, kenne C++ sehr wenig, bin mehr VB / <a href="http://VB.net" rel="nofollow">VB.net</a>.</p>
<p>Es geling mit XPDF zu kompilieren (<a href="http://www.foolabs.com/xpdf/download.html" rel="nofollow">http://www.foolabs.com/xpdf/download.html</a>), aber ich benötige eine Erweiterung die mir Path oder Bild Objekte mit einem Marker &quot;Path&quot;/&quot;Bild&quot; erlaubt, wenn ich den Text nach Html extrahiere.</p>
<p>Lexer::getObj in <a href="http://Lexer.cc" rel="nofollow">Lexer.cc</a> liest den Textstream aus (der vorher schon entschlüsselt und dekomprimiert wurde) und gibt ein Objekt nach dem Anderen aus.</p>
<p><a href="http://Gfx.cc" rel="nofollow">Gfx.cc</a> fragt Objekt nach Objekt ab und führt die Opcodes aus (Positionier Cursor, zeiche Liene/Text ...).</p>
<p>BT -&gt; Begin Text<br />
1 0 0 -1 0.58355 25.75842 Tm -&gt; Setze Textmatrix<br />
/F0 15 Tf -&gt; Setze Schriftart und Grösse<br />
&lt;002E0026002E00300033002A0022002D&gt;Tj -&gt; Textstring anzeigen (hex, unicode)<br />
ET -&gt; End Text<br />
0 0.73906 m -&gt; Cursor bewegen<br />
464.88193 0.73906 l -&gt; Linie zeichnen zu</p>
<p>Den Code habe ich mir angeschaut, und wollte <a href="http://Gfx.cc" rel="nofollow">Gfx.cc</a> folgendermassen verändern:</p>
<p>Gleich am Anfang von Gfx::Go 4 Objekte definieren (BT=Begin Text, Tf=Set Textfont, Tj=Write Text, ET=End Text):</p>
<pre><code class="language-cpp">char BTchar[2];
  BTchar[0] = 'B';
  BTchar[1] = 'T';
  BTchar[2] = '\0';
  char *BTptr = &amp;BTchar[0];
  Object BTobj;
  BTobj.initCmd(BTptr);
  Object BTargs[0];
  printf(&quot;BTobj &quot;);
  BTobj.print(stdout);
  printf(&quot;-----------------------------------\n&quot;);
  execOp(&amp;BTobj, BTargs, 0);

  char Tfchar[2];
  Tfchar[0] = 'T';
  Tfchar[1] = 'f';
  Tfchar[2] = '\0';
  char *Tfptr = &amp;Tfchar[0];
  Object Tfobj;
  Tfobj.initCmd(Tfptr);
  Object Tfargs[1];
  Tfargs[0].initName((char*) 'F0\0');
  Tfargs[1].initInt(12);
  printf(&quot;Tfobj &quot;);
  Tfobj.print(stdout);
  printf(&quot;-----------------------------------\n&quot;);
  execOp(&amp;Tfobj, Tfargs, 2);

  char Tjchar[2];
  Tjchar[0] = 'T';
  Tjchar[1] = 'j';
  Tjchar[2] = '\0';
  char *Tjptr = &amp;Tjchar[0];
  Object Tjobj;
  Tjobj.initCmd(Tjptr);
//  Tjobj.initCmd((char) 'Tj\0');
  Object Tjargs[0];
  Tjargs[0].initString(new GString((char*) 'ABC'));
  printf(&quot;Tjobj &quot;);
  Tjobj.print(stdout);
  printf(&quot;-----------------------------------\n&quot;);
  execOp(&amp;Tjobj, Tjargs, 1);

  char ETchar[2];
  ETchar[0] = 'E';
  ETchar[1] = 'T';
  ETchar[2] = '\0';
  char *ETptr = &amp;ETchar[0];
  Object ETobj;
  ETobj.initCmd(ETptr);
  Object ETargs[0];
  printf(&quot;ETobj &quot;);
  ETobj.print(stdout);
  printf(&quot;-----------------------------------\n&quot;);
  execOp(&amp;ETobj, BTargs, 0);
</code></pre>
<p>Ein wenig drunter, vor der Zeile</p>
<pre><code class="language-cpp">execOp(&amp;obj, args, numArgs);
</code></pre>
<p>wollte ich die &quot;l&quot; (kleines L) abfangen, und meine 4 Objekte ausgeben:</p>
<pre><code class="language-cpp">if (strcmp(&quot;l&quot;, obj.getCmd()) == 0) {

  printf(&quot;BTobj &quot;);
  BTobj.print(stdout);
  printf(&quot;-----------------------------------\n&quot;);
  execOp(&amp;BTobj, BTargs, 0);

  printf(&quot;Tfobj &quot;);
  Tfobj.print(stdout);
  printf(&quot;-----------------------------------\n&quot;);
  execOp(&amp;Tfobj, Tfargs, 2);

  printf(&quot;Tjobj &quot;);
  Tjobj.print(stdout);
  printf(&quot;-----------------------------------\n&quot;);
  execOp(&amp;Tjobj, Tjargs, 1);

  printf(&quot;ETobj &quot;);
  ETobj.print(stdout);
  printf(&quot;-----------------------------------\n&quot;);
  execOp(&amp;ETobj, BTargs, 0);

}
</code></pre>
<p>Das Programm kompiliert korrekt, bei der Ausgabe geschieht folgendes:</p>
<p>l 0 716.79<br />
BTobj BT-----------------------------------<br />
Tfobj 12-----------------------------------<br />
Error (484516): Unknown operator ''<br />
Tjobj Tj-----------------------------------<br />
ETobj ET-----------------------------------</p>
<p>Er fängt also korrekt ab, Objekt BT scheint er ohne Probleme zu übergeben, nur bei Tf gibt er ein Fehler &quot;Unknown operator ''&quot; aus, Tf scheint er als 12 (???) in meinem Objekt zu speichern, solch einen Token gibt es ja nicht.</p>
<p>Tj und ET übergibt er wieder ohne Fehler.</p>
<p>Was mache ich falsch, vielen Dank für jede Hilfe!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1663521</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1663521</guid><dc:creator><![CDATA[pcziausLux]]></dc:creator><pubDate>Fri, 13 Feb 2009 22:10:09 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit XPDF in GCC on Fri, 13 Feb 2009 22:31:13 GMT]]></title><description><![CDATA[<p>BT ist kein &quot;Objekt&quot;, es ist ein Operator (Begin Text). Tj darf nur zwischen<br />
BT und ET vorkommen (Tj = Textshow-Operator). Aus Deinem Quelltext werde ich aber<br />
nicht so ganz schlau ...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1663525</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1663525</guid><dc:creator><![CDATA[Scheppertreiber]]></dc:creator><pubDate>Fri, 13 Feb 2009 22:31:13 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit XPDF in GCC on Fri, 13 Feb 2009 22:45:31 GMT]]></title><description><![CDATA[<p>Hallo Scheppertreiber,</p>
<p>ich definiere gleich am Anfang 4 Objekt, die ich dann der Reihe nach aufrufe, BT, Tf, Tj, ET. Immer wenn der Parser/Lexer auf ein &quot;l&quot; Token trifft, feuert er zuerst mein BT, Tf, Tj und ET Objekte/Operator/Token ab.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1663532</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1663532</guid><dc:creator><![CDATA[pcziausLux]]></dc:creator><pubDate>Fri, 13 Feb 2009 22:45:31 GMT</pubDate></item></channel></rss>