[gs-cvs] rev 8611 - trunk/gs/src
ken at ghostscript.com
ken at ghostscript.com
Thu Mar 27 01:37:59 PDT 2008
Author: ken
Date: 2008-03-27 01:37:58 -0700 (Thu, 27 Mar 2008)
New Revision: 8611
Modified:
trunk/gs/src/gdevpdfb.c
trunk/gs/src/gdevpdfo.c
trunk/gs/src/gdevpdfu.c
trunk/gs/src/gdevpdti.c
Log:
Fix (pdfwrite): endstream/endobj not always emitted PDF/A compliant.
Details:
Bug #689755 "Keywords endstream and endobj not always preceded by EOL when generating".
The PDF/A specification mandates that the endstream and endobj operators
are always preceded by an EOL character (in the spec, EOL = carriage return,
linefeed, or carriage return/linefeed pair).
(gdevpdfb.c)
(gdevpdfu.c)
(gdevpdti.c) Ensure all endstream operators are preceded by a '\n' if we
are producing PDF/A.
(gdevpdfo.c) Add '\n' to the end of array and dictionary objects in
cos_array_write and cos_dict_write, if we are producing PDF/A. This
ensures that endobj is always preceded by a EOL as other object types
already conform.
EXPECTED DIFFERENCES:
None.
Modified: trunk/gs/src/gdevpdfb.c
===================================================================
--- trunk/gs/src/gdevpdfb.c 2008-03-26 14:02:02 UTC (rev 8610)
+++ trunk/gs/src/gdevpdfb.c 2008-03-27 08:37:58 UTC (rev 8611)
@@ -569,7 +569,10 @@
sprintf(buf, "/R%ld Do\n", image_id);
pprintd1(s, "%d>>stream\n", strlen(buf));
- pprints1(s, "%sendstream\n", buf);
+ if (pdev->PDFA)
+ pprints1(s, "%s\nendstream\n", buf);
+ else
+ pprints1(s, "%sendstream\n", buf);
pdf_end_resource(pdev);
} else {
length_id = pdf_obj_ref(pdev);
Modified: trunk/gs/src/gdevpdfo.c
===================================================================
--- trunk/gs/src/gdevpdfo.c 2008-03-26 14:02:02 UTC (rev 8610)
+++ trunk/gs/src/gdevpdfo.c 2008-03-27 08:37:58 UTC (rev 8611)
@@ -524,6 +524,8 @@
}
DISCARD(cos_array_reorder(pca, first));
stream_puts(s, "]");
+ if (pdev->PDFA)
+ stream_puts(s, "\n");
return 0;
}
@@ -790,6 +792,8 @@
stream_puts(s, "<<");
cos_elements_write(s, ((const cos_dict_t *)pco)->elements, pdev, false, object_id);
stream_puts(s, ">>");
+ if (pdev->PDFA)
+ stream_puts(s, "\n");
return 0;
}
Modified: trunk/gs/src/gdevpdfu.c
===================================================================
--- trunk/gs/src/gdevpdfu.c 2008-03-26 14:02:02 UTC (rev 8610)
+++ trunk/gs/src/gdevpdfu.c 2008-03-27 08:37:58 UTC (rev 8611)
@@ -689,6 +689,8 @@
pdf_end_encrypt(pdev);
s = pdev->strm;
length = pdf_stell(pdev) - pdev->contents_pos;
+ if (pdev->PDFA)
+ stream_puts(s, "\n");
stream_puts(s, "endstream\n");
pdf_end_obj(pdev);
pdf_open_obj(pdev, pdev->contents_length_id);
Modified: trunk/gs/src/gdevpdti.c
===================================================================
--- trunk/gs/src/gdevpdti.c 2008-03-26 14:02:02 UTC (rev 8610)
+++ trunk/gs/src/gdevpdti.c 2008-03-27 08:37:58 UTC (rev 8611)
@@ -347,6 +347,8 @@
sseek(s, start_pos - 15);
pprintd1(s, "%d", length);
sseek(s, end_pos);
+ if (pdev->PDFA)
+ stream_puts(s, "\n");
stream_puts(s, "endstream\n");
pdf_end_separate(pdev);
return 0;
More information about the gs-cvs
mailing list