©2002-2016,   Ido Millet,   ido@MilletSoftware.com
Page 141 
Using the Merged File Names to Generate Multi-Level Bookmarks  
Imagine you need to merge 6 employee files into a PDF with 3-level bookmarks.  However, you 
want to avoid using a text file to specify the multi-level bookmarks: 
To do this, you embed the multi-level bookmark information inside the pdf file names like so: 
The Bookmark information is contained within the [BM{
}] portion. You can use the rest of the 
text in the file name for other purposes.  In the example above, the numbers at the start of the file 
name are used to ensure proper alphabetical sorting when using wildcards to specify the files to 
be merged.  For example:   
... "PDF_MERGE:c:\temp\0?? [BM{*.pdf>c:\temp\Merge_result.pdf>BM_By_FileName" 
Each Bookmark level is specified inside a {
} and has 4 elements separated by a 
^
character: 
1. Title: the text to appear as the label of the bookmark 
2. Expand Status:  + to open the bookmark or 
to collapse it.  
3. Style:  0=regular  1=Bold   2=Italic   3=Italic Bold 
4. Color as RGB:  3 numbers between 0 and 255 separated by ";"  
Black=0;0;0  Maroon=225;0;0 etc. (see RGB #s at: http://web.njit.edu/~kevin/rgb.txt.html ) 
Pdf keywords metadata - add, remove, update PDF metadata in C#.net, ASP.NET, MVC, Ajax, WinForms, WPF
Allow C# Developers to Read, Add, Edit, Update and Delete PDF Metadata
remove metadata from pdf acrobat; preview edit pdf metadata
Pdf keywords metadata - VB.NET PDF metadata library: add, remove, update PDF metadata in vb.net, ASP.NET, MVC, Ajax, WinForms, WPF
Enable VB.NET Users to Read, Write, Edit, Delete and Update PDF Document Metadata
pdf metadata; view pdf metadata in explorer
©2002-2016,   Ido Millet,   ido@MilletSoftware.com
Page 142 
Merging 1-Page PDF Files into Layers in a Single PDF File 
Using a command line argument, you can instruct Visual CUT to merge several PDF files into 
multiple layers inside a single pdf file.  This is particularly useful for mapping applications 
where you users wish to turn on or off the visibility of certain map layers.   
Here is an example of such a merged file, opened in Adobe Acrobat reader  with the visibility of 
layers 1 (Streets Layer) & 3 (Stores) turned on: 
The command line argument structure is as follows: 
… 
"PDF_MERGE_Files_to_Layers:PDF_File_List>PDF_File_Target" 
The parameters (after the ":") are separated by a ">" and are as follows: 
1. PDF_File_List: comma separated list of the source files in the order they should be merged.  
If all source files share the same folder, you can specify the full path just for the first file 
If a source file is not found, a warning is written to Failure.log and that file is skipped.   
2. PDF_File_Target: the file path & name for the resulting merged PDF file. 
For example:  
"PDF_MERGE_Files_to_Layers:c:\temp\File1.pdf,File2.pdf,File3.pdf>c:\temp\Result.pdf"  
Dynamic File Names 
As always, you can use field or formula names within the command line argument (just like you 
drag & drop fields & formulas into the various options in the 3
rd
tab within Visual CUT.   
C# PDF Library SDK to view, edit, convert, process PDF file for C#
PDF SDK for .NET allows you to read, add, edit, update, and delete PDF file metadata, like Title, Subject, Author, Creator, Producer, Keywords, etc.
pdf metadata extract; modify pdf metadata
How to C#: Basic SDK Concept of XDoc.PDF for .NET
XDoc.PDF for .NET supports editing PDF document metadata, like Title, Subject, Author, Creator, Producer, Keywords, Created Date, and Last Modified Date.
add metadata to pdf; edit multiple pdf metadata
©2002-2016,   Ido Millet,   ido@MilletSoftware.com
Page 143 
Using a Text File to Specify Files for Merging 
If you have a text file containing the list of files to be merged, such as shown below, you can 
instruct Visual CUT to use the text within that file as the list of files to be merged using the key 
word "List_File:" followed by the path & name of the text file. For example: 
"PDF_MERGE_Files_to_Layers:List_File:c:\temp\FileList.txt>c:\temp\Result.pdf" 
Controlling Layer Name & Visibility 
By default, the name of each layer is set to its source file name (without the .pdf portion) and the 
visibility of each layer is turned on. You can override these default settings by embedding the 
desired information inside a 
{OCG: 
… 
}
token as demonstrated by the text file sample above.   
The OCG token is inserted just before the ".pdf" portion of each source file.   
The token contains 2 elements separated by 
|| 
(2 vertical bars): 
1. Layer’s name 
2. Layer’s initial visibility (True or False
). 
VB.NET PDF: Basic SDK Concept of XDoc.PDF
XDoc.PDF for .NET supports editing PDF document metadata, like Title, Subject, Author, Creator, Producer, Keywords, Created Date, and Last Modified Date.
change pdf metadata; pdf metadata viewer
.NET PDF SDK - Description of All PDF Processing Control Feastures
PDF Metadata Edit. Support editing PDF document metadata: Title, Subject, Author, Creator, Producer, Keywords, Created Date, and Last Modified Date;
google search pdf metadata; clean pdf metadata
©2002-2016,   Ido Millet,   ido@MilletSoftware.com
Page 144 
Printing PDF Files 
Using a command line argument, you can instruct Visual CUT to print a PDF file. This is useful 
in combination with the previously discussed option of merging PDF files (see page 136).   
It allows you to merge multiple reports, even if they use different page orientations, and 
then print and staple the combined output as a single print job. 
PDF_Print 
The command line argument structure is as follows: 
… 
"PDF_PRINT:PDF_File>Printer_Name>Page_Scaling>Auto_Rotate_and_Center" 
The parameters (after the ":") are separated by a ">" and are as follows: 
1. PDF_File: The PDF file you wish to print.  
2. Printer_Name: the Windows name of the printer. 
Note: If you use "Default" as the printer name, the report gets printed to the default printer. 
3. [Optional] Page ScalingNoneFit, or Shrink (to fit paper size) 
4. [Optional] Auto Rotate & Center: True or False 
For example:  
"PDF_PRINT:c:\temp\Result.pdf>\\myprintsrvr\LASER 02"  
or 
"PDF_PRINT:c:\temp\Result.pdf>\\myprintsrvr\LASER 02>Shrink>True"  
Important Note: you can use field or formula names within the command line argument (just like 
you drag & drop fields & formulas into the various options in the 3
rd
tab within Visual CUT.  
The dynamic content of these fields/formulas would be substituted into the command line 
argument.  
For example, after you burst and merge multiple reports into a single PDF file for each Product 
Type (as described in Merging PDF Files), you can print and staple the resulting PDF file for 
each Product Type using the following command line argument:  
"PDF_PRINT:c:\temp\{@Product_Type}.pdf>\\myprintsrvr\LASER 02>Shrink>True"  
If the current bursting cycle is for a Product_Type of "Gloves," the command line argument then 
gets processed as:  
"PDF_PRINT:c:\temp\Gloves.pdf>\\myprintsrvr\LASER 02>Shrink>True"  
and the combined output for just Gloves from 3 different reports (with different page 
orientations) would then be printed and stapled together.  The process would then continue to 
print and staple the output for the next Product Type.  
Notes:  
To control number of copies printed, use the Print_Copies command line argument. If the 
dynamic value is zero, the printout would be skipped.  
To control print quality/speed, use the PDF_Print_Mode command line argument. 
©2002-2016,   Ido Millet,   ido@MilletSoftware.com
Page 145 
PDF_Clone_And_Print 
You may need to print multiple copies within a single print job (perhaps you wish to staple all 
these copies together). In such cases you can use the PDF_Clone_And_Print argument.  
It is identical to PDF_Print except for the addition of number of copies as the last element. 
The command line argument structure is as follows: 
"PDF_Clone_And_Print:PDF_File>Printer_Name>Page_Scaling> 
Auto_Rotate_and_Center>Copies" 
For example:  
"PDF_Clone_And_Print:\temp\Result.pdf>\\myprintsrvr\LASER 02>4"  
or 
"PDF_Clone_And_Print:\temp\Result.pdf>\\myprintsrvr\LASER
02>Shrink>True>4"  
Important Note: you can use field or formula names within the command line argument (just like 
you drag & drop fields & formulas into the various options in the 3
rd
tab within Visual CUT.  
The dynamic content of these fields/formulas would be substituted into the command line 
argument, including the number of copies.  
For example: 
"PDF_Clone_And_Print:\temp\Result.pdf>\\myprintsrvr\LASER 02>{@Copies}" 
©2002-2016,   Ido Millet,   ido@MilletSoftware.com
Page 146 
Printing PDF Files To Multiple Printer Trays 
You can instruct Visual CUT to split the printout of a single PDF file to multiple printer trays. 
For example, you may want to print the first page of a pdf file using a tray containing your 
company's letterhead, while the rest of the printout should use regular paper from another tray.   
Visual CUT provides two ways to split the printout of a PDF file to multiple printer trays: 
1.  Use the PDF_Print_Split command line argument to specify the page ranges 
2.  Use the PDF_Print_Split_Tag command line argument to indicate that Crystal (or any 
other process) has embedded text tags (#Tray::tray_name/number#) in the pdf on each 
page or on each page where a tray change should occur. 
Using PDF_Print_Split 
This command line argument structure is as follows: 
… 
"PDF_PRINT_SPLIT:c:\temp\Test.pdf>1::\\srv2\Laser3::Top||2to5::\\srv2\Laser3::Tray 2 
||6to999::\\srv2\Laser3::Bypass Tray" 
The parameters (after the ":") are as follows: 
1. PDF_File: The PDF file you wish to print.  
2. Page_Range::Printer_Name::Tray_Name  
The 2
nd
element can be repeated as many times as you need, with different page ranges, different 
trays, and even different printers.  Use "||" to separate each instance from the instance following 
it. 
Page range can be specified as a single page or as a range, using 'to' to separate the numbers. 
If you use "Default" as the printer name, the report gets printed to the default printer. 
Trays can be specified using their names or using their internal numbers. 
Important Note: you can use field or formula names within the command line argument (just like 
you drag & drop fields & formulas into the various options in the 3
rd
tab within Visual CUT.  
The dynamic content of these fields/formulas would be substituted into the command line 
argument. This allows you to dynamically control the page ranges that are sent to each 
printer tray! 
To control print quality/speed, use the PDF_Print_Mode command line argument. 
©2002-2016,   Ido Millet,   ido@MilletSoftware.com
Page 147 
Using PDF_Print_Split_Tag 
The advantage of this option is its ability to dynamically control paper trays using formula logic 
from within Crystal reports.  For example, it makes it easy to print the first and last pages in each 
group using one tray and print the rest of the pages from another tray.   
This command line argument structure is as follows: 
… 
"PDF_PRINT_SPLIT_TAG:c:\temp\Test.pdf>\\srv2\Laser3" 
The parameters (after the ":") are as follows: 
1. PDF_File: The PDF file you wish to print.  
2. Printer_Name  (use "Default" to print to the default printer) 
Visual CUT searches each page in the pdf document for text tags that look like: 
#Tray::2#
(in a case where the tray number is used) or 
#Tray::Bypass Tray#
(in a case where the tray name is used) 
Typically, these tags would be placed as Crystal formulas on the report being exported to pdf.   
For example, this formula (placed in the page header of the report) would cause the 1
st
page to 
use tray 3 and the rest of the pages would alternate between Tray 2 and Tray 1:
WhilePrintingRecords; 
Global StringVar gs_Printer_Tray; 
IF gs_Printer_Tray = "" THEN gs_Printer_Tray := "3" 
ELSE gs_Printer_Tray := Cstr(Remainder(PageNumber,2) + 1,0); 
"#Tray::" & gs_Printer_Tray & "#"; 
Notes:  
1.  set the font color of the formula to white, the tag would be invisible on the report as well as 
on the pdf file, but Visual CUT would still have access to it. Alternatively, if 
you keep the 
PDF_Tags_Delete_Default option in DataLink_Viewer.ini as True, Visual CUT removes the tag text 
after processing it.  Use non-proportional font for the tag formula (avoid Calibri and Bold/Italic). 
2.  The tag doesn't have to appear on every page of the report.  Pages that don't have the tag 
would be printed to the paper tray last specified in previous pages.  
3.  Tray numbers are not always obvious; "Tray 2" could actually be Tray #3 internally.  Hence, 
you should probably use Tray Names instead of Tray Numbers in the Tags. 
4.  Visual CUT sets the print job names shown in the printer queue to reflect the page range 
and tray name.  This makes it easy to monitor the process. 
5.  Make sure the printer is not setup to automatically select the paper source. 
6.  To control print quality/speed, use the PDF_Print_Mode command line argument. 
©2002-2016,   Ido Millet,   ido@MilletSoftware.com
Page 148 
Controlling Print Quality/Speed 
You can use the PDF_Print_Mode command line argument to control print quality and speed. 
The command line argument structure is as follows: 
… 
"PDF_Print_Mode:Quality_Option" 
The possible Quality_Option values (after the ":") are  
1 for Normal quality 
2 for high quality 
3 for highest quality 
©2002-2016,   Ido Millet,   ido@MilletSoftware.com
Page 149 
Adding Back-Pages 
In some scenarios, you may need to add to each page in the exported pdf a standard back-page.  
For example, invoices may require some legal language on the back of each page.  
Assuming you have the standard back-page as a single-page pdf file, Visual CUT can automate 
the process of: 
a)  Exporting the report to a pdf file
b)  Using the PDF_Insert_BackPage command line argument, Inserting the standard  
back-page after each page and saving to a new or to the original pdf export  
c)  Printing the resulting pdf file via PDF_Print command line argument.
Since the PDF_Print command line argument is already described in the sections above, this 
section explains how the PDF_Inseret_BackPage command line argument is used: 
Using PDF_Insert_BackPage 
This command line argument structure is as follows: 
… 
"PDF_Insert_BackPage:c:\temp\Export.pdf||c:\temp\BackPage.pdf||c:\temp\Result.pdf" 
The parameters (after the ":") are as follows: 
1. 
PDF_File: The PDF file that needs a back-page added  to each page. 
2. 
BackPage File: The 1-page PDF file to be inserted into the first file. 
3. 
The Final File
: (that’s the file you would use with PDF_Print)
Notes: 
1.  If a Final File option is not specified, the process will simply update the source PDF_File.  
For example:   
… 
PDF_Insert_BackPage:c:\temp\{Invoice_N}.pdf||c:\temp\BackPage.pdf" 
2.  As always (as demonstrated in the example above), you can use field or formula names 
within the command line argument (just like you drag & drop fields & formulas into the 
various options in the 3
rd
tab within Visual CUT.   
©2002-2016,   Ido Millet,   ido@MilletSoftware.com
Page 150 
Saving PDF Files to Image Files 
Using a command line argument, you can instruct Visual CUT to take a PDF file and save it to 
an image file.  The supported image types are: BMP, JPEG, WMF, EMF, EPS, PNG, GIF, or 
multi-page TIFF.  Here's an example of the command line argument structure: 
… 
"PDF_Save_As:c:\temp\Invoice.pdf>c:\temp\Invoice.bmp>BMP>72" 
The parameters (after the "PDF_Save_As:") are separated by a ">" and are as follows: 
1.  The path & name of the PDF file (typically, this would be the exported file, but you can 
convert any PDF file).  
2.  The path & name of the target image file  
Multi-Page Note: for TIF and G4 TIF export types, a multi-page pdf file results in a 
Multi-Page TIFF file. For all other image types, an image file for each page would be 
created with the page number at the end of the file name.  For example, if the Invoice.pdf 
file in the example above had 3 pages, Visual CUT would create 3 bitmap files: 
Invoice1.bmp, Invoice2.bmp, and Invoice3.bmp 
3. Image Type: BMP, JPEG, WMF, EMF, EMF+, EPS, PNG, GIF, HTML5, TIF, G4 TIF 
4. Image Quality in Dots Per Inch (DPI): a value of 72 will give the same result as Acrobat 
when the zoom level is 100%. 
Notes:  
TIF and G4 TIF are not supported on Windows XP or earlier versions. 
as usual, any of these arguments can contain references to fields or formulas and Visual CUT 
would dynamically replace the reference with the value in the report.  For example: 
… 
"PDF_Save_As:{@export_File_Name}.pdf>{@export_File_Name}.bmp>BMP>72" 
Documents you may be interested
Documents you may be interested