762
762
make_xref(xref, xref->last+1, pdfbuf->len);
763
763
g_string_append_printf(pdfbuf,
764
"%d 0 obj\n<< /Length %d /Filter /FlateDecode /Type /Xobject "
764
"%d 0 obj\n<< /Length %zu /Filter /FlateDecode /Type /Xobject "
765
765
"/Subtype /Image /Width %d /Height %d /ColorSpace /DeviceRGB "
766
766
"/BitsPerComponent 8 >> stream\n",
767
767
xref->last, zpix->len, width, height);
863
865
font->num_glyphs_used = num-1;
864
866
if (OpenTTFont(font->filename, 0, &ttfnt) == SF_OK) {
865
if (CreateTTFromTTGlyphs_tomemory(ttfnt, (guint8**)&fontdata, &len, glyphs, encoding, num,
867
if (CreateTTFromTTGlyphs_tomemory(ttfnt, (guint8**)&fontdata, &tt_len, glyphs, encoding, num,
866
868
0, NULL, TTCF_AutoName | TTCF_IncludeOS2) == SF_OK) {
867
869
make_xref(xref, xref->last+1, pdfbuf->len);
868
870
nobj_fontprog = xref->last;
869
871
g_string_append_printf(pdfbuf,
870
"%d 0 obj\n<< /Length %d /Length1 %d >> stream\n",
871
nobj_fontprog, (int)len, (int)len);
872
g_string_append_len(pdfbuf, fontdata, len);
872
"%d 0 obj\n<< /Length %u /Length1 %u >> stream\n",
873
nobj_fontprog, tt_len, tt_len);
874
g_string_append_len(pdfbuf, fontdata, tt_len);
873
875
g_string_append(pdfbuf, "endstream\nendobj\n");
874
876
g_free(fontdata);
879
881
else fallback = TRUE;
881
883
// embed the font file: Type1 case
882
if (g_file_get_contents(font->filename, &fontdata, &len, NULL) && len>=8) {
884
if (g_file_get_contents(font->filename, &fontdata, &t1_len, NULL) && t1_len>=8) {
883
885
if (fontdata[0]==(char)0x80 && fontdata[1]==(char)0x01) {
884
886
is_binary = TRUE;
885
887
len1 = pfb_get_length((unsigned char *)fontdata+2);
898
900
if (*p=='\n' || *p=='\r') p++;
899
901
if (*p=='\n' || *p=='\r') p++;
900
902
len1 = p-fontdata;
901
p = g_strrstr_len(fontdata, len, T1_SEGMENT_3_END);
903
p = g_strrstr_len(fontdata, t1_len, T1_SEGMENT_3_END);
902
904
if (p==NULL) fallback = TRUE;
904
906
// rewind 512 zeros
936
938
make_xref(xref, xref->last+1, pdfbuf->len);
937
939
nobj_fontprog = xref->last;
938
940
g_string_append_printf(pdfbuf,
939
"%d 0 obj\n<< /Length %d /Length1 %d /Length2 %d /Length3 0 >> stream\n",
941
"%d 0 obj\n<< /Length %u /Length1 %u /Length2 %u /Length3 0 >> stream\n",
940
942
nobj_fontprog, len1+len2, len1, len2);
941
943
g_string_append_len(pdfbuf, seg1, len1);
942
944
g_string_append_len(pdfbuf, seg2, len2);
1258
1260
tmpstr = make_pdfprefix(pdfinfo.pages+(pg->bg->file_page_seq-1),
1259
1261
pg->width, pg->height);
1260
1262
g_string_append_printf(pdfbuf,
1261
"%d 0 obj\n<< /Length %d >> stream\n%s\nendstream\nendobj\n",
1263
"%d 0 obj\n<< /Length %zu >> stream\n%s\nendstream\nendobj\n",
1262
1264
n_obj_prefix, tmpstr->len, tmpstr->str);
1263
1265
g_string_free(tmpstr, TRUE);
1264
1266
g_string_prepend(pgstrm, "Q Q Q ");
1277
1279
make_xref(&xref, xref.last+1, pdfbuf->len);
1278
1280
g_string_append_printf(pdfbuf,
1279
"%d 0 obj\n<< /Length %d /Filter /FlateDecode>> stream\n",
1281
"%d 0 obj\n<< /Length %zu /Filter /FlateDecode>> stream\n",
1280
1282
xref.last, zpgstrm->len);
1281
1283
g_string_append_len(pdfbuf, zpgstrm->str, zpgstrm->len);
1282
1284
g_string_free(zpgstrm, TRUE);