File Coverage

blib/lib/Image/ExifTool/WritePostScript.pl
Criterion Covered Total %
statement 188 292 64.3
branch 99 228 43.4
condition 30 87 34.4
subroutine 6 6 100.0
pod 0 5 0.0
total 323 618 52.2


line stmt bran cond sub pod time code
1             #------------------------------------------------------------------------------
2             # File: WritePostScript.pl
3             #
4             # Description: Write PostScript meta information
5             #
6             # Revisions: 03/03/2006 - P. Harvey Created
7             #
8             # References: (see references in PostScript.pm, plus:)
9             # 1) http://www.adobe.com/products/postscript/pdfs/PLRM.pdf
10             # 2) http://www-cdf.fnal.gov/offline/PostScript/PLRM2.pdf
11             # 3) http://partners.adobe.com/public/developer/en/acrobat/sdk/pdf/pdf_creation_apis_and_specs/pdfmarkReference.pdf
12             # 4) http://www.npes.org/standards/Tools/DCS20Spec.pdf
13             #
14             # Notes: (see NOTES in POD doc below)
15             #------------------------------------------------------------------------------
16              
17             package Image::ExifTool::PostScript;
18              
19 19     19   149 use strict;
  19         56  
  19         75028  
20              
21             # Structure of a DSC PS/EPS document:
22             #
23             # %!PS-Adobe-3.0 [plus " EPSF-3.0" for EPS]
24             #
25             # %%EndComments [optional]
26             # %%BeginXxxx
27             #
28             # %%EndXxxx
29             # %%BeginProlog
30             #
31             # %%EndProlog
32             # %%BeginSetup
33             #
34             # %%EndSetup
35             # %ImageData x x x x [written by Photoshop]
36             # %BeginPhotoshop: xxxx
37             #
38             # %EndPhotosop
39             # %%BeginICCProfile: (name)
40             #
41             # %%EndICCProfile
42             # %begin_xml_code
43             #
44             # %begin_xml_packet: xxxx
45             # </td> </tr> <tr> <td class="h" > <a name="46">46</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> # %end_xml_packet </td> </tr> <tr> <td class="h" > <a name="47">47</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> # <postscript code to add XMP stream to dictionary> </td> </tr> <tr> <td class="h" > <a name="48">48</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> # %end_xml_code </td> </tr> <tr> <td class="h" > <a name="49">49</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> # %%Page: x x [PS only (optional?)] </td> </tr> <tr> <td class="h" > <a name="50">50</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> # <graphics commands> </td> </tr> <tr> <td class="h" > <a name="51">51</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> # %%PageTrailer </td> </tr> <tr> <td class="h" > <a name="52">52</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> # %%Trailer </td> </tr> <tr> <td class="h" > <a name="53">53</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> # <a bit more code to bracket EPS content for distiller> </td> </tr> <tr> <td class="h" > <a name="54">54</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> # %%EOF </td> </tr> <tr> <td class="h" > <a name="55">55</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> &nbsp; </td> </tr> <tr> <td class="h" > <a name="56">56</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> # map of where information is stored in PS image </td> </tr> <tr> <td class="h" > <a name="57">57</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> my %psMap = ( </td> </tr> <tr> <td class="h" > <a name="58">58</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> XMP => 'PostScript', </td> </tr> <tr> <td class="h" > <a name="59">59</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> Photoshop => 'PostScript', </td> </tr> <tr> <td class="h" > <a name="60">60</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> IPTC => 'Photoshop', </td> </tr> <tr> <td class="h" > <a name="61">61</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> EXIFInfo => 'Photoshop', </td> </tr> <tr> <td class="h" > <a name="62">62</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> EXIF => 'EXIFInfo', </td> </tr> <tr> <td class="h" > <a name="63">63</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> IFD0 => 'EXIFInfo', </td> </tr> <tr> <td class="h" > <a name="64">64</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> IFD1 => 'IFD0', </td> </tr> <tr> <td class="h" > <a name="65">65</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> ICC_Profile => 'PostScript', </td> </tr> <tr> <td class="h" > <a name="66">66</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> ExifIFD => 'IFD0', </td> </tr> <tr> <td class="h" > <a name="67">67</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> GPS => 'IFD0', </td> </tr> <tr> <td class="h" > <a name="68">68</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> SubIFD => 'IFD0', </td> </tr> <tr> <td class="h" > <a name="69">69</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> GlobParamIFD => 'IFD0', </td> </tr> <tr> <td class="h" > <a name="70">70</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> PrintIM => 'IFD0', </td> </tr> <tr> <td class="h" > <a name="71">71</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> InteropIFD => 'ExifIFD', </td> </tr> <tr> <td class="h" > <a name="72">72</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> MakerNotes => 'ExifIFD', </td> </tr> <tr> <td class="h" > <a name="73">73</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> ); </td> </tr> <tr> <td class="h" > <a name="74">74</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> &nbsp; </td> </tr> <tr> <td class="h" > <a name="75">75</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> &nbsp; </td> </tr> <tr> <td class="h" > <a name="76">76</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> #------------------------------------------------------------------------------ </td> </tr> <tr> <td class="h" > <a name="77">77</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> # Write XMP directory to file, with begin/end tokens if necessary </td> </tr> <tr> <td class="h" > <a name="78">78</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> # Inputs: 0) outfile ref, 1) flags hash ref, 2-N) data to write </td> </tr> <tr> <td class="h" > <a name="79">79</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> # Returns: true on success </td> </tr> <tr> <td class="h" > <a name="80">80</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> sub WriteXMPDir($$@) </td> </tr> <tr> <td class="h" > <a name="81">81</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> { </td> </tr> <tr> <td class="h" > <a name="82">82</a> </td> <td class="c3" > 1 </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="c3" > <a href="blib-lib-Image-ExifTool-WritePostScript-pl--subroutine.html#82-1"> 1 </a> </td> <td class="c0" > <a href="blib-lib-Image-ExifTool-WritePostScript-pl--subroutine.html#82-1"> 0 </a> </td> <td > 4 </td> <td class="s"> my $outfile = shift; </td> </tr> <tr> <td class="h" > <a name="83">83</a> </td> <td class="c3" > 1 </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 5 </td> <td class="s"> my $flags = shift; </td> </tr> <tr> <td class="h" > <a name="84">84</a> </td> <td class="c3" > 1 </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 3 </td> <td class="s"> my $success = 1; </td> </tr> <tr> <td class="h" > <a name="85">85</a> </td> <td class="c3" > 1 </td> <td class="c0" > <a href="blib-lib-Image-ExifTool-WritePostScript-pl--branch.html#85-1"> 50 </a> </td> <td class="c0" > <a href="blib-lib-Image-ExifTool-WritePostScript-pl--condition.html#85-1"> 50 </a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 14 </td> <td class="s"> Write($outfile, "%begin_xml_code$/") or $success = 0 unless $$flags{WROTE_BEGIN}; </td> </tr> <tr> <td class="h" > <a name="86">86</a> </td> <td class="c3" > 1 </td> <td class="c0" > <a href="blib-lib-Image-ExifTool-WritePostScript-pl--branch.html#86-1"> 50 </a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 5 </td> <td class="s"> Write($outfile, @_) or $success = 0; </td> </tr> <tr> <td class="h" > <a name="87">87</a> </td> <td class="c3" > 1 </td> <td class="c0" > <a href="blib-lib-Image-ExifTool-WritePostScript-pl--branch.html#87-1"> 50 </a> </td> <td class="c0" > <a href="blib-lib-Image-ExifTool-WritePostScript-pl--condition.html#87-1"> 50 </a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 18 </td> <td class="s"> Write($outfile, "%end_xml_code$/") or $success = 0 unless $$flags{WROTE_BEGIN}; </td> </tr> <tr> <td class="h" > <a name="88">88</a> </td> <td class="c3" > 1 </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 5 </td> <td class="s"> return $success; </td> </tr> <tr> <td class="h" > <a name="89">89</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="90">90</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> &nbsp; </td> </tr> <tr> <td class="h" > <a name="91">91</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> #------------------------------------------------------------------------------ </td> </tr> <tr> <td class="h" > <a name="92">92</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> # Write a directory inside a PS document </td> </tr> <tr> <td class="h" > <a name="93">93</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> # Inputs: 0) ExifTool object ref, 1) output file reference, </td> </tr> <tr> <td class="h" > <a name="94">94</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> # 2) Directory name, 3) data reference, 4) flags hash ref </td> </tr> <tr> <td class="h" > <a name="95">95</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> # Returns: 0=error, 1=nothing written, 2=dir written ok </td> </tr> <tr> <td class="h" > <a name="96">96</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> sub WritePSDirectory($$$$$) </td> </tr> <tr> <td class="h" > <a name="97">97</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> { </td> </tr> <tr> <td class="h" > <a name="98">98</a> </td> <td class="c3" > 2 </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="c3" > <a href="blib-lib-Image-ExifTool-WritePostScript-pl--subroutine.html#98-1"> 2 </a> </td> <td class="c0" > <a href="blib-lib-Image-ExifTool-WritePostScript-pl--subroutine.html#98-1"> 0 </a> </td> <td > 9 </td> <td class="s"> my ($et, $outfile, $dirName, $dataPt, $flags) = @_; </td> </tr> <tr> <td class="h" > <a name="99">99</a> </td> <td class="c3" > 2 </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 15 </td> <td class="s"> my $success = 2; </td> </tr> <tr> <td class="h" > <a name="100">100</a> </td> <td class="c3" > 2 </td> <td class="c0" > <a href="blib-lib-Image-ExifTool-WritePostScript-pl--branch.html#100-1"> 50 </a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 8 </td> <td class="s"> my $len = $dataPt ? length($$dataPt) : 0; </td> </tr> <tr> <td class="h" > <a name="101">101</a> </td> <td class="c3" > 2 </td> <td class="c0" > <a href="blib-lib-Image-ExifTool-WritePostScript-pl--branch.html#101-1"> 50 </a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 13 </td> <td class="s"> my $create = $len ? 0 : 1; </td> </tr> <tr> <td class="h" > <a name="102">102</a> </td> <td class="c3" > 2 </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 20 </td> <td class="s"> my %dirInfo = ( </td> </tr> <tr> <td class="h" > <a name="103">103</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> DataPt => $dataPt, </td> </tr> <tr> <td class="h" > <a name="104">104</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> DataLen => $len, </td> </tr> <tr> <td class="h" > <a name="105">105</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> DirStart => 0, </td> </tr> <tr> <td class="h" > <a name="106">106</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> DirLen => $len, </td> </tr> <tr> <td class="h" > <a name="107">107</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> DirName => $dirName, </td> </tr> <tr> <td class="h" > <a name="108">108</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> Parent => 'PostScript', </td> </tr> <tr> <td class="h" > <a name="109">109</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> ); </td> </tr> <tr> <td class="h" > <a name="110">110</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> # Note: $$flags{WROTE_BEGIN} may be 1 for XMP (it is always 0 for </td> </tr> <tr> <td class="h" > <a name="111">111</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> # other dirs, but if 1, the begin/end markers were already written) </td> </tr> <tr> <td class="h" > <a name="112">112</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> # </td> </tr> <tr> <td class="h" > <a name="113">113</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> # prepare necessary postscript code to support embedded XMP </td> </tr> <tr> <td class="h" > <a name="114">114</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> # </td> </tr> <tr> <td class="h" > <a name="115">115</a> </td> <td class="c3" > 2 </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 7 </td> <td class="s"> my ($beforeXMP, $afterXMP, $reportedLen); </td> </tr> <tr> <td class="h" > <a name="116">116</a> </td> <td class="c3" > 2 </td> <td class="c3" > <a href="blib-lib-Image-ExifTool-WritePostScript-pl--branch.html#116-1"> 100 </a> </td> <td class="c0" > <a href="blib-lib-Image-ExifTool-WritePostScript-pl--condition.html#116-1"> 66 </a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 16 </td> <td class="s"> if ($dirName eq 'XMP' and $len) { </td> </tr> <tr> <td class="h" > <a name="117">117</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> # isolate the XMP </td> </tr> <tr> <td class="h" > <a name="118">118</a> </td> <td class="c3" > 1 </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 14 </td> <td class="s"> pos($$dataPt) = 0; </td> </tr> <tr> <td class="h" > <a name="119">119</a> </td> <td class="c3" > 1 </td> <td class="c0" > <a href="blib-lib-Image-ExifTool-WritePostScript-pl--branch.html#119-1"> 50 </a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 43 </td> <td class="s"> unless ($$dataPt =~ /(.*)(<\?xpacket begin=.{7,13}W5M0MpCehiHzreSzNTczkc9d)/sg) { </td> </tr> <tr> <td class="h" > <a name="120">120</a> </td> <td class="c0" > <a href="#121"> 0 </a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 0 </td> <td class="s"> $et->Warn('No XMP packet start'); </td> </tr> <tr> <td class="h" > <a name="121">121</a> </td> <td class="c0" > <a href="#127"> 0 </a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 0 </td> <td class="s"> return WriteXMPDir($outfile, $flags, $$dataPt); </td> </tr> <tr> <td class="h" > <a name="122">122</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="123">123</a> </td> <td class="c3" > 1 </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 5 </td> <td class="s"> $beforeXMP = $1; </td> </tr> <tr> <td class="h" > <a name="124">124</a> </td> <td class="c3" > 1 </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 5 </td> <td class="s"> my $xmp = $2; </td> </tr> <tr> <td class="h" > <a name="125">125</a> </td> <td class="c3" > 1 </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 4 </td> <td class="s"> my $p1 = pos($$dataPt); </td> </tr> <tr> <td class="h" > <a name="126">126</a> </td> <td class="c3" > 1 </td> <td class="c0" > <a href="blib-lib-Image-ExifTool-WritePostScript-pl--branch.html#126-1"> 50 </a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 13 </td> <td class="s"> unless ($$dataPt =~ m{<\?xpacket end=.(w|r).\?>}sg) { </td> </tr> <tr> <td class="h" > <a name="127">127</a> </td> <td class="c0" > <a href="#128"> 0 </a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 0 </td> <td class="s"> $et->Warn('No XMP packet end'); </td> </tr> <tr> <td class="h" > <a name="128">128</a> </td> <td class="c0" > <a href="#151"> 0 </a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 0 </td> <td class="s"> return WriteXMPDir($outfile, $flags, $$dataPt); </td> </tr> <tr> <td class="h" > <a name="129">129</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="130">130</a> </td> <td class="c3" > 1 </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 3 </td> <td class="s"> my $p2 = pos($$dataPt); </td> </tr> <tr> <td class="h" > <a name="131">131</a> </td> <td class="c3" > 1 </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 22 </td> <td class="s"> $xmp .= substr($$dataPt, $p1, $p2-$p1); </td> </tr> <tr> <td class="h" > <a name="132">132</a> </td> <td class="c3" > 1 </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 5 </td> <td class="s"> $afterXMP = substr($$dataPt, $p2); </td> </tr> <tr> <td class="h" > <a name="133">133</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> # determine if we can adjust the XMP size </td> </tr> <tr> <td class="h" > <a name="134">134</a> </td> <td class="c3" > 1 </td> <td class="c0" > <a href="blib-lib-Image-ExifTool-WritePostScript-pl--branch.html#134-1"> 50 </a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 10 </td> <td class="s"> if ($beforeXMP =~ /%begin_xml_packet: (\d+)/s) { </td> </tr> <tr> <td class="h" > <a name="135">135</a> </td> <td class="c3" > 1 </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 3 </td> <td class="s"> $reportedLen = $1; </td> </tr> <tr> <td class="h" > <a name="136">136</a> </td> <td class="c3" > 1 </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 18 </td> <td class="s"> my @matches= ($beforeXMP =~ /\b$reportedLen\b/sg); </td> </tr> <tr> <td class="h" > <a name="137">137</a> </td> <td class="c3" > 1 </td> <td class="c0" > <a href="blib-lib-Image-ExifTool-WritePostScript-pl--branch.html#137-1"> 50 </a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 6 </td> <td class="s"> undef $reportedLen unless @matches == 2; </td> </tr> <tr> <td class="h" > <a name="138">138</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="139">139</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> # must edit in place if we can't reliably change the XMP length </td> </tr> <tr> <td class="h" > <a name="140">140</a> </td> <td class="c3" > 1 </td> <td class="c0" > <a href="blib-lib-Image-ExifTool-WritePostScript-pl--branch.html#140-1"> 50 </a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 7 </td> <td class="s"> $dirInfo{InPlace} = 1 unless $reportedLen; </td> </tr> <tr> <td class="h" > <a name="141">141</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> # process XMP only </td> </tr> <tr> <td class="h" > <a name="142">142</a> </td> <td class="c3" > 1 </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 8 </td> <td class="s"> $dirInfo{DataLen} = $dirInfo{DirLen} = length $xmp; </td> </tr> <tr> <td class="h" > <a name="143">143</a> </td> <td class="c3" > 1 </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 4 </td> <td class="s"> $dirInfo{DataPt} = \$xmp; </td> </tr> <tr> <td class="h" > <a name="144">144</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="145">145</a> </td> <td class="c3" > 2 </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 17 </td> <td class="s"> my $tagTablePtr = Image::ExifTool::GetTagTable("Image::ExifTool::${dirName}::Main"); </td> </tr> <tr> <td class="h" > <a name="146">146</a> </td> <td class="c3" > 2 </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 15 </td> <td class="s"> my $val = $et->WriteDirectory(\%dirInfo, $tagTablePtr); </td> </tr> <tr> <td class="h" > <a name="147">147</a> </td> <td class="c3" > 2 </td> <td class="c0" > <a href="blib-lib-Image-ExifTool-WritePostScript-pl--branch.html#147-1"> 50 </a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 9 </td> <td class="s"> if (defined $val) { </td> </tr> <tr> <td class="h" > <a >&nbsp;</a> </td> <td > &nbsp; </td> <td class="c0" > <a href="blib-lib-Image-ExifTool-WritePostScript-pl--branch.html#-2"> 0 </a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> &nbsp; </td> </tr> <tr> <td class="h" > <a name="148">148</a> </td> <td class="c3" > 2 </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 7 </td> <td class="s"> $dataPt = \$val; # use modified directory </td> </tr> <tr> <td class="h" > <a name="149">149</a> </td> <td class="c3" > 2 </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 4 </td> <td class="s"> $len = length $val; </td> </tr> <tr> <td class="h" > <a name="150">150</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> } elsif ($dirName eq 'XMP') { </td> </tr> <tr> <td class="h" > <a name="151">151</a> </td> <td class="c0" > <a href="#153"> 0 </a> </td> <td class="c0" > <a href="blib-lib-Image-ExifTool-WritePostScript-pl--branch.html#151-1"> 0 </a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 0 </td> <td class="s"> return 1 unless $len; </td> </tr> <tr> <td class="h" > <a name="152">152</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> # just write the original XMP </td> </tr> <tr> <td class="h" > <a name="153">153</a> </td> <td class="c0" > <a href="#156"> 0 </a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 0 </td> <td class="s"> return WriteXMPDir($outfile, $flags, $$dataPt); </td> </tr> <tr> <td class="h" > <a name="154">154</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="155">155</a> </td> <td class="c3" > 2 </td> <td class="c0" > <a href="blib-lib-Image-ExifTool-WritePostScript-pl--branch.html#155-1"> 50 </a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 8 </td> <td class="s"> unless ($len) { </td> </tr> <tr> <td class="h" > <a name="156">156</a> </td> <td class="c0" > <a href="#159"> 0 </a> </td> <td class="c0" > <a href="blib-lib-Image-ExifTool-WritePostScript-pl--branch.html#156-1"> 0 </a> </td> <td class="c0" > <a href="blib-lib-Image-ExifTool-WritePostScript-pl--condition.html#156-1"> 0 </a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 0 </td> <td class="s"> return 1 if $create or $dirName ne 'XMP'; # nothing to create </td> </tr> <tr> <td class="h" > <a name="157">157</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> # it would be really difficult to delete the XMP, </td> </tr> <tr> <td class="h" > <a name="158">158</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> # so instead we write a blank XMP record </td> </tr> <tr> <td class="h" > <a name="159">159</a> </td> <td class="c0" > <a href="#164"> 0 </a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 0 </td> <td class="s"> $val = <<EMPTY_XMP; </td> </tr> <tr> <td class="h" > <a name="160">160</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> <?xpacket begin='\xef\xbb\xbf' id='W5M0MpCehiHzreSzNTczkc9d'?> </td> </tr> <tr> <td class="h" > <a name="161">161</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> <x:xmpmeta xmlns:x='adobe:ns:meta/' x:xmptk='Image::ExifTool $Image::ExifTool::VERSION'> </td> </tr> <tr> <td class="h" > <a name="162">162</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> </x:xmpmeta> </td> </tr> <tr> <td class="h" > <a name="163">163</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> EMPTY_XMP </td> </tr> <tr> <td class="h" > <a name="164">164</a> </td> <td class="c0" > <a href="#165"> 0 </a> </td> <td class="c0" > <a href="blib-lib-Image-ExifTool-WritePostScript-pl--branch.html#164-1"> 0 </a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 0 </td> <td class="s"> $val .= ((' ' x 100) . "\n") x 24 unless $$et{OPTIONS}{Compact}{NoPadding}; </td> </tr> <tr> <td class="h" > <a name="165">165</a> </td> <td class="c0" > <a href="#166"> 0 </a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 0 </td> <td class="s"> $val .= q{<?xpacket end='w'?>}; </td> </tr> <tr> <td class="h" > <a name="166">166</a> </td> <td class="c0" > <a href="#167"> 0 </a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 0 </td> <td class="s"> $dataPt = \$val; </td> </tr> <tr> <td class="h" > <a name="167">167</a> </td> <td class="c0" > <a href="#175"> 0 </a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 0 </td> <td class="s"> $len = length $val; </td> </tr> <tr> <td class="h" > <a name="168">168</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="169">169</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> # </td> </tr> <tr> <td class="h" > <a name="170">170</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> # write XMP directory </td> </tr> <tr> <td class="h" > <a name="171">171</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> # </td> </tr> <tr> <td class="h" > <a name="172">172</a> </td> <td class="c3" > 2 </td> <td class="c3" > <a href="blib-lib-Image-ExifTool-WritePostScript-pl--branch.html#172-1"> 100 </a> </td> <td class="c0" > <a href="blib-lib-Image-ExifTool-WritePostScript-pl--condition.html#172-1"> 33 </a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 19 </td> <td class="s"> if ($dirName eq 'XMP') { </td> </tr> <tr> <td class="h" > <a >&nbsp;</a> </td> <td > &nbsp; </td> <td class="c0" > <a href="blib-lib-Image-ExifTool-WritePostScript-pl--branch.html#-2"> 50 </a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> &nbsp; </td> </tr> <tr> <td class="h" > <a name="173">173</a> </td> <td class="c3" > 1 </td> <td class="c0" > <a href="blib-lib-Image-ExifTool-WritePostScript-pl--branch.html#173-1"> 50 </a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 6 </td> <td class="s"> if ($create) { </td> </tr> <tr> <td class="h" > <a name="174">174</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> # create necessary PS/EPS code to support XMP </td> </tr> <tr> <td class="h" > <a name="175">175</a> </td> <td class="c0" > <a href="#194"> 0 </a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 0 </td> <td class="s"> $beforeXMP = <<HDR_END; </td> </tr> <tr> <td class="h" > <a name="176">176</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> /pdfmark where {pop true} {false} ifelse </td> </tr> <tr> <td class="h" > <a name="177">177</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> /currentdistillerparams where {pop currentdistillerparams </td> </tr> <tr> <td class="h" > <a name="178">178</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> /CoreDistVersion get 5000 ge } {false} ifelse </td> </tr> <tr> <td class="h" > <a name="179">179</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> and not {userdict /pdfmark /cleartomark load put} if </td> </tr> <tr> <td class="h" > <a name="180">180</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> [/NamespacePush pdfmark </td> </tr> <tr> <td class="h" > <a name="181">181</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> [/_objdef {exiftool_metadata_stream} /type /stream /OBJ pdfmark </td> </tr> <tr> <td class="h" > <a name="182">182</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> [{exiftool_metadata_stream} 2 dict begin /Type /Metadata def </td> </tr> <tr> <td class="h" > <a name="183">183</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> /Subtype /XML def currentdict end /PUT pdfmark </td> </tr> <tr> <td class="h" > <a name="184">184</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> /MetadataString $len string def % exact length of metadata </td> </tr> <tr> <td class="h" > <a name="185">185</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> /TempString 100 string def </td> </tr> <tr> <td class="h" > <a name="186">186</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> /ConsumeMetadata { </td> </tr> <tr> <td class="h" > <a name="187">187</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> currentfile TempString readline pop pop </td> </tr> <tr> <td class="h" > <a name="188">188</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> currentfile MetadataString readstring pop pop </td> </tr> <tr> <td class="h" > <a name="189">189</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> } bind def </td> </tr> <tr> <td class="h" > <a name="190">190</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> ConsumeMetadata </td> </tr> <tr> <td class="h" > <a name="191">191</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> %begin_xml_packet: $len </td> </tr> <tr> <td class="h" > <a name="192">192</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> HDR_END </td> </tr> <tr> <td class="h" > <a name="193">193</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> # note: use q() to get necessary linefeed before %end_xml_packet </td> </tr> <tr> <td class="h" > <a name="194">194</a> </td> <td class="c0" > <a href="#198"> 0 </a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 0 </td> <td class="s"> $afterXMP = q( </td> </tr> <tr> <td class="h" > <a name="195">195</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> %end_xml_packet </td> </tr> <tr> <td class="h" > <a name="196">196</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> [{exiftool_metadata_stream} MetadataString /PUT pdfmark </td> </tr> <tr> <td class="h" > <a name="197">197</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> ); </td> </tr> <tr> <td class="h" > <a name="198">198</a> </td> <td class="c0" > <a href="#199"> 0 </a> </td> <td class="c0" > <a href="blib-lib-Image-ExifTool-WritePostScript-pl--branch.html#198-1"> 0 </a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 0 </td> <td class="s"> if ($$flags{EPS}) { </td> </tr> <tr> <td class="h" > <a name="199">199</a> </td> <td class="c0" > <a href="#205"> 0 </a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 0 </td> <td class="s"> $afterXMP .= <<EPS_AFTER; </td> </tr> <tr> <td class="h" > <a name="200">200</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> [/Document 1 dict begin </td> </tr> <tr> <td class="h" > <a name="201">201</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> /Metadata {exiftool_metadata_stream} def currentdict end /BDC pdfmark </td> </tr> <tr> <td class="h" > <a name="202">202</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> [/NamespacePop pdfmark </td> </tr> <tr> <td class="h" > <a name="203">203</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> EPS_AFTER </td> </tr> <tr> <td class="h" > <a name="204">204</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> # write this at end of file </td> </tr> <tr> <td class="h" > <a name="205">205</a> </td> <td class="c0" > <a href="#207"> 0 </a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 0 </td> <td class="s"> $$flags{TRAILER} = "[/EMC pdfmark$/"; </td> </tr> <tr> <td class="h" > <a name="206">206</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> } else { # PS </td> </tr> <tr> <td class="h" > <a name="207">207</a> </td> <td class="c0" > <a href="#212"> 0 </a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 0 </td> <td class="s"> $afterXMP .= <<PS_AFTER; </td> </tr> <tr> <td class="h" > <a name="208">208</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> [{Catalog} {exiftool_metadata_stream} /Metadata pdfmark </td> </tr> <tr> <td class="h" > <a name="209">209</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> [/NamespacePop pdfmark </td> </tr> <tr> <td class="h" > <a name="210">210</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> PS_AFTER </td> </tr> <tr> <td class="h" > <a name="211">211</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="212">212</a> </td> <td class="c0" > <a href="#213"> 0 </a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 0 </td> <td class="s"> $beforeXMP =~ s{\n}{$/}sg; # use proper newline characters </td> </tr> <tr> <td class="h" > <a name="213">213</a> </td> <td class="c0" > <a href="#228"> 0 </a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 0 </td> <td class="s"> $afterXMP =~ s{\n}{$/}sg; </td> </tr> <tr> <td class="h" > <a name="214">214</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> } else { </td> </tr> <tr> <td class="h" > <a name="215">215</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> # replace xmp size in PS code </td> </tr> <tr> <td class="h" > <a name="216">216</a> </td> <td class="c3" > 1 </td> <td class="c0" > <a href="blib-lib-Image-ExifTool-WritePostScript-pl--branch.html#216-1"> 50 </a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 28 </td> <td class="s"> $reportedLen and $beforeXMP =~ s/\b$reportedLen\b/$len/sg; </td> </tr> <tr> <td class="h" > <a name="217">217</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="218">218</a> </td> <td class="c3" > 1 </td> <td class="c0" > <a href="blib-lib-Image-ExifTool-WritePostScript-pl--branch.html#218-1"> 50 </a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 27 </td> <td class="s"> WriteXMPDir($outfile, $flags, $beforeXMP, $$dataPt, $afterXMP) or $success = 0; </td> </tr> <tr> <td class="h" > <a name="219">219</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> # </td> </tr> <tr> <td class="h" > <a name="220">220</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> # Write Photoshop or ICC_Profile directory </td> </tr> <tr> <td class="h" > <a name="221">221</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> # </td> </tr> <tr> <td class="h" > <a name="222">222</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> } elsif ($dirName eq 'Photoshop' or $dirName eq 'ICC_Profile') { </td> </tr> <tr> <td class="h" > <a name="223">223</a> </td> <td class="c3" > 1 </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 3 </td> <td class="s"> my ($startToken, $endToken); </td> </tr> <tr> <td class="h" > <a name="224">224</a> </td> <td class="c3" > 1 </td> <td class="c0" > <a href="blib-lib-Image-ExifTool-WritePostScript-pl--branch.html#224-1"> 50 </a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 4 </td> <td class="s"> if ($dirName eq 'Photoshop') { </td> </tr> <tr> <td class="h" > <a name="225">225</a> </td> <td class="c3" > 1 </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 4 </td> <td class="s"> $startToken = "%BeginPhotoshop: $len"; </td> </tr> <tr> <td class="h" > <a name="226">226</a> </td> <td class="c3" > 1 </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 2 </td> <td class="s"> $endToken = '%EndPhotoshop'; </td> </tr> <tr> <td class="h" > <a name="227">227</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> } else { </td> </tr> <tr> <td class="h" > <a name="228">228</a> </td> <td class="c0" > <a href="#229"> 0 </a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 0 </td> <td class="s"> $startToken = '%%BeginICCProfile: (Photoshop Profile) -1 Hex'; </td> </tr> <tr> <td class="h" > <a name="229">229</a> </td> <td class="c0" > <a href="#242"> 0 </a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 0 </td> <td class="s"> $endToken = '%%EndICCProfile'; </td> </tr> <tr> <td class="h" > <a name="230">230</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="231">231</a> </td> <td class="c3" > 1 </td> <td class="c0" > <a href="blib-lib-Image-ExifTool-WritePostScript-pl--branch.html#231-1"> 50 </a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 14 </td> <td class="s"> Write($outfile, $startToken, $/) or $success = 0; </td> </tr> <tr> <td class="h" > <a name="232">232</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> # write as an ASCII-hex comment </td> </tr> <tr> <td class="h" > <a name="233">233</a> </td> <td class="c3" > 1 </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 3 </td> <td class="s"> my $i; </td> </tr> <tr> <td class="h" > <a name="234">234</a> </td> <td class="c3" > 1 </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 3 </td> <td class="s"> my $wid = 32; </td> </tr> <tr> <td class="h" > <a name="235">235</a> </td> <td class="c3" > 1 </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 6 </td> <td class="s"> for ($i=0; $i<$len; $i+=$wid) { </td> </tr> <tr> <td class="h" > <a name="236">236</a> </td> <td class="c3" > 40 </td> <td class="c3" > <a href="blib-lib-Image-ExifTool-WritePostScript-pl--branch.html#236-1"> 100 </a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 85 </td> <td class="s"> $wid > $len-$i and $wid = $len-$i; </td> </tr> <tr> <td class="h" > <a name="237">237</a> </td> <td class="c3" > 40 </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 66 </td> <td class="s"> my $dat = substr($$dataPt, $i, $wid); </td> </tr> <tr> <td class="h" > <a name="238">238</a> </td> <td class="c3" > 40 </td> <td class="c0" > <a href="blib-lib-Image-ExifTool-WritePostScript-pl--branch.html#238-1"> 50 </a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 113 </td> <td class="s"> Write($outfile, "% ", uc(unpack('H*',$dat)), $/) or $success = 0; </td> </tr> <tr> <td class="h" > <a name="239">239</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="240">240</a> </td> <td class="c3" > 1 </td> <td class="c0" > <a href="blib-lib-Image-ExifTool-WritePostScript-pl--branch.html#240-1"> 50 </a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 5 </td> <td class="s"> Write($outfile, $endToken, $/) or $success = 0; </td> </tr> <tr> <td class="h" > <a name="241">241</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> } else { </td> </tr> <tr> <td class="h" > <a name="242">242</a> </td> <td class="c0" > <a href="#&nbsp;"> 0 </a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 0 </td> <td class="s"> $et->Warn("Can't write PS directory $dirName"); </td> </tr> <tr> <td class="h" > <a name="243">243</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="244">244</a> </td> <td class="c3" > 2 </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 5 </td> <td class="s"> undef $val; </td> </tr> <tr> <td class="h" > <a name="245">245</a> </td> <td class="c3" > 2 </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 15 </td> <td class="s"> return $success; </td> </tr> <tr> <td class="h" > <a name="246">246</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="247">247</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> &nbsp; </td> </tr> <tr> <td class="h" > <a name="248">248</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> #------------------------------------------------------------------------------ </td> </tr> <tr> <td class="h" > <a name="249">249</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> # Encode postscript tag/value </td> </tr> <tr> <td class="h" > <a name="250">250</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> # Inputs: 0) tag ID, 1) value </td> </tr> <tr> <td class="h" > <a name="251">251</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> # Returns: postscript comment </td> </tr> <tr> <td class="h" > <a name="252">252</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> # - adds brackets, escapes special characters, and limits line length </td> </tr> <tr> <td class="h" > <a name="253">253</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> sub EncodeTag($$) </td> </tr> <tr> <td class="h" > <a name="254">254</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> { </td> </tr> <tr> <td class="h" > <a name="255">255</a> </td> <td class="c3" > 3 </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="c3" > <a href="blib-lib-Image-ExifTool-WritePostScript-pl--subroutine.html#255-1"> 3 </a> </td> <td class="c0" > <a href="blib-lib-Image-ExifTool-WritePostScript-pl--subroutine.html#255-1"> 0 </a> </td> <td > 11 </td> <td class="s"> my ($tag, $val) = @_; </td> </tr> <tr> <td class="h" > <a name="256">256</a> </td> <td class="c3" > 3 </td> <td class="c0" > <a href="blib-lib-Image-ExifTool-WritePostScript-pl--branch.html#256-1"> 50 </a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 12 </td> <td class="s"> unless ($val =~ /^\d+$/) { </td> </tr> <tr> <td class="h" > <a name="257">257</a> </td> <td class="c3" > 3 </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 9 </td> <td class="s"> $val =~ s/([()\\])/\\$1/g; # escape brackets and backslashes </td> </tr> <tr> <td class="h" > <a name="258">258</a> </td> <td class="c3" > 3 </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 10 </td> <td class="s"> $val =~ s/\n/\\n/g; # escape newlines </td> </tr> <tr> <td class="h" > <a name="259">259</a> </td> <td class="c3" > 3 </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 8 </td> <td class="s"> $val =~ s/\r/\\r/g; # escape carriage returns </td> </tr> <tr> <td class="h" > <a name="260">260</a> </td> <td class="c3" > 3 </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 5 </td> <td class="s"> $val =~ s/\t/\\t/g; # escape tabs </td> </tr> <tr> <td class="h" > <a name="261">261</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> # use octal escape codes for other control characters </td> </tr> <tr> <td class="h" > <a name="262">262</a> </td> <td class="c3" > 3 </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 7 </td> <td class="s"> $val =~ s/([\x00-\x1f\x7f\xff])/sprintf("\\%.3o",ord($1))/ge; </td> </tr> <tr> <td class="h" > <a >&nbsp;</a> </td> <td class="c0" > <a href="#271"> 0 </a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 0 </td> <td class="s"> &nbsp; </td> </tr> <tr> <td class="h" > <a name="263">263</a> </td> <td class="c3" > 3 </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 10 </td> <td class="s"> $val = "($val)"; </td> </tr> <tr> <td class="h" > <a name="264">264</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="265">265</a> </td> <td class="c3" > 3 </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 9 </td> <td class="s"> my $line = "%%$tag: $val"; </td> </tr> <tr> <td class="h" > <a name="266">266</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> # postscript line limit is 255 characters (but it seems that </td> </tr> <tr> <td class="h" > <a name="267">267</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> # the limit may be 254 characters if the DOS CR/LF is used) </td> </tr> <tr> <td class="h" > <a name="268">268</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> # --> split if necessary using continuation comment "%%+" </td> </tr> <tr> <td class="h" > <a name="269">269</a> </td> <td class="c3" > 3 </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 5 </td> <td class="s"> my $n; </td> </tr> <tr> <td class="h" > <a name="270">270</a> </td> <td class="c3" > 3 </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 15 </td> <td class="s"> for ($n=254; length($line)>$n; $n+=254+length($/)) { </td> </tr> <tr> <td class="h" > <a name="271">271</a> </td> <td class="c0" > <a href="#328"> 0 </a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 0 </td> <td class="s"> substr($line, $n, 0) = "$/%%+"; </td> </tr> <tr> <td class="h" > <a name="272">272</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="273">273</a> </td> <td class="c3" > 3 </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 16 </td> <td class="s"> return $line . $/; </td> </tr> <tr> <td class="h" > <a name="274">274</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="275">275</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> &nbsp; </td> </tr> <tr> <td class="h" > <a name="276">276</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> #------------------------------------------------------------------------------ </td> </tr> <tr> <td class="h" > <a name="277">277</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> # Write new tags information in comments section </td> </tr> <tr> <td class="h" > <a name="278">278</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> # Inputs: 0) ExifTool object ref, 1) output file ref, 2) reference to new tag hash </td> </tr> <tr> <td class="h" > <a name="279">279</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> # Returns: true on success </td> </tr> <tr> <td class="h" > <a name="280">280</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> sub WriteNewTags($$$) </td> </tr> <tr> <td class="h" > <a name="281">281</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> { </td> </tr> <tr> <td class="h" > <a name="282">282</a> </td> <td class="c3" > 1 </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="c3" > <a href="blib-lib-Image-ExifTool-WritePostScript-pl--subroutine.html#282-1"> 1 </a> </td> <td class="c0" > <a href="blib-lib-Image-ExifTool-WritePostScript-pl--subroutine.html#282-1"> 0 </a> </td> <td > 4 </td> <td class="s"> my ($et, $outfile, $newTags) = @_; </td> </tr> <tr> <td class="h" > <a name="283">283</a> </td> <td class="c3" > 1 </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 4 </td> <td class="s"> my $success = 1; </td> </tr> <tr> <td class="h" > <a name="284">284</a> </td> <td class="c3" > 1 </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 2 </td> <td class="s"> my $tag; </td> </tr> <tr> <td class="h" > <a name="285">285</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> &nbsp; </td> </tr> <tr> <td class="h" > <a name="286">286</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> # get XMP hint and remove from tags hash </td> </tr> <tr> <td class="h" > <a name="287">287</a> </td> <td class="c3" > 1 </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 7 </td> <td class="s"> my $xmpHint = $$newTags{XMP_HINT}; </td> </tr> <tr> <td class="h" > <a name="288">288</a> </td> <td class="c3" > 1 </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 4 </td> <td class="s"> delete $$newTags{XMP_HINT}; </td> </tr> <tr> <td class="h" > <a name="289">289</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> &nbsp; </td> </tr> <tr> <td class="h" > <a name="290">290</a> </td> <td class="c3" > 1 </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 12 </td> <td class="s"> foreach $tag (sort keys %$newTags) { </td> </tr> <tr> <td class="h" > <a name="291">291</a> </td> <td class="c3" > 1 </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 3 </td> <td class="s"> my $tagInfo = $$newTags{$tag}; </td> </tr> <tr> <td class="h" > <a name="292">292</a> </td> <td class="c3" > 1 </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 6 </td> <td class="s"> my $nvHash = $et->GetNewValueHash($tagInfo); </td> </tr> <tr> <td class="h" > <a name="293">293</a> </td> <td class="c3" > 1 </td> <td class="c0" > <a href="blib-lib-Image-ExifTool-WritePostScript-pl--branch.html#293-1"> 50 </a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 15 </td> <td class="s"> next unless $$nvHash{IsCreating}; </td> </tr> <tr> <td class="h" > <a name="294">294</a> </td> <td class="c3" > 1 </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 7 </td> <td class="s"> my $val = $et->GetNewValue($nvHash); </td> </tr> <tr> <td class="h" > <a name="295">295</a> </td> <td class="c3" > 1 </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 12 </td> <td class="s"> $et->VerboseValue("+ PostScript:$$tagInfo{Name}", $val); </td> </tr> <tr> <td class="h" > <a name="296">296</a> </td> <td class="c3" > 1 </td> <td class="c0" > <a href="blib-lib-Image-ExifTool-WritePostScript-pl--branch.html#296-1"> 50 </a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 9 </td> <td class="s"> Write($outfile, EncodeTag($tag, $val)) or $success = 0; </td> </tr> <tr> <td class="h" > <a name="297">297</a> </td> <td class="c3" > 1 </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 4 </td> <td class="s"> ++$$et{CHANGED}; </td> </tr> <tr> <td class="h" > <a name="298">298</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="299">299</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> # write XMP hint if necessary </td> </tr> <tr> <td class="h" > <a name="300">300</a> </td> <td class="c3" > 1 </td> <td class="c0" > <a href="blib-lib-Image-ExifTool-WritePostScript-pl--branch.html#300-1"> 50 </a> </td> <td class="c0" > <a href="blib-lib-Image-ExifTool-WritePostScript-pl--condition.html#300-1"> 50 </a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 8 </td> <td class="s"> Write($outfile, "%ADO_ContainsXMP: MainFirst$/") or $success = 0 if $xmpHint; </td> </tr> <tr> <td class="h" > <a name="301">301</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> &nbsp; </td> </tr> <tr> <td class="h" > <a name="302">302</a> </td> <td class="c3" > 1 </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 7 </td> <td class="s"> %$newTags = (); # all done with new tags </td> </tr> <tr> <td class="h" > <a name="303">303</a> </td> <td class="c3" > 1 </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 4 </td> <td class="s"> return $success; </td> </tr> <tr> <td class="h" > <a name="304">304</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="305">305</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> &nbsp; </td> </tr> <tr> <td class="h" > <a name="306">306</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> #------------------------------------------------------------------------------ </td> </tr> <tr> <td class="h" > <a name="307">307</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> # Write PS file </td> </tr> <tr> <td class="h" > <a name="308">308</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> # Inputs: 0) ExifTool object reference, 1) source dirInfo reference </td> </tr> <tr> <td class="h" > <a name="309">309</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> # Returns: 1 on success, 0 if this wasn't a valid PS file, </td> </tr> <tr> <td class="h" > <a name="310">310</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> # or -1 if a write error occurred </td> </tr> <tr> <td class="h" > <a name="311">311</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> sub WritePS($$) </td> </tr> <tr> <td class="h" > <a name="312">312</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> { </td> </tr> <tr> <td class="h" > <a name="313">313</a> </td> <td class="c3" > 132 </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="c3" > <a href="blib-lib-Image-ExifTool-WritePostScript-pl--subroutine.html#313-1"> 132 </a> </td> <td class="c0" > <a href="blib-lib-Image-ExifTool-WritePostScript-pl--subroutine.html#313-1"> 0 </a> </td> <td > 425 </td> <td class="s"> my ($et, $dirInfo) = @_; </td> </tr> <tr> <td class="h" > <a name="314">314</a> </td> <td class="c3" > 132 </td> <td class="c3" > <a href="blib-lib-Image-ExifTool-WritePostScript-pl--branch.html#314-1"> 100 </a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 808 </td> <td class="s"> $et or return 1; # allow dummy access to autoload this package </td> </tr> <tr> <td class="h" > <a name="315">315</a> </td> <td class="c3" > 1 </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 5 </td> <td class="s"> my $tagTablePtr = Image::ExifTool::GetTagTable('Image::ExifTool::PostScript::Main'); </td> </tr> <tr> <td class="h" > <a name="316">316</a> </td> <td class="c3" > 1 </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 3 </td> <td class="s"> my $raf = $$dirInfo{RAF}; </td> </tr> <tr> <td class="h" > <a name="317">317</a> </td> <td class="c3" > 1 </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 4 </td> <td class="s"> my $outfile = $$dirInfo{OutFile}; </td> </tr> <tr> <td class="h" > <a name="318">318</a> </td> <td class="c3" > 1 </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 5 </td> <td class="s"> my $verbose = $et->Options('Verbose'); </td> </tr> <tr> <td class="h" > <a name="319">319</a> </td> <td class="c3" > 1 </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 8 </td> <td class="s"> my $out = $et->Options('TextOut'); </td> </tr> <tr> <td class="h" > <a name="320">320</a> </td> <td class="c3" > 1 </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 8 </td> <td class="s"> my ($data, $buff, %flags, $err, $mode, $endToken); </td> </tr> <tr> <td class="h" > <a name="321">321</a> </td> <td class="c3" > 1 </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 0 </td> <td class="s"> my ($dos, $psStart, $psNewStart, $xmpHint, @lines); </td> </tr> <tr> <td class="h" > <a name="322">322</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> &nbsp; </td> </tr> <tr> <td class="h" > <a name="323">323</a> </td> <td class="c3" > 1 </td> <td class="c0" > <a href="blib-lib-Image-ExifTool-WritePostScript-pl--branch.html#323-1"> 50 </a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 6 </td> <td class="s"> $raf->Read($data, 4) == 4 or return 0; </td> </tr> <tr> <td class="h" > <a name="324">324</a> </td> <td class="c3" > 1 </td> <td class="c0" > <a href="blib-lib-Image-ExifTool-WritePostScript-pl--branch.html#324-1"> 50 </a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 16 </td> <td class="s"> return 0 unless $data =~ /^(%!PS|%!Ad|\xc5\xd0\xd3\xc6)/; </td> </tr> <tr> <td class="h" > <a name="325">325</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> &nbsp; </td> </tr> <tr> <td class="h" > <a name="326">326</a> </td> <td class="c3" > 1 </td> <td class="c0" > <a href="blib-lib-Image-ExifTool-WritePostScript-pl--branch.html#326-1"> 50 </a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 8 </td> <td class="s"> if ($data =~ /^%!Ad/) { </td> </tr> <tr> <td class="h" > <a >&nbsp;</a> </td> <td > &nbsp; </td> <td class="c0" > <a href="blib-lib-Image-ExifTool-WritePostScript-pl--branch.html#-2"> 50 </a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> &nbsp; </td> </tr> <tr> <td class="h" > <a name="327">327</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> # I've seen PS files start with "%!Adobe-PS"... </td> </tr> <tr> <td class="h" > <a name="328">328</a> </td> <td class="c0" > <a href="#329"> 0 </a> </td> <td class="c0" > <a href="blib-lib-Image-ExifTool-WritePostScript-pl--branch.html#328-1"> 0 </a> </td> <td class="c0" > <a href="blib-lib-Image-ExifTool-WritePostScript-pl--condition.html#328-1"> 0 </a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 0 </td> <td class="s"> return 0 unless $raf->Read($buff, 6) == 6 and $buff eq "obe-PS"; </td> </tr> <tr> <td class="h" > <a name="329">329</a> </td> <td class="c0" > <a href="#336"> 0 </a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 0 </td> <td class="s"> $data .= $buff; </td> </tr> <tr> <td class="h" > <a name="330">330</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> &nbsp; </td> </tr> <tr> <td class="h" > <a name="331">331</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> } elsif ($data =~ /^\xc5\xd0\xd3\xc6/) { </td> </tr> <tr> <td class="h" > <a name="332">332</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> # </td> </tr> <tr> <td class="h" > <a name="333">333</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> # process DOS binary PS files </td> </tr> <tr> <td class="h" > <a name="334">334</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> # </td> </tr> <tr> <td class="h" > <a name="335">335</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> # save DOS header then seek ahead and check PS header </td> </tr> <tr> <td class="h" > <a name="336">336</a> </td> <td class="c0" > <a href="#337"> 0 </a> </td> <td class="c0" > <a href="blib-lib-Image-ExifTool-WritePostScript-pl--branch.html#336-1"> 0 </a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 0 </td> <td class="s"> $raf->Read($dos, 26) == 26 or return 0; </td> </tr> <tr> <td class="h" > <a name="337">337</a> </td> <td class="c0" > <a href="#338"> 0 </a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 0 </td> <td class="s"> $dos = $data . $dos; </td> </tr> <tr> <td class="h" > <a name="338">338</a> </td> <td class="c0" > <a href="#339"> 0 </a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 0 </td> <td class="s"> SetByteOrder('II'); </td> </tr> <tr> <td class="h" > <a name="339">339</a> </td> <td class="c0" > <a href="#340"> 0 </a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 0 </td> <td class="s"> $psStart = Get32u(\$dos, 4); </td> </tr> <tr> <td class="h" > <a name="340">340</a> </td> <td class="c0" > <a href="#343"> 0 </a> </td> <td class="c0" > <a href="blib-lib-Image-ExifTool-WritePostScript-pl--branch.html#340-1"> 0 </a> </td> <td class="c0" > <a href="blib-lib-Image-ExifTool-WritePostScript-pl--condition.html#340-1"> 0 </a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 0 </td> <td class="s"> unless ($raf->Seek($psStart, 0) and </td> </tr> <tr> <td class="h" > <a >&nbsp;</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="c0" > <a href="blib-lib-Image-ExifTool-WritePostScript-pl--condition.html#-2"> 0 </a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> &nbsp; </td> </tr> <tr> <td class="h" > <a name="341">341</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> $raf->Read($data, 4) == 4 and $data eq '%!PS') </td> </tr> <tr> <td class="h" > <a name="342">342</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> { </td> </tr> <tr> <td class="h" > <a name="343">343</a> </td> <td class="c0" > <a href="#344"> 0 </a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 0 </td> <td class="s"> $et->Error('Invalid PS header'); </td> </tr> <tr> <td class="h" > <a name="344">344</a> </td> <td class="c0" > <a href="#346"> 0 </a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 0 </td> <td class="s"> return 1; </td> </tr> <tr> <td class="h" > <a name="345">345</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="346">346</a> </td> <td class="c0" > <a href="#347"> 0 </a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 0 </td> <td class="s"> $$raf{PSEnd} = $psStart + Get32u(\$dos, 8); </td> </tr> <tr> <td class="h" > <a name="347">347</a> </td> <td class="c0" > <a href="#348"> 0 </a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 0 </td> <td class="s"> my $base = Get32u(\$dos, 20); </td> </tr> <tr> <td class="h" > <a name="348">348</a> </td> <td class="c0" > <a href="#349"> 0 </a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 0 </td> <td class="s"> Set16u(0xffff, \$dos, 28); # ignore checksum </td> </tr> <tr> <td class="h" > <a name="349">349</a> </td> <td class="c0" > <a href="#350"> 0 </a> </td> <td class="c0" > <a href="blib-lib-Image-ExifTool-WritePostScript-pl--branch.html#349-1"> 0 </a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 0 </td> <td class="s"> if ($base) { </td> </tr> <tr> <td class="h" > <a >&nbsp;</a> </td> <td > &nbsp; </td> <td class="c0" > <a href="blib-lib-Image-ExifTool-WritePostScript-pl--branch.html#-2"> 0 </a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> &nbsp; </td> </tr> <tr> <td class="h" > <a name="350">350</a> </td> <td class="c0" > <a href="#356"> 0 </a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 0 </td> <td class="s"> my %dirInfo = ( </td> </tr> <tr> <td class="h" > <a name="351">351</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> Parent => 'PS', </td> </tr> <tr> <td class="h" > <a name="352">352</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> RAF => $raf, </td> </tr> <tr> <td class="h" > <a name="353">353</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> Base => $base, </td> </tr> <tr> <td class="h" > <a name="354">354</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> NoTiffEnd => 1, # no end-of-TIFF check </td> </tr> <tr> <td class="h" > <a name="355">355</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> ); </td> </tr> <tr> <td class="h" > <a name="356">356</a> </td> <td class="c0" > <a href="#357"> 0 </a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 0 </td> <td class="s"> $buff = $et->WriteTIFF(\%dirInfo); </td> </tr> <tr> <td class="h" > <a name="357">357</a> </td> <td class="c0" > <a href="#358"> 0 </a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 0 </td> <td class="s"> SetByteOrder('II'); # (WriteTIFF may change this) </td> </tr> <tr> <td class="h" > <a name="358">358</a> </td> <td class="c0" > <a href="#359"> 0 </a> </td> <td class="c0" > <a href="blib-lib-Image-ExifTool-WritePostScript-pl--branch.html#358-1"> 0 </a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 0 </td> <td class="s"> if ($buff) { </td> </tr> <tr> <td class="h" > <a name="359">359</a> </td> <td class="c0" > <a href="#362"> 0 </a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 0 </td> <td class="s"> $buff = substr($buff, $base); # remove header written by WriteTIFF() </td> </tr> <tr> <td class="h" > <a name="360">360</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> } else { </td> </tr> <tr> <td class="h" > <a name="361">361</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> # error rewriting TIFF, so just copy over original data </td> </tr> <tr> <td class="h" > <a name="362">362</a> </td> <td class="c0" > <a href="#363"> 0 </a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 0 </td> <td class="s"> my $len = Get32u(\$dos, 24); </td> </tr> <tr> <td class="h" > <a name="363">363</a> </td> <td class="c0" > <a href="#364"> 0 </a> </td> <td class="c0" > <a href="blib-lib-Image-ExifTool-WritePostScript-pl--branch.html#363-1"> 0 </a> </td> <td class="c0" > <a href="blib-lib-Image-ExifTool-WritePostScript-pl--condition.html#363-1"> 0 </a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 0 </td> <td class="s"> unless ($raf->Seek($base, 0) and $raf->Read($buff, $len) == $len) { </td> </tr> <tr> <td class="h" > <a name="364">364</a> </td> <td class="c0" > <a href="#365"> 0 </a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 0 </td> <td class="s"> $et->Error('Error reading embedded TIFF'); </td> </tr> <tr> <td class="h" > <a name="365">365</a> </td> <td class="c0" > <a href="#367"> 0 </a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 0 </td> <td class="s"> return 1; </td> </tr> <tr> <td class="h" > <a name="366">366</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="367">367</a> </td> <td class="c0" > <a href="#369"> 0 </a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 0 </td> <td class="s"> $et->Warn('Bad embedded TIFF'); </td> </tr> <tr> <td class="h" > <a name="368">368</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="369">369</a> </td> <td class="c0" > <a href="#370"> 0 </a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 0 </td> <td class="s"> Set32u(0, \$dos, 12); # zero metafile pointer </td> </tr> <tr> <td class="h" > <a name="370">370</a> </td> <td class="c0" > <a href="#371"> 0 </a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 0 </td> <td class="s"> Set32u(0, \$dos, 16); # zero metafile length </td> </tr> <tr> <td class="h" > <a name="371">371</a> </td> <td class="c0" > <a href="#372"> 0 </a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 0 </td> <td class="s"> Set32u(length($dos), \$dos, 20); # set TIFF pointer </td> </tr> <tr> <td class="h" > <a name="372">372</a> </td> <td class="c0" > <a href="#375"> 0 </a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 0 </td> <td class="s"> Set32u(length($buff), \$dos, 24); # set TIFF length </td> </tr> <tr> <td class="h" > <a name="373">373</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> } elsif (($base = Get32u(\$dos, 12)) != 0) { </td> </tr> <tr> <td class="h" > <a name="374">374</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> # copy over metafile section </td> </tr> <tr> <td class="h" > <a name="375">375</a> </td> <td class="c0" > <a href="#376"> 0 </a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 0 </td> <td class="s"> my $len = Get32u(\$dos, 16); </td> </tr> <tr> <td class="h" > <a name="376">376</a> </td> <td class="c0" > <a href="#377"> 0 </a> </td> <td class="c0" > <a href="blib-lib-Image-ExifTool-WritePostScript-pl--branch.html#376-1"> 0 </a> </td> <td class="c0" > <a href="blib-lib-Image-ExifTool-WritePostScript-pl--condition.html#376-1"> 0 </a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 0 </td> <td class="s"> unless ($raf->Seek($base, 0) and $raf->Read($buff, $len) == $len) { </td> </tr> <tr> <td class="h" > <a name="377">377</a> </td> <td class="c0" > <a href="#378"> 0 </a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 0 </td> <td class="s"> $et->Error('Error reading metafile section'); </td> </tr> <tr> <td class="h" > <a name="378">378</a> </td> <td class="c0" > <a href="#380"> 0 </a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 0 </td> <td class="s"> return 1; </td> </tr> <tr> <td class="h" > <a name="379">379</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="380">380</a> </td> <td class="c0" > <a href="#382"> 0 </a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 0 </td> <td class="s"> Set32u(length($dos), \$dos, 12); # set metafile pointer </td> </tr> <tr> <td class="h" > <a name="381">381</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> } else { </td> </tr> <tr> <td class="h" > <a name="382">382</a> </td> <td class="c0" > <a href="#384"> 0 </a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 0 </td> <td class="s"> $buff = ''; </td> </tr> <tr> <td class="h" > <a name="383">383</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="384">384</a> </td> <td class="c0" > <a href="#385"> 0 </a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 0 </td> <td class="s"> $psNewStart = length($dos) + length($buff); </td> </tr> <tr> <td class="h" > <a name="385">385</a> </td> <td class="c0" > <a href="#386"> 0 </a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 0 </td> <td class="s"> Set32u($psNewStart, \$dos, 4); # set pointer to start of PS </td> </tr> <tr> <td class="h" > <a name="386">386</a> </td> <td class="c0" > <a href="#387"> 0 </a> </td> <td class="c0" > <a href="blib-lib-Image-ExifTool-WritePostScript-pl--branch.html#386-1"> 0 </a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 0 </td> <td class="s"> Write($outfile, $dos, $buff) or $err = 1; </td> </tr> <tr> <td class="h" > <a name="387">387</a> </td> <td class="c0" > <a href="#394"> 0 </a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 0 </td> <td class="s"> $raf->Seek($psStart + 4, 0); # seek back to where we were </td> </tr> <tr> <td class="h" > <a name="388">388</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="389">389</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> # </td> </tr> <tr> <td class="h" > <a name="390">390</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> # rewrite PostScript data </td> </tr> <tr> <td class="h" > <a name="391">391</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> # </td> </tr> <tr> <td class="h" > <a name="392">392</a> </td> <td class="c3" > 1 </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 19 </td> <td class="s"> local $/ = GetInputRecordSeparator($raf); </td> </tr> <tr> <td class="h" > <a name="393">393</a> </td> <td class="c3" > 1 </td> <td class="c0" > <a href="blib-lib-Image-ExifTool-WritePostScript-pl--branch.html#393-1"> 50 </a> </td> <td class="c0" > <a href="blib-lib-Image-ExifTool-WritePostScript-pl--condition.html#393-1"> 33 </a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 19 </td> <td class="s"> unless ($/ and $raf->ReadLine($buff)) { </td> </tr> <tr> <td class="h" > <a name="394">394</a> </td> <td class="c0" > <a href="#395"> 0 </a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 0 </td> <td class="s"> $et->Error('Invalid PostScript data'); </td> </tr> <tr> <td class="h" > <a name="395">395</a> </td> <td class="c0" > <a href="#399"> 0 </a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 0 </td> <td class="s"> return 1; </td> </tr> <tr> <td class="h" > <a name="396">396</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="397">397</a> </td> <td class="c3" > 1 </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 4 </td> <td class="s"> $data .= $buff; </td> </tr> <tr> <td class="h" > <a name="398">398</a> </td> <td class="c3" > 1 </td> <td class="c0" > <a href="blib-lib-Image-ExifTool-WritePostScript-pl--branch.html#398-1"> 50 </a> </td> <td class="c0" > <a href="blib-lib-Image-ExifTool-WritePostScript-pl--condition.html#398-1"> 33 </a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 14 </td> <td class="s"> unless ($data =~ /^%!PS-Adobe-3\.(\d+)\b/ and $1 < 2) { </td> </tr> <tr> <td class="h" > <a name="399">399</a> </td> <td class="c0" > <a href="#400"> 0 </a> </td> <td class="c0" > <a href="blib-lib-Image-ExifTool-WritePostScript-pl--branch.html#399-1"> 0 </a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 0 </td> <td class="s"> if ($et->Error("Document does not conform to DSC spec. Metadata may be unreadable by other apps", 2)) { </td> </tr> <tr> <td class="h" > <a name="400">400</a> </td> <td class="c0" > <a href="#446"> 0 </a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 0 </td> <td class="s"> return 1; </td> </tr> <tr> <td class="h" > <a name="401">401</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="402">402</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="403">403</a> </td> <td class="c3" > 1 </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 5 </td> <td class="s"> my $psRev = $1; # save PS revision number (3.x) </td> </tr> <tr> <td class="h" > <a name="404">404</a> </td> <td class="c3" > 1 </td> <td class="c0" > <a href="blib-lib-Image-ExifTool-WritePostScript-pl--branch.html#404-1"> 50 </a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 7 </td> <td class="s"> Write($outfile, $data) or $err = 1; </td> </tr> <tr> <td class="h" > <a name="405">405</a> </td> <td class="c3" > 1 </td> <td class="c0" > <a href="blib-lib-Image-ExifTool-WritePostScript-pl--branch.html#405-1"> 50 </a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 12 </td> <td class="s"> $flags{EPS} = 1 if $data =~ /EPSF/; </td> </tr> <tr> <td class="h" > <a name="406">406</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> &nbsp; </td> </tr> <tr> <td class="h" > <a name="407">407</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> # get hash of new information keyed by tagID and directories to add/edit </td> </tr> <tr> <td class="h" > <a name="408">408</a> </td> <td class="c3" > 1 </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 7 </td> <td class="s"> my $newTags = $et->GetNewTagInfoHash($tagTablePtr); </td> </tr> <tr> <td class="h" > <a name="409">409</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> &nbsp; </td> </tr> <tr> <td class="h" > <a name="410">410</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> # figure out which directories we need to write (PostScript takes priority) </td> </tr> <tr> <td class="h" > <a name="411">411</a> </td> <td class="c3" > 1 </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 7 </td> <td class="s"> $et->InitWriteDirs(\%psMap, 'PostScript'); </td> </tr> <tr> <td class="h" > <a name="412">412</a> </td> <td class="c3" > 1 </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 4 </td> <td class="s"> my $addDirs = $$et{ADD_DIRS}; </td> </tr> <tr> <td class="h" > <a name="413">413</a> </td> <td class="c3" > 1 </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 3 </td> <td class="s"> my $editDirs = $$et{EDIT_DIRS}; </td> </tr> <tr> <td class="h" > <a name="414">414</a> </td> <td class="c3" > 1 </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 2 </td> <td class="s"> my %doneDir; </td> </tr> <tr> <td class="h" > <a name="415">415</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> &nbsp; </td> </tr> <tr> <td class="h" > <a name="416">416</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> # set XMP hint flag (1 for adding, 0 for deleting, undef for no change) </td> </tr> <tr> <td class="h" > <a name="417">417</a> </td> <td class="c3" > 1 </td> <td class="c0" > <a href="blib-lib-Image-ExifTool-WritePostScript-pl--branch.html#417-1"> 50 </a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 6 </td> <td class="s"> $xmpHint = 1 if $$addDirs{XMP}; </td> </tr> <tr> <td class="h" > <a name="418">418</a> </td> <td class="c3" > 1 </td> <td class="c0" > <a href="blib-lib-Image-ExifTool-WritePostScript-pl--branch.html#418-1"> 50 </a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 5 </td> <td class="s"> $xmpHint = 0 if $$et{DEL_GROUP}{XMP}; </td> </tr> <tr> <td class="h" > <a name="419">419</a> </td> <td class="c3" > 1 </td> <td class="c0" > <a href="blib-lib-Image-ExifTool-WritePostScript-pl--branch.html#419-1"> 50 </a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 6 </td> <td class="s"> $$newTags{XMP_HINT} = $xmpHint if $xmpHint; # add special tag to newTags list </td> </tr> <tr> <td class="h" > <a name="420">420</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> &nbsp; </td> </tr> <tr> <td class="h" > <a name="421">421</a> </td> <td class="c3" > 1 </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 3 </td> <td class="s"> for (;;) { </td> </tr> <tr> <td class="h" > <a name="422">422</a> </td> <td class="c3" > 192 </td> <td class="c0" > <a href="blib-lib-Image-ExifTool-WritePostScript-pl--branch.html#422-1"> 50 </a> </td> <td class="c0" > <a href="blib-lib-Image-ExifTool-WritePostScript-pl--condition.html#422-1"> 66 </a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 494 </td> <td class="s"> @lines or GetNextLine($raf, \@lines) or last; </td> </tr> <tr> <td class="h" > <a name="423">423</a> </td> <td class="c3" > 192 </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 327 </td> <td class="s"> $data = shift @lines; </td> </tr> <tr> <td class="h" > <a name="424">424</a> </td> <td class="c3" > 192 </td> <td class="c3" > <a href="blib-lib-Image-ExifTool-WritePostScript-pl--branch.html#424-1"> 100 </a> </td> <td class="c0" > <a href="blib-lib-Image-ExifTool-WritePostScript-pl--condition.html#424-1"> 66 </a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 439 </td> <td class="s"> if ($endToken) { </td> </tr> <tr> <td class="h" > <a >&nbsp;</a> </td> <td > &nbsp; </td> <td class="c3" > <a href="blib-lib-Image-ExifTool-WritePostScript-pl--branch.html#-2"> 100 </a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> &nbsp; </td> </tr> <tr> <td class="h" > <a >&nbsp;</a> </td> <td > &nbsp; </td> <td class="c3" > <a href="blib-lib-Image-ExifTool-WritePostScript-pl--branch.html#-3"> 100 </a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> &nbsp; </td> </tr> <tr> <td class="h" > <a >&nbsp;</a> </td> <td > &nbsp; </td> <td class="c0" > <a href="blib-lib-Image-ExifTool-WritePostScript-pl--branch.html#-4"> 50 </a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> &nbsp; </td> </tr> <tr> <td class="h" > <a name="425">425</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> # look for end token </td> </tr> <tr> <td class="h" > <a name="426">426</a> </td> <td class="c3" > 175 </td> <td class="c3" > <a href="blib-lib-Image-ExifTool-WritePostScript-pl--branch.html#426-1"> 100 </a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 560 </td> <td class="s"> if ($data =~ m/^$endToken\s*$/is) { </td> </tr> <tr> <td class="h" > <a name="427">427</a> </td> <td class="c3" > 7 </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 16 </td> <td class="s"> undef $endToken; </td> </tr> <tr> <td class="h" > <a name="428">428</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> # found end: process this information </td> </tr> <tr> <td class="h" > <a name="429">429</a> </td> <td class="c3" > 7 </td> <td class="c3" > <a href="blib-lib-Image-ExifTool-WritePostScript-pl--branch.html#429-1"> 100 </a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 27 </td> <td class="s"> if ($mode) { </td> </tr> <tr> <td class="h" > <a name="430">430</a> </td> <td class="c3" > 2 </td> <td class="c0" > <a href="blib-lib-Image-ExifTool-WritePostScript-pl--branch.html#430-1"> 50 </a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 13 </td> <td class="s"> $doneDir{$mode} and $et->Error("Multiple $mode directories", 1); </td> </tr> <tr> <td class="h" > <a name="431">431</a> </td> <td class="c3" > 2 </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 8 </td> <td class="s"> $doneDir{$mode} = 1; </td> </tr> <tr> <td class="h" > <a name="432">432</a> </td> <td class="c3" > 2 </td> <td class="c0" > <a href="blib-lib-Image-ExifTool-WritePostScript-pl--branch.html#432-1"> 50 </a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 12 </td> <td class="s"> WritePSDirectory($et, $outfile, $mode, \$buff, \%flags) or $err = 1; </td> </tr> <tr> <td class="h" > <a name="433">433</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> # write end token if we wrote the begin token </td> </tr> <tr> <td class="h" > <a name="434">434</a> </td> <td class="c3" > 2 </td> <td class="c0" > <a href="blib-lib-Image-ExifTool-WritePostScript-pl--branch.html#434-1"> 50 </a> </td> <td class="c0" > <a href="blib-lib-Image-ExifTool-WritePostScript-pl--condition.html#434-1"> 0 </a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 13 </td> <td class="s"> Write($outfile, $data) or $err = 1 if $flags{WROTE_BEGIN}; </td> </tr> <tr> <td class="h" > <a name="435">435</a> </td> <td class="c3" > 2 </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 17 </td> <td class="s"> undef $buff; </td> </tr> <tr> <td class="h" > <a name="436">436</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> } else { </td> </tr> <tr> <td class="h" > <a name="437">437</a> </td> <td class="c3" > 5 </td> <td class="c0" > <a href="blib-lib-Image-ExifTool-WritePostScript-pl--branch.html#437-1"> 50 </a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 16 </td> <td class="s"> Write($outfile, $data) or $err = 1; </td> </tr> <tr> <td class="h" > <a name="438">438</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="439">439</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> } else { </td> </tr> <tr> <td class="h" > <a name="440">440</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> # buffer data in current begin/end block </td> </tr> <tr> <td class="h" > <a name="441">441</a> </td> <td class="c3" > 168 </td> <td class="c3" > <a href="blib-lib-Image-ExifTool-WritePostScript-pl--branch.html#441-1"> 100 </a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 371 </td> <td class="s"> if (not defined $mode) { </td> </tr> <tr> <td class="h" > <a >&nbsp;</a> </td> <td > &nbsp; </td> <td class="c3" > <a href="blib-lib-Image-ExifTool-WritePostScript-pl--branch.html#-2"> 100 </a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> &nbsp; </td> </tr> <tr> <td class="h" > <a name="442">442</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> # pick up XMP in unrecognized blocks for editing in place </td> </tr> <tr> <td class="h" > <a name="443">443</a> </td> <td class="c3" > 29 </td> <td class="c0" > <a href="blib-lib-Image-ExifTool-WritePostScript-pl--branch.html#443-1"> 50 </a> </td> <td class="c0" > <a href="blib-lib-Image-ExifTool-WritePostScript-pl--condition.html#443-1"> 33 </a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 66 </td> <td class="s"> if ($data =~ /^<\?xpacket begin=.{7,13}W5M0MpCehiHzreSzNTczkc9d/ and </td> </tr> <tr> <td class="h" > <a name="444">444</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> $$editDirs{XMP}) </td> </tr> <tr> <td class="h" > <a name="445">445</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> { </td> </tr> <tr> <td class="h" > <a name="446">446</a> </td> <td class="c0" > <a href="#447"> 0 </a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 0 </td> <td class="s"> $buff = $data; </td> </tr> <tr> <td class="h" > <a name="447">447</a> </td> <td class="c0" > <a href="#491"> 0 </a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 0 </td> <td class="s"> $mode = 'XMP'; </td> </tr> <tr> <td class="h" > <a name="448">448</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> } else { </td> </tr> <tr> <td class="h" > <a name="449">449</a> </td> <td class="c3" > 29 </td> <td class="c0" > <a href="blib-lib-Image-ExifTool-WritePostScript-pl--branch.html#449-1"> 50 </a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 70 </td> <td class="s"> Write($outfile, $data) or $err = 1; </td> </tr> <tr> <td class="h" > <a name="450">450</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="451">451</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> } elsif ($mode eq 'XMP') { </td> </tr> <tr> <td class="h" > <a name="452">452</a> </td> <td class="c3" > 126 </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 197 </td> <td class="s"> $buff .= $data; </td> </tr> <tr> <td class="h" > <a name="453">453</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> } else { </td> </tr> <tr> <td class="h" > <a name="454">454</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> # data is ASCII-hex encoded </td> </tr> <tr> <td class="h" > <a name="455">455</a> </td> <td class="c3" > 13 </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 29 </td> <td class="s"> $data =~ tr/0-9A-Fa-f//dc; # remove all but hex characters </td> </tr> <tr> <td class="h" > <a name="456">456</a> </td> <td class="c3" > 13 </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 42 </td> <td class="s"> $buff .= pack('H*', $data); # translate from hex </td> </tr> <tr> <td class="h" > <a name="457">457</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="458">458</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="459">459</a> </td> <td class="c3" > 175 </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 294 </td> <td class="s"> next; </td> </tr> <tr> <td class="h" > <a name="460">460</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> } elsif ($data =~ m{^(%{1,2})(Begin)(?!Object:)(.*?)[:\x0d\x0a]}i) { </td> </tr> <tr> <td class="h" > <a name="461">461</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> # comments section is over... write any new tags now </td> </tr> <tr> <td class="h" > <a name="462">462</a> </td> <td class="c3" > 7 </td> <td class="c0" > <a href="blib-lib-Image-ExifTool-WritePostScript-pl--branch.html#462-1"> 50 </a> </td> <td class="c0" > <a href="blib-lib-Image-ExifTool-WritePostScript-pl--condition.html#462-1"> 0 </a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 24 </td> <td class="s"> WriteNewTags($et, $outfile, $newTags) or $err = 1 if %$newTags; </td> </tr> <tr> <td class="h" > <a name="463">463</a> </td> <td class="c3" > 7 </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 12 </td> <td class="s"> undef $xmpHint; </td> </tr> <tr> <td class="h" > <a name="464">464</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> # the beginning of a data block (can only write XMP and Photoshop) </td> </tr> <tr> <td class="h" > <a name="465">465</a> </td> <td class="c3" > 7 </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 41 </td> <td class="s"> my %modeLookup = ( </td> </tr> <tr> <td class="h" > <a name="466">466</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> _xml_code => 'XMP', </td> </tr> <tr> <td class="h" > <a name="467">467</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> photoshop => 'Photoshop', </td> </tr> <tr> <td class="h" > <a name="468">468</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> iccprofile => 'ICC_Profile', </td> </tr> <tr> <td class="h" > <a name="469">469</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> ); </td> </tr> <tr> <td class="h" > <a name="470">470</a> </td> <td class="c3" > 7 </td> <td class="c0" > <a href="blib-lib-Image-ExifTool-WritePostScript-pl--branch.html#470-1"> 50 </a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 19 </td> <td class="s"> $verbose > 1 and print $out "$2$3\n"; </td> </tr> <tr> <td class="h" > <a name="471">471</a> </td> <td class="c3" > 7 </td> <td class="c3" > <a href="blib-lib-Image-ExifTool-WritePostScript-pl--branch.html#471-1"> 100 </a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 29 </td> <td class="s"> $endToken = $1 . ($2 eq 'begin' ? 'end' : 'End') . $3; </td> </tr> <tr> <td class="h" > <a name="472">472</a> </td> <td class="c3" > 7 </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 25 </td> <td class="s"> $mode = $modeLookup{lc($3)}; </td> </tr> <tr> <td class="h" > <a name="473">473</a> </td> <td class="c3" > 7 </td> <td class="c3" > <a href="blib-lib-Image-ExifTool-WritePostScript-pl--branch.html#473-1"> 100 </a> </td> <td class="c0" > <a href="blib-lib-Image-ExifTool-WritePostScript-pl--condition.html#473-1"> 66 </a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 26 </td> <td class="s"> if ($mode and $$editDirs{$mode}) { </td> </tr> <tr> <td class="h" > <a name="474">474</a> </td> <td class="c3" > 2 </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 6 </td> <td class="s"> $buff = ''; # initialize buffer for this block </td> </tr> <tr> <td class="h" > <a name="475">475</a> </td> <td class="c3" > 2 </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 7 </td> <td class="s"> $flags{WROTE_BEGIN} = 0; </td> </tr> <tr> <td class="h" > <a name="476">476</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> } else { </td> </tr> <tr> <td class="h" > <a name="477">477</a> </td> <td class="c3" > 5 </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 10 </td> <td class="s"> undef $mode; # not editing this directory </td> </tr> <tr> <td class="h" > <a name="478">478</a> </td> <td class="c3" > 5 </td> <td class="c0" > <a href="blib-lib-Image-ExifTool-WritePostScript-pl--branch.html#478-1"> 50 </a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 16 </td> <td class="s"> Write($outfile, $data) or $err = 1; </td> </tr> <tr> <td class="h" > <a name="479">479</a> </td> <td class="c3" > 5 </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 13 </td> <td class="s"> $flags{WROTE_BEGIN} = 1; </td> </tr> <tr> <td class="h" > <a name="480">480</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="481">481</a> </td> <td class="c3" > 7 </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 18 </td> <td class="s"> next; </td> </tr> <tr> <td class="h" > <a name="482">482</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> } elsif ($data =~ /^%%(?!Page:|PlateFile:|BeginObject:)(\w+): ?(.*)/s) { </td> </tr> <tr> <td class="h" > <a name="483">483</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> # rewrite information from PostScript tags in comments </td> </tr> <tr> <td class="h" > <a name="484">484</a> </td> <td class="c3" > 5 </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 20 </td> <td class="s"> my ($tag, $val) = ($1, $2); </td> </tr> <tr> <td class="h" > <a name="485">485</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> # handle Adobe Illustrator files specially </td> </tr> <tr> <td class="h" > <a name="486">486</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> # - EVENTUALLY IT WOULD BE BETTER TO FIND ANOTHER IDENTIFICATION METHOD </td> </tr> <tr> <td class="h" > <a name="487">487</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> # (because Illustrator doesn't care if the Creator is changed) </td> </tr> <tr> <td class="h" > <a name="488">488</a> </td> <td class="c3" > 5 </td> <td class="c0" > <a href="blib-lib-Image-ExifTool-WritePostScript-pl--branch.html#488-1"> 50 </a> </td> <td class="c0" > <a href="blib-lib-Image-ExifTool-WritePostScript-pl--condition.html#488-1"> 66 </a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 21 </td> <td class="s"> if ($tag eq 'Creator' and $val =~ /^Adobe Illustrator/) { </td> </tr> <tr> <td class="h" > <a name="489">489</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> # disable writing XMP to PostScript-format Adobe Illustrator files </td> </tr> <tr> <td class="h" > <a name="490">490</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> # because it confuses Illustrator </td> </tr> <tr> <td class="h" > <a name="491">491</a> </td> <td class="c0" > <a href="#492"> 0 </a> </td> <td class="c0" > <a href="blib-lib-Image-ExifTool-WritePostScript-pl--branch.html#491-1"> 0 </a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 0 </td> <td class="s"> if ($$editDirs{XMP}) { </td> </tr> <tr> <td class="h" > <a name="492">492</a> </td> <td class="c0" > <a href="#494"> 0 </a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 0 </td> <td class="s"> $et->Warn("Can't write XMP to PostScript-format Illustrator files"); </td> </tr> <tr> <td class="h" > <a name="493">493</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> # pretend like we wrote it already so we won't try to add it later </td> </tr> <tr> <td class="h" > <a name="494">494</a> </td> <td class="c0" > <a href="#499"> 0 </a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 0 </td> <td class="s"> $doneDir{XMP} = 1; </td> </tr> <tr> <td class="h" > <a name="495">495</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="496">496</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> # don't allow "Creator" to be changed in Illustrator files </td> </tr> <tr> <td class="h" > <a name="497">497</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> # (we need it to be able to recognize these files) </td> </tr> <tr> <td class="h" > <a name="498">498</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> # --> find a better way to do this! </td> </tr> <tr> <td class="h" > <a name="499">499</a> </td> <td class="c0" > <a href="#500"> 0 </a> </td> <td class="c0" > <a href="blib-lib-Image-ExifTool-WritePostScript-pl--branch.html#499-1"> 0 </a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 0 </td> <td class="s"> if ($$newTags{$tag}) { </td> </tr> <tr> <td class="h" > <a name="500">500</a> </td> <td class="c0" > <a href="#501"> 0 </a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 0 </td> <td class="s"> $et->Warn("Can't change Postscript:Creator of Illustrator files"); </td> </tr> <tr> <td class="h" > <a name="501">501</a> </td> <td class="c0" > <a href="#524"> 0 </a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 0 </td> <td class="s"> delete $$newTags{$tag}; </td> </tr> <tr> <td class="h" > <a name="502">502</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="503">503</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="504">504</a> </td> <td class="c3" > 5 </td> <td class="c3" > <a href="blib-lib-Image-ExifTool-WritePostScript-pl--branch.html#504-1"> 100 </a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 16 </td> <td class="s"> if ($$newTags{$tag}) { </td> </tr> <tr> <td class="h" > <a name="505">505</a> </td> <td class="c3" > 2 </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 7 </td> <td class="s"> my $tagInfo = $$newTags{$tag}; </td> </tr> <tr> <td class="h" > <a name="506">506</a> </td> <td class="c3" > 2 </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 5 </td> <td class="s"> delete $$newTags{$tag}; # write it then forget it </td> </tr> <tr> <td class="h" > <a name="507">507</a> </td> <td class="c3" > 2 </td> <td class="c0" > <a href="blib-lib-Image-ExifTool-WritePostScript-pl--branch.html#507-1"> 50 </a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 8 </td> <td class="s"> next unless ref $tagInfo; </td> </tr> <tr> <td class="h" > <a name="508">508</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> # decode comment string (reading continuation lines if necessary) </td> </tr> <tr> <td class="h" > <a name="509">509</a> </td> <td class="c3" > 2 </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 10 </td> <td class="s"> $val = DecodeComment($val, $raf, \@lines, \$data); </td> </tr> <tr> <td class="h" > <a name="510">510</a> </td> <td class="c3" > 2 </td> <td class="c0" > <a href="blib-lib-Image-ExifTool-WritePostScript-pl--branch.html#510-1"> 50 </a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 10 </td> <td class="s"> $val = join $et->Options('ListSep'), @$val if ref $val eq 'ARRAY'; </td> </tr> <tr> <td class="h" > <a name="511">511</a> </td> <td class="c3" > 2 </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 12 </td> <td class="s"> my $nvHash = $et->GetNewValueHash($tagInfo); </td> </tr> <tr> <td class="h" > <a name="512">512</a> </td> <td class="c3" > 2 </td> <td class="c0" > <a href="blib-lib-Image-ExifTool-WritePostScript-pl--branch.html#512-1"> 50 </a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 17 </td> <td class="s"> if ($et->IsOverwriting($nvHash, $val)) { </td> </tr> <tr> <td class="h" > <a name="513">513</a> </td> <td class="c3" > 2 </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 15 </td> <td class="s"> $et->VerboseValue("- PostScript:$$tagInfo{Name}", $val); </td> </tr> <tr> <td class="h" > <a name="514">514</a> </td> <td class="c3" > 2 </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 8 </td> <td class="s"> $val = $et->GetNewValue($nvHash); </td> </tr> <tr> <td class="h" > <a name="515">515</a> </td> <td class="c3" > 2 </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 7 </td> <td class="s"> ++$$et{CHANGED}; </td> </tr> <tr> <td class="h" > <a name="516">516</a> </td> <td class="c3" > 2 </td> <td class="c0" > <a href="blib-lib-Image-ExifTool-WritePostScript-pl--branch.html#516-1"> 50 </a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 14 </td> <td class="s"> next unless defined $val; # next if tag is being deleted </td> </tr> <tr> <td class="h" > <a name="517">517</a> </td> <td class="c3" > 2 </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 21 </td> <td class="s"> $et->VerboseValue("+ PostScript:$$tagInfo{Name}", $val); </td> </tr> <tr> <td class="h" > <a name="518">518</a> </td> <td class="c3" > 2 </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 14 </td> <td class="s"> $data = EncodeTag($tag, $val); </td> </tr> <tr> <td class="h" > <a name="519">519</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="520">520</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="521">521</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> # (note: Adobe InDesign doesn't put colon after %ADO_ContainsXMP -- doh!) </td> </tr> <tr> <td class="h" > <a name="522">522</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> } elsif (defined $xmpHint and $data =~ m{^%ADO_ContainsXMP:? ?(.+?)[\x0d\x0a]*$}s) { </td> </tr> <tr> <td class="h" > <a name="523">523</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> # change the XMP hint if necessary </td> </tr> <tr> <td class="h" > <a name="524">524</a> </td> <td class="c0" > <a href="#525"> 0 </a> </td> <td class="c0" > <a href="blib-lib-Image-ExifTool-WritePostScript-pl--branch.html#524-1"> 0 </a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 0 </td> <td class="s"> if ($xmpHint) { </td> </tr> <tr> <td class="h" > <a name="525">525</a> </td> <td class="c0" > <a href="#527"> 0 </a> </td> <td class="c0" > <a href="blib-lib-Image-ExifTool-WritePostScript-pl--branch.html#525-1"> 0 </a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 0 </td> <td class="s"> $data = "%ADO_ContainsXMP: MainFirst$/" if $1 eq 'NoMain'; </td> </tr> <tr> <td class="h" > <a name="526">526</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> } else { </td> </tr> <tr> <td class="h" > <a name="527">527</a> </td> <td class="c0" > <a href="#530"> 0 </a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 0 </td> <td class="s"> $data = "%ADO_ContainsXMP: NoMain$/"; </td> </tr> <tr> <td class="h" > <a name="528">528</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="529">529</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> # delete XMP hint flags </td> </tr> <tr> <td class="h" > <a name="530">530</a> </td> <td class="c0" > <a href="#531"> 0 </a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 0 </td> <td class="s"> delete $$newTags{XMP_HINT}; </td> </tr> <tr> <td class="h" > <a name="531">531</a> </td> <td class="c0" > <a href="#553"> 0 </a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 0 </td> <td class="s"> undef $xmpHint; </td> </tr> <tr> <td class="h" > <a name="532">532</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> } else { </td> </tr> <tr> <td class="h" > <a name="533">533</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> # look for end of comments section </td> </tr> <tr> <td class="h" > <a name="534">534</a> </td> <td class="c3" > 5 </td> <td class="c3" > <a href="blib-lib-Image-ExifTool-WritePostScript-pl--branch.html#534-1"> 100 </a> </td> <td class="c0" > <a href="blib-lib-Image-ExifTool-WritePostScript-pl--condition.html#534-1"> 66 </a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 48 </td> <td class="s"> if (%$newTags and ($data !~ /^%\S/ or </td> </tr> <tr> <td class="h" > <a >&nbsp;</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="c3" > <a href="blib-lib-Image-ExifTool-WritePostScript-pl--condition.html#-2"> 100 </a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> &nbsp; </td> </tr> <tr> <td class="h" > <a name="535">535</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> $data =~ /^%(%EndComments|%Page:|%PlateFile:|%BeginObject:|.*BeginLayer)/)) </td> </tr> <tr> <td class="h" > <a name="536">536</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> { </td> </tr> <tr> <td class="h" > <a name="537">537</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> # write new tags at end of comments section </td> </tr> <tr> <td class="h" > <a name="538">538</a> </td> <td class="c3" > 1 </td> <td class="c0" > <a href="blib-lib-Image-ExifTool-WritePostScript-pl--branch.html#538-1"> 50 </a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 7 </td> <td class="s"> WriteNewTags($et, $outfile, $newTags) or $err = 1; </td> </tr> <tr> <td class="h" > <a name="539">539</a> </td> <td class="c3" > 1 </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 4 </td> <td class="s"> undef $xmpHint; </td> </tr> <tr> <td class="h" > <a name="540">540</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="541">541</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> # look for start of drawing commands (AI uses "%AI5_BeginLayer", </td> </tr> <tr> <td class="h" > <a name="542">542</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> # and Helios uses "%%BeginObject:") </td> </tr> <tr> <td class="h" > <a name="543">543</a> </td> <td class="c3" > 5 </td> <td class="c3" > <a href="blib-lib-Image-ExifTool-WritePostScript-pl--branch.html#543-1"> 100 </a> </td> <td class="c0" > <a href="blib-lib-Image-ExifTool-WritePostScript-pl--condition.html#543-1"> 66 </a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 62 </td> <td class="s"> if ($data =~ /^%(%Page:|%PlateFile:|%BeginObject:|.*BeginLayer)/ or </td> </tr> <tr> <td class="h" > <a name="544">544</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> $data !~ m{^(%.*|\s*)$}s) </td> </tr> <tr> <td class="h" > <a name="545">545</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> { </td> </tr> <tr> <td class="h" > <a name="546">546</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> # we have reached the first page or drawing command, so create necessary </td> </tr> <tr> <td class="h" > <a name="547">547</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> # directories and copy the rest of the file, then all done </td> </tr> <tr> <td class="h" > <a name="548">548</a> </td> <td class="c3" > 1 </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 4 </td> <td class="s"> my $dir; </td> </tr> <tr> <td class="h" > <a name="549">549</a> </td> <td class="c3" > 1 </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 4 </td> <td class="s"> my $plateFile = ($data =~ /^%%PlateFile:/); </td> </tr> <tr> <td class="h" > <a name="550">550</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> # create Photoshop first, then XMP if necessary </td> </tr> <tr> <td class="h" > <a name="551">551</a> </td> <td class="c3" > 1 </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 6 </td> <td class="s"> foreach $dir (qw{Photoshop ICC_Profile XMP}) { </td> </tr> <tr> <td class="h" > <a name="552">552</a> </td> <td class="c3" > 3 </td> <td class="c0" > <a href="blib-lib-Image-ExifTool-WritePostScript-pl--branch.html#552-1"> 50 </a> </td> <td class="c0" > <a href="blib-lib-Image-ExifTool-WritePostScript-pl--condition.html#552-1"> 66 </a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 19 </td> <td class="s"> next unless $$editDirs{$dir} and not $doneDir{$dir}; </td> </tr> <tr> <td class="h" > <a name="553">553</a> </td> <td class="c0" > <a href="#555"> 0 </a> </td> <td class="c0" > <a href="blib-lib-Image-ExifTool-WritePostScript-pl--branch.html#553-1"> 0 </a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 0 </td> <td class="s"> if ($plateFile) { </td> </tr> <tr> <td class="h" > <a name="554">554</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> # PlateFile comments may contain offsets so we can't edit these files! </td> </tr> <tr> <td class="h" > <a name="555">555</a> </td> <td class="c0" > <a href="#556"> 0 </a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 0 </td> <td class="s"> $et->Warn("Can only edit PostScript information DCS Plate files"); </td> </tr> <tr> <td class="h" > <a name="556">556</a> </td> <td class="c0" > <a href="#558"> 0 </a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 0 </td> <td class="s"> last; </td> </tr> <tr> <td class="h" > <a name="557">557</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="558">558</a> </td> <td class="c0" > <a href="#559"> 0 </a> </td> <td class="c0" > <a href="blib-lib-Image-ExifTool-WritePostScript-pl--branch.html#558-1"> 0 </a> </td> <td class="c0" > <a href="blib-lib-Image-ExifTool-WritePostScript-pl--condition.html#558-1"> 0 </a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 0 </td> <td class="s"> next unless $$addDirs{$dir} or $dir eq 'XMP'; </td> </tr> <tr> <td class="h" > <a name="559">559</a> </td> <td class="c0" > <a href="#560"> 0 </a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 0 </td> <td class="s"> $flags{WROTE_BEGIN} = 0; </td> </tr> <tr> <td class="h" > <a name="560">560</a> </td> <td class="c0" > <a href="#561"> 0 </a> </td> <td class="c0" > <a href="blib-lib-Image-ExifTool-WritePostScript-pl--branch.html#560-1"> 0 </a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 0 </td> <td class="s"> WritePSDirectory($et, $outfile, $dir, undef, \%flags) or $err = 1; </td> </tr> <tr> <td class="h" > <a name="561">561</a> </td> <td class="c0" > <a href="#566"> 0 </a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 0 </td> <td class="s"> $doneDir{$dir} = 1; </td> </tr> <tr> <td class="h" > <a name="562">562</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="563">563</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> # copy rest of file </td> </tr> <tr> <td class="h" > <a name="564">564</a> </td> <td class="c3" > 1 </td> <td class="c0" > <a href="blib-lib-Image-ExifTool-WritePostScript-pl--branch.html#564-1"> 50 </a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 5 </td> <td class="s"> if ($flags{TRAILER}) { </td> </tr> <tr> <td class="h" > <a name="565">565</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> # write trailer before %%EOF </td> </tr> <tr> <td class="h" > <a name="566">566</a> </td> <td class="c0" > <a href="#567"> 0 </a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 0 </td> <td class="s"> for (;;) { </td> </tr> <tr> <td class="h" > <a name="567">567</a> </td> <td class="c0" > <a href="#568"> 0 </a> </td> <td class="c0" > <a href="blib-lib-Image-ExifTool-WritePostScript-pl--branch.html#567-1"> 0 </a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 0 </td> <td class="s"> Write($outfile, $data) or $err = 1; </td> </tr> <tr> <td class="h" > <a name="568">568</a> </td> <td class="c0" > <a href="#569"> 0 </a> </td> <td class="c0" > <a href="blib-lib-Image-ExifTool-WritePostScript-pl--branch.html#568-1"> 0 </a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 0 </td> <td class="s"> if (@lines) { </td> </tr> <tr> <td class="h" > <a name="569">569</a> </td> <td class="c0" > <a href="#571"> 0 </a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 0 </td> <td class="s"> $data = shift @lines; </td> </tr> <tr> <td class="h" > <a name="570">570</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> } else { </td> </tr> <tr> <td class="h" > <a name="571">571</a> </td> <td class="c0" > <a href="#572"> 0 </a> </td> <td class="c0" > <a href="blib-lib-Image-ExifTool-WritePostScript-pl--branch.html#571-1"> 0 </a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 0 </td> <td class="s"> $raf->ReadLine($data) or undef($data), last; </td> </tr> <tr> <td class="h" > <a name="572">572</a> </td> <td class="c0" > <a href="#573"> 0 </a> </td> <td class="c0" > <a href="blib-lib-Image-ExifTool-WritePostScript-pl--branch.html#572-1"> 0 </a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 0 </td> <td class="s"> $dos and CheckPSEnd($raf, \$data); </td> </tr> <tr> <td class="h" > <a name="573">573</a> </td> <td class="c0" > <a href="#576"> 0 </a> </td> <td class="c0" > <a href="blib-lib-Image-ExifTool-WritePostScript-pl--branch.html#573-1"> 0 </a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 0 </td> <td class="s"> if ($data =~ /[\x0d\x0a]%%EOF\b/g) { </td> </tr> <tr> <td class="h" > <a name="574">574</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> # split data before "%%EOF" </td> </tr> <tr> <td class="h" > <a name="575">575</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> # (necessary if data contains other newline sequences) </td> </tr> <tr> <td class="h" > <a name="576">576</a> </td> <td class="c0" > <a href="#577"> 0 </a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 0 </td> <td class="s"> my $pos = pos($data) - 5; </td> </tr> <tr> <td class="h" > <a name="577">577</a> </td> <td class="c0" > <a href="#578"> 0 </a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 0 </td> <td class="s"> push @lines, substr($data, $pos); </td> </tr> <tr> <td class="h" > <a name="578">578</a> </td> <td class="c0" > <a href="#581"> 0 </a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 0 </td> <td class="s"> $data = substr($data, 0, $pos); </td> </tr> <tr> <td class="h" > <a name="579">579</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="580">580</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="581">581</a> </td> <td class="c0" > <a href="#583"> 0 </a> </td> <td class="c0" > <a href="blib-lib-Image-ExifTool-WritePostScript-pl--branch.html#581-1"> 0 </a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 0 </td> <td class="s"> last if $data =~ /^%%EOF\b/; </td> </tr> <tr> <td class="h" > <a name="582">582</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="583">583</a> </td> <td class="c0" > <a href="#602"> 0 </a> </td> <td class="c0" > <a href="blib-lib-Image-ExifTool-WritePostScript-pl--branch.html#583-1"> 0 </a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 0 </td> <td class="s"> Write($outfile, $flags{TRAILER}) or $err = 1; </td> </tr> <tr> <td class="h" > <a name="584">584</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="585">585</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> # simply copy the rest of the file if any data is left </td> </tr> <tr> <td class="h" > <a name="586">586</a> </td> <td class="c3" > 1 </td> <td class="c0" > <a href="blib-lib-Image-ExifTool-WritePostScript-pl--branch.html#586-1"> 50 </a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 7 </td> <td class="s"> if (defined $data) { </td> </tr> <tr> <td class="h" > <a name="587">587</a> </td> <td class="c3" > 1 </td> <td class="c0" > <a href="blib-lib-Image-ExifTool-WritePostScript-pl--branch.html#587-1"> 50 </a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 5 </td> <td class="s"> Write($outfile, $data) or $err = 1; </td> </tr> <tr> <td class="h" > <a name="588">588</a> </td> <td class="c3" > 1 </td> <td class="c0" > <a href="blib-lib-Image-ExifTool-WritePostScript-pl--branch.html#588-1"> 50 </a> </td> <td class="c0" > <a href="blib-lib-Image-ExifTool-WritePostScript-pl--condition.html#588-1"> 0 </a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 13 </td> <td class="s"> Write($outfile, @lines) or $err = 1 if @lines; </td> </tr> <tr> <td class="h" > <a name="589">589</a> </td> <td class="c3" > 1 </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 9 </td> <td class="s"> while ($raf->Read($data, 65536)) { </td> </tr> <tr> <td class="h" > <a name="590">590</a> </td> <td class="c3" > 1 </td> <td class="c0" > <a href="blib-lib-Image-ExifTool-WritePostScript-pl--branch.html#590-1"> 50 </a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 7 </td> <td class="s"> $dos and CheckPSEnd($raf, \$data); </td> </tr> <tr> <td class="h" > <a name="591">591</a> </td> <td class="c3" > 1 </td> <td class="c0" > <a href="blib-lib-Image-ExifTool-WritePostScript-pl--branch.html#591-1"> 50 </a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 9 </td> <td class="s"> Write($outfile, $data) or $err = 1; </td> </tr> <tr> <td class="h" > <a name="592">592</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="593">593</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="594">594</a> </td> <td class="c3" > 1 </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 6 </td> <td class="s"> last; # all done! </td> </tr> <tr> <td class="h" > <a name="595">595</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="596">596</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="597">597</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> # write new information or copy existing line </td> </tr> <tr> <td class="h" > <a name="598">598</a> </td> <td class="c3" > 9 </td> <td class="c0" > <a href="blib-lib-Image-ExifTool-WritePostScript-pl--branch.html#598-1"> 50 </a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 25 </td> <td class="s"> Write($outfile, $data) or $err = 1; </td> </tr> <tr> <td class="h" > <a name="599">599</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="600">600</a> </td> <td class="c3" > 1 </td> <td class="c0" > <a href="blib-lib-Image-ExifTool-WritePostScript-pl--branch.html#600-1"> 50 </a> </td> <td class="c0" > <a href="blib-lib-Image-ExifTool-WritePostScript-pl--condition.html#600-1"> 33 </a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 5 </td> <td class="s"> if ($dos and not $err) { </td> </tr> <tr> <td class="h" > <a name="601">601</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> # must go back and set length of PS section in DOS header (very dumb design) </td> </tr> <tr> <td class="h" > <a name="602">602</a> </td> <td class="c0" > <a href="#603"> 0 </a> </td> <td class="c0" > <a href="blib-lib-Image-ExifTool-WritePostScript-pl--branch.html#602-1"> 0 </a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 0 </td> <td class="s"> if (ref $outfile eq 'SCALAR') { </td> </tr> <tr> <td class="h" > <a name="603">603</a> </td> <td class="c0" > <a href="#605"> 0 </a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 0 </td> <td class="s"> Set32u(length($$outfile) - $psNewStart, $outfile, 8); </td> </tr> <tr> <td class="h" > <a name="604">604</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> } else { </td> </tr> <tr> <td class="h" > <a name="605">605</a> </td> <td class="c0" > <a href="#606"> 0 </a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 0 </td> <td class="s"> my $pos = tell $outfile; </td> </tr> <tr> <td class="h" > <a name="606">606</a> </td> <td class="c0" > <a href="#610"> 0 </a> </td> <td class="c0" > <a href="blib-lib-Image-ExifTool-WritePostScript-pl--branch.html#606-1"> 0 </a> </td> <td class="c0" > <a href="blib-lib-Image-ExifTool-WritePostScript-pl--condition.html#606-1"> 0 </a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 0 </td> <td class="s"> unless (seek($outfile, 8, 0) and </td> </tr> <tr> <td class="h" > <a >&nbsp;</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="c0" > <a href="blib-lib-Image-ExifTool-WritePostScript-pl--condition.html#-2"> 0 </a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> &nbsp; </td> </tr> <tr> <td class="h" > <a name="607">607</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> print $outfile Set32u($pos - $psNewStart) and </td> </tr> <tr> <td class="h" > <a name="608">608</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> seek($outfile, $pos, 0)) </td> </tr> <tr> <td class="h" > <a name="609">609</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> { </td> </tr> <tr> <td class="h" > <a name="610">610</a> </td> <td class="c0" > <a href="#611"> 0 </a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 0 </td> <td class="s"> $et->Error("Can't write DOS-style PS files in non-seekable stream"); </td> </tr> <tr> <td class="h" > <a name="611">611</a> </td> <td class="c0" > 0 </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 0 </td> <td class="s"> $err = 1; </td> </tr> <tr> <td class="h" > <a name="612">612</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="613">613</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="614">614</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="615">615</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> # issue warning if we couldn't write any information </td> </tr> <tr> <td class="h" > <a name="616">616</a> </td> <td class="c3" > 1 </td> <td class="c0" > <a href="blib-lib-Image-ExifTool-WritePostScript-pl--branch.html#616-1"> 50 </a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 5 </td> <td class="s"> unless ($err) { </td> </tr> <tr> <td class="h" > <a name="617">617</a> </td> <td class="c3" > 1 </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 4 </td> <td class="s"> my (@notDone, $dir); </td> </tr> <tr> <td class="h" > <a name="618">618</a> </td> <td class="c3" > 1 </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 3 </td> <td class="s"> delete $$newTags{XMP_HINT}; </td> </tr> <tr> <td class="h" > <a name="619">619</a> </td> <td class="c3" > 1 </td> <td class="c0" > <a href="blib-lib-Image-ExifTool-WritePostScript-pl--branch.html#619-1"> 50 </a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 8 </td> <td class="s"> push @notDone, 'PostScript' if %$newTags; </td> </tr> <tr> <td class="h" > <a name="620">620</a> </td> <td class="c3" > 1 </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 3 </td> <td class="s"> foreach $dir (qw{Photoshop ICC_Profile XMP}) { </td> </tr> <tr> <td class="h" > <a name="621">621</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> push @notDone, $dir if $$editDirs{$dir} and not $doneDir{$dir} and </td> </tr> <tr> <td class="h" > <a name="622">622</a> </td> <td class="c3" > 3 </td> <td class="c0" > <a href="blib-lib-Image-ExifTool-WritePostScript-pl--branch.html#622-1"> 50 </a> </td> <td class="c0" > <a href="blib-lib-Image-ExifTool-WritePostScript-pl--condition.html#622-1"> 66 </a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 18 </td> <td class="s"> not $$et{DEL_GROUP}{$dir}; </td> </tr> <tr> <td class="h" > <a >&nbsp;</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="c0" > <a href="blib-lib-Image-ExifTool-WritePostScript-pl--condition.html#-2"> 33 </a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> &nbsp; </td> </tr> <tr> <td class="h" > <a name="623">623</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="624">624</a> </td> <td class="c3" > 1 </td> <td class="c0" > <a href="blib-lib-Image-ExifTool-WritePostScript-pl--branch.html#624-1"> 50 </a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 12 </td> <td class="s"> @notDone and $et->Warn("Couldn't write ".join('/',@notDone).' information'); </td> </tr> <tr> <td class="h" > <a name="625">625</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="626">626</a> </td> <td class="c3" > 1 </td> <td class="c0" > <a href="blib-lib-Image-ExifTool-WritePostScript-pl--branch.html#626-1"> 50 </a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 5 </td> <td class="s"> $endToken and $et->Error("File missing $endToken"); </td> </tr> <tr> <td class="h" > <a name="627">627</a> </td> <td class="c3" > 1 </td> <td class="c0" > <a href="blib-lib-Image-ExifTool-WritePostScript-pl--branch.html#627-1"> 50 </a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > 16 </td> <td class="s"> return $err ? -1 : 1; </td> </tr> <tr> <td class="h" > <a name="628">628</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> } </td> </tr> <tr> <td class="h" > <a name="629">629</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> &nbsp; </td> </tr> <tr> <td class="h" > <a name="630">630</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> &nbsp; </td> </tr> <tr> <td class="h" > <a name="631">631</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> 1; # end </td> </tr> <tr> <td class="h" > <a name="632">632</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> &nbsp; </td> </tr> <tr> <td class="h" > <a name="633">633</a> </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> __END__ </td> </tr> </table> </body> </html>