asp.net pdf viewer disable save : Print pdf thumbnails SDK application API .net html windows sharepoint pdflib-manual-5_0211-part405

5.1  Importing Raster Images s 111
Note PDFlib does not interpret resolution information from JPEG images in the SPIFF file format, nor 
color space information from JPEG images in the EXIF file format. JPEG images with multiple 
scans (this is a very rare flavor) are not supported due to restrictions in Acrobat.
GIF images. GIF images are always handled in pass-through mode (PDFlib does not 
implement LZW decompression). PDFlib supports the following flavors of GIF images:
>Due to restrictions in the compression schemes supported by the PDF file format, 
the entry in the GIF file called »LZW minimum code size« must have a value of 8 bits. 
Unfortunately, there is no easy way to determine this value for a certain GIF file. An 
image which contains more than 128 distinct color values will always qualify (e.g., a 
full 8-bit color palette with 256 entries). Images with a smaller number of distinct 
colors may also work, but it is difficult to tell in advance because graphics programs 
may use 8 bits or less as LZW minimum code size in this case, and PDFlib may there-
fore reject the image. The following trick which works in Adobe Photoshop and simi-
lar image processing software is known to result in GIF images which are accepted by 
PDFlib: load the GIF image, and change the image color mode from »indexed« to 
»RGB«. Now change the image color mode back to »indexed«, and choose a color pal-
ette with more than 128 entries, for example the Mac or Windows system palette, or 
the Web palette.
>The image must not be interlaced.
For other GIF image flavors conversion to the PNG graphics format is recommended.
Note In a particular test case PDFlib converted a GIF image to a PDF file which displays just fine, but 
results in a PostScript error when printed to a PostScript Level 2 or 3 printer. Since the problem 
does not occur with Ghostscript, we consider this a bug in the PostScript interpreter. You can 
work around the problem by selecting PostScript Level 1 output in Acrobat’s print dialog.
TIFF images. PDFlib will handle most TIFF images in pass-through mode. PDFlib sup-
ports the following flavors of TIFF images:
>compression schemes: uncompressed, CCITT (group 3, group 4, and RLE), ZIP (=Flate), 
LZW (with restrictions), and PackBits (=RunLength) are handled in pass-through 
mode; other compression schemes are handled by uncompressing.
>color: black and white, grayscale, RGB, and CMYK images; any alpha channel or mask 
which may be present in the file will be ignored.
>TIFF files containing more than one image (see Section 5.1.5, »Multi-Page Image 
Files«, page 115)
>Color depth must be 1, 2, 4, or 8 bits per color sample (this is a requirement of PDF).
Multi-strip TIFF images are converted to multiple images in the PDF file which will visu-
ally exactly represent the original image, but can be individually selected with Acrobat’s 
TouchUp object tool. Multi-strip TIFF images can be converted to single-strip images 
with the tiffcp command line tool which is part of the TIFFlib package.
1
The Image-
Magick
2
tool always writes single-strip TIFF images.
Some TIFF features (e.g., CIEL*a*b* color space, JPEG compression) and certain combi-
nations of features (e.g., LZW compression and alpha channel or mask, LZW compres-
sion and tiling) are not supported.
1. See http://www.libtiff.org 
2. See http://www.imagemagick.org 
Print pdf thumbnails - Draw thumbnail images for PDF in C#.net, ASP.NET, MVC, Ajax, WinForms, WPF
Support Thumbnail Generation with Various Options for Quick PDF Navigation
program to create thumbnail from pdf; pdf first page thumbnail
Print pdf thumbnails - VB.NET PDF Thumbnail Create SDK: Draw thumbnail images for PDF in vb.net, ASP.NET, MVC, Ajax, WinForms, WPF
Support Thumbnail Generation with Various Options for Quick PDF Navigation
enable pdf thumbnail preview; how to make a thumbnail of a pdf
112
Chapter 5:  Importing and Placing Objects
BMP images. BMP images cannot be handled in pass-through mode. PDFlib supports 
the following flavors of BMP images:
>BMP versions 2 and 3;
>color depth 1, 4, and 8 bits per component, including 3x8=24 bit TrueColor;
>black and white or RGB color (indexed and direct); 
>uncompressed as well as 4-bit and 8-bit RLE compression;
>PDFlib will not mirror images if the pixels are stored in bottom-up order (this is a 
rarely used feature in BMP which is interpreted differently in applications).
CCITT images. Group 3 or Group 4 fax compressed image data are always handled in 
pass-through mode. Note that this format actually means raw CCITT-compressed image 
data, not TIFF files using CCITT compression. Raw CCITT compressed image files are usu-
ally not supported in end-user applications, but can only be generated with fax-related 
software. Since PDFlib is unable to analyze CCITT images, all relevant image parameters 
have to be passed to PDF_load_image() by the client.
Raw data. Uncompressed (raw) image data may be useful for some special applica-
tions. The nature of the image is deduced from the number of color components: 1 com-
ponent implies a grayscale image, 3 components an RGB image, and 4 components a 
CMYK image.
5.1.3Image Masks and Transparency
Transparency in PDF. PDF supports various transparency features, all of which are im-
plemented in PDFlib:
>Masking by position: an image may carry the intrinsic information »print the fore-
ground or the background«. This is realized by a 1-bit mask image, and is often used 
in catalog images.
>Masking by color value: pixels of a certain color are not painted, but the previously 
painted part of the page shines through instead (»ignore all blue pixels in the im-
age«). In TV and video technology this is also known as bluescreening, and is most of-
ten used for combining the weather man and the map into one image.
>PDF1.4 introduced alpha channels or soft masks. These can be used to create a 
smooth transition between foreground and background, or to create semi-transpar-
ent objects (»blend the image with the background«). Soft masks are represented by 
1-component images with 1-8 bits per pixel.
PDFlib supports three kinds of transparency information in images: implicit transpar-
ency, explicit transparency, and image masks.
Implicit transparency. In the implicit case, the transparency information from an ex-
ternal image file is respected, provided the image file format supports transparency or 
an alpha channel (this is not the case for all image file formats). Transparency informa-
tion is detected in the following image file formats:
>GIF image files may contain a single transparent color value which is respected by 
PDFlib.
>PNG image files may contain several flavors of transparency information, or a full al-
pha channel. PDFlib will retain single transparent color values; if multiple color val-
C# HTML5 PDF Viewer SDK to view PDF document online in C#.NET
Export PDF in WPF. Print PDF in WPF. PDF Create. Create PDF from Word. Create PDF from Excel. File: Compress PDF. Page: Create Thumbnails. Page: Insert PDF Pages
create thumbnail jpg from pdf; pdf thumbnails
VB.NET PDF- View PDF Online with VB.NET HTML5 PDF Viewer
View PDF in WPF. Annotate PDF in WPF. Export PDF in WPF. Print PDF in WPF. PDF Create. File: Compress PDF. Page: Create Thumbnails. Page: Insert PDF Pages. Page
pdf files thumbnails; no pdf thumbnails in
5.1  Importing Raster Images s 113
ues with an attached alpha value are given, only the first one with an alpha value be-
low 50 percent is used. A full alpha channel is ignored.
Explicit transparency. The explicit case requires two steps, both of which involve im-
age operations. First, an image must be prepared for later use as a transparency mask. 
This is accomplished by opening the image with the mask option. In PDF1.3, which sup-
ports only 1-bit masks, using this option is required; in PDF1.4 it is optional. The follow-
ing kinds of images can be used for constructing a mask:
>PNG images
>TIFF images (only single-strip)
>raw image data
Pixel values of 0 in the mask will result in the corresponding area of the masked image 
being painted, while high pixel values result in the background shining through. If the 
pixel has more than 1 bit per pixel, intermediate values will blend the foreground image 
against the background, providing for a transparency effect. In the second step the 
mask is applied to another image which itself is acquired through one of the image 
functions:
mask = PDF_load_image(p, "png", maskfilename, 0, "mask");
if (mask == -1)
return;
sprintf(optlist, "masked %d", mask);
image = PDF_load_image(p, type, filename, optlist)
if (image == -1)
return;
PDF_fit_image(p, image, x, y, "");
Note the different use of the option list for PDF_load_image(): mask for defining a mask, 
and masked for applying a mask to another image.
The image and the mask may have different pixel dimensions; the mask will auto-
matically be scaled to the image’s size.
Note PDFlib converts multi-strip TIFF images to multiple PDF images, which would be masked indi-
vidually. Since this is usually not intended, this kind of images will be rejected both as a mask 
as well as a masked target image. Also, it is important to not mix the implicit and explicit cases, 
i.e., don’t use images with transparent color values as mask.
Image masks. Image masks are images with a bit depth of 1 (bitmaps) in which 0-bits 
are treated as transparent: whatever contents already exist on the page will shine 
through the transparent parts of the image. 1-bit pixels are colorized with the current 
fill color. The following kinds of images can be used as image masks:
>PNG images
>TIFF images (single- or multi-strip)
>JPEG images (only as soft mask, see below)
>BMP; note that BMP images are oriented differently than other image types. For this 
reason BMP images must be reflected along the x axis before they can be used as a 
mask.
>raw image data
Image masks are simply opened with the mask option, and placed on the page after the 
desired fill color has been set:
C# PDF Convert to Jpeg SDK: Convert PDF to JPEG images in C#.net
Support of converting from any single one PDF page and multiple pages. Thumbnails can be created from PDF pages. Support for customizing image size.
enable pdf thumbnails in; view pdf thumbnails in
C# PDF Print Library: Print PDF documents in C#.net, ASP.NET
WPF Viewer & Editor. WPF: View PDF. WPF: Annotate PDF. WPF: Export PDF. WPF: Print PDF. File: Compress PDF. Page: Create Thumbnails. Page: Insert PDF Pages. Page
create thumbnails from pdf files; can't see pdf thumbnails
114
Chapter 5:  Importing and Placing Objects
mask = PDF_load_image(p, "tiff", maskfilename, 0, "mask");
PDF_setcolor(p, "fill", "rgb", (float) 1, (float) 0, (float) 0, (float) 0);
if (mask != -1) {
PDF_fit_image(p, mask, x, y, "");
}
If you want to apply a color to an image without the 0-bit pixels being transparent you 
must use the colorize option (see Section 5.1.4, »Colorizing Images«, page 114).
Soft masks. Soft masks generalize the concept of image masks to masks with more 
than 1 bit. They have been introduced in PDF1.4 and blend the image against some ex-
isting background. PDFlib accepts all kinds of single-channel (grayscale) images as soft 
mask. They can be used the same way as image masks, provided the PDF output com-
patibility is at least PDF1.4.
Ignoring transparency. Sometimes it is desirable to ignore any transparency informa-
tion which may be contained in an image file. For example, Acrobat’s anti-aliasing fea-
ture (also known as »smoothing«) isn’t used for 1-bit images which contain black and 
transparent as their only colors. For this reason imported images with fine detail (e.g., 
rasterized text) may look ugly when the transparency information is retained in the 
generated PDF. In order to deal with this situation, PDFlib’s automatic transparency 
support can be disabled with the ignoremask option when opening the file:
image = PDF_load_image(p, "gif", filename, 0, "ignoremask");
5.1.4Colorizing Images
Similarly to image masks, where a color is applied to the non-transparent parts of an 
image, PDFlib supports colorizing an image with a spot color. This feature works for 
black and white or grayscale images in the following formats:
>BMP
>PNG
>JPEG
>TIFF (single- or multi-strip)
>GIF
For images with an RGB palette, colorizing is only reasonable when the palette contains 
only gray values, and the palette index is identical to the gray value. PDFlib does not 
check this condition, however.
In order to colorize an image with a spot color you must supply the colorize option 
when opening the image, and supply the respective spot color handle which must have 
been retrieved with PDF_makespotcolor():
PDF_setcolor(p, "both", "cmyk", 1, .79, 0, 0);
spot = PDF_makespotcolor(p, "PANTONE Reflex Blue CV", 0);
sprintf(optlist, "colorize %d", spot);
image = PDF_load_image(p, "tiff", "image.tif", 0, optlist)
if (image != -1) {
PDF_fit_image(p, image, x, y, "");
}
VB.NET PDF File Compress Library: Compress reduce PDF size in vb.
image resources: Since images are usually or large size, images size reducing can help to reduce PDF file size Embedded page thumbnails. Embedded print settings.
thumbnail pdf preview; how to create a thumbnail of a pdf document
VB.NET PDF Print Library: Print PDF documents in vb.net, ASP.NET
View PDF in WPF. Annotate PDF in WPF. Export PDF in WPF. Print PDF in WPF. PDF Create. File: Compress PDF. Page: Create Thumbnails. Page: Insert PDF Pages. Page
pdf files thumbnail preview; pdf thumbnail generator online
5.1  Importing Raster Images s 115
5.1.5Multi-Page Image Files
PDFlib supports TIFF files which contain more than one image, also known as multi-
page files. In order to use multi-page TIFFs, additional string and numerical parameters 
are used in the call to PDF_load_image():
image = PDF_load_image(p, "tiff", filename, 0 "page 2");
The page option indicates that a multi-image file is to be used. The last parameter speci-
fies the number of the image to use. The first image is numbered 1. This option may be 
increased until PDF_load_image() returns -1, signalling that no more images are avail-
able in the file.
A code fragment similar to the following can be used to convert all images in a multi-
image TIFF file to a multi-page PDF file:
for (frame = 1; /* */ ; frame++) {
sprintf(optlist, "page %d", frame);
image = PDF_load_image(p, "tiff", filename, 0, optlist);
if (image == -1)
break;
PDF_begin_page(p, width, height);
PDF_fit_image(p, image, 0.0, 0.0, "");
PDF_close_image(p, image);
PDF_end_page(p);
}
C# PDF File Compress Library: Compress reduce PDF size in C#.net
image resources: Since images are usually or large size, images size reducing can help to reduce PDF file size Embedded page thumbnails. Embedded print settings.
show pdf thumbnail in html; generate thumbnail from pdf
VB.NET PDF - Print PDF with VB.NET WPF PDF Viewer
View PDF in WPF. Annotate PDF in WPF. Export PDF in WPF. Print PDF in WPF. PDF Create. File: Compress PDF. Page: Create Thumbnails. Page: Insert PDF Pages. Page
pdf thumbnail generator; .pdf printing in thumbnail size
116
Chapter 5:  Importing and Placing Objects
5.2Importing PDF Pages with PDI (PDF Import Library)
Note All functions described in this section require PDFlib+PDI. The PDF import library (PDI) is not 
contained in PDFlib or PDFlib Lite. Although PDI is integrated in all precompiled editions of 
PDFlib, a license key for PDI (or PPS, which includes PDI) is required.
5.2.1PDI Features and Applications
When the optional PDI (PDF import) library is attached to PDFlib, pages from existing 
PDF documents can be imported. PDI contains a parser for the PDF file format, and pre-
pares pages from existing PDF documents for easy use with PDFlib. Conceptually, im-
ported PDF pages are treated similarly to imported raster images such as TIFF or PNG: 
you open a PDF document, choose a page to import, and place it on an output page, ap-
plying any of PDFlib’s transformation functions for translating, scaling, rotating, or 
skewing the imported page. Imported pages can easily be combined with new content 
by using any of PDFlib’s text or graphics functions after placing the imported PDF page 
on the output page (think of the imported page as the background for new content). Us-
ing PDFlib and PDI you can easily accomplish the following tasks:
>overlay two or more pages from multiple PDF documents (e.g., add stationary to ex-
isting documents in order to simulate preprinted paper stock);
>place PDF ads in existing documents;
>clip the visible area of a PDF page in order to get rid of unwanted elements (e.g., crop 
marks), or scale pages;
>impose multiple pages on a single sheet for printing;
>process multiple PDF/X-conforming documents to create a new PDF/X file;
>add some text (e.g., headers, footers, stamps, page numbers) or images (e.g., company 
logo) to existing PDF pages;
>copy all pages from an input document to the output document, and place barcodes 
on the pages.
In order to place a PDF background page and populate it with dynamic data (e.g., mail 
merge, personalized PDF documents on the Web, form filling) we recommend using PDI 
along with PDFlib blocks (see Chapter 6).
5.2.2Using PDI Functions with PDFlib
General considerations. It is important to understand that PDI will only import the ac-
tual page contents, but not any hypertext features (such as sound, movies, embedded 
files, hypertext links, form fields, JavaScript, bookmarks, thumbnails, and notes) which 
may be present in the imported PDF document. These hypertext features can be gener-
ated with the corresponding PDFlib functions. PDFlib blocks will also be ignored when 
importing a page.
You can not re-use individual elements of imported pages with other PDFlib func-
tions. For example, re-using fonts from imported documents for some other content is 
not possible. Instead, all required fonts must be configured in PDFlib. If multiple im-
ported documents contain embedded font data for the same font, PDI will not remove 
any duplicate font data. On the other hand, if fonts are missing from some imported 
PDF, they will also be missing from the generated PDF output file. As an optimization 
you should keep the imported document open as long as possible in order to avoid the 
same fonts to be embedded multiple times in the output document.
5.2  Importing PDF Pages with PDI (PDF Import Library) ) 117
PDI does not change the color of imported PDF documents in any way. For example, 
if a PDF contains ICC color profiles these will be retained in the output document.
PDFlib uses the template feature for placing imported PDF pages on the output page. 
Since some third-party PDF software does not correctly support the templates, restric-
tions in certain environments other than Acrobat may apply (see Section 3.2.4, »Tem-
plates«, page 57). 
PDFlib-generated output which contains imported pages from other PDF documents 
can be processed with PDFlib+PDI again. However, due to restrictions in PostScript 
printing the nesting level should not exceed 10.
Code fragments for importing PDF pages. Dealing with pages from existing PDF docu-
ments is possible with a very simple code structure. The following code snippet opens a 
page from an existing document, and copies the page contents to a new page in the out-
put PDF document (which must have been opened before):
int
doc, page, pageno = 1;
char
*filename = "input.pdf";
...
doc = PDF_open_pdi(p, filename, "", 0);
if (doc == -1) {
printf("Couldn't open PDF input file '%s'\n", filename);
exit(1);
}
page = PDF_open_pdi_page(p, doc, pageno, "");
if (page == -1) {
printf("Couldn't open page %d of PDF file '%s'\n", pageno, filename);
exit(2);
}
/* dummy page size, will be modified by the adjustpage option */
PDF_begin_page(p, 20, 20);
PDF_fit_pdi_page(p, page, 0, 0, "adjustpage");
PDF_close_pdi_page(p, page);
...add more content to the page using PDFlib functions...
PDF_end_page(p);
The last argument to PDF_fit_pdi_page() is an option list which supports a variety of op-
tions for positioning, scaling, and rotating the imported page. Details regarding these 
options are discussed in Section 5.3, »Placing Images and Imported PDF Pages«, page 119.
Dimensions of imported PDF pages. Imported PDF pages are regarded similarly to im-
ported raster images, and can be placed on the output page using PDF_fit_pdi_page(). By 
default, PDI will import the page exactly as it is displayed in Acrobat, in particular:
>cropping will be retained (in technical terms: if a CropBox is present, PDI favors the 
CropBox over the MediaBox; see Section 3.2.2, »Page Sizes and Coordinate Limits«, 
page 55);
>rotation which has been applied to the page will be retained.
Alternatively, you can use the pdiusebox option to explicitly instruct PDI to use any of 
the MediaBox, CropBox, BleedBox, TrimBox or ArtBox entries of a page (if present) for 
determining the size of the imported page (see Table 7.28 for details).
118
Chapter 5:  Importing and Placing Objects
Many important properties, such as width and height of an imported PDF page, all of 
the Box entries, and the number of pages in a document, can be queried via PDFlib’s pa-
rameter mechanism. The relevant parameters are listed in Table 7.27 and Table 7.28. 
These properties can be useful in making decisions about the placement of imported 
PDF pages on the output page.
Imported PDF pages with layers. Acrobat 6 (PDF1.5) introduced the layer functionality 
(technically known as optional content). PDI will ignore any layer information which 
may be present in a file. All layers in the imported page, including invisible layers, will 
be visible in the generated output.
5.2.3Acceptable PDF Documents
Generally, PDI will happily process all kinds of PDF documents which can be opened 
with Acrobat, regardless of PDF version number or features used within the file. In order 
to import pages from encrypted documents (i.e., files with permission settings or pass-
word) the corresponding master password must be supplied.
However, in rare cases a PDF document or a particular page of a document may be re-
jected by PDI.
If a PDF document or page can’t be imported successfully PDF_open_pdi() and PDF_
open_pdi_page() will return an error code by default. However, if you need to know 
more details about the failure set the pdiwarning option in the option lists of these func-
tions to true. Alternatively, the pdiwarning parameter can be set on a global basis:
PDF_set_parameter(p, "pdiwarning", "true");
/* enable PDI warnings */
This will cause PDF_open_pdi() and PDF_open_pdi_page() to raise an exception with 
more details about the failure in the corresponding exception message. The following 
kinds of PDF documents can not be imported with PDI:
>PDF documents which use a higher PDF version number than the PDF output docu-
ment that is currently being generated. The reason is that PDFlib can no longer make 
sure that the output will actually conform to the requested PDF version after a PDF 
with a higher version number has been imported. Solution: set the version of the 
output PDF to the required level using the compatibility parameter.
>Files with a damaged cross-reference table. You can identify such files by Acrobat’s 
warning message File is damaged but is being repaired. Solution: open and resave the 
file with Acrobat.
5.3  Placing Images and Imported PDF Pages s 119
5.3Placing Images and Imported PDF Pages
The PDF_fit_image() function for placing raster image and templates, as well as PDF_fit_
pdi_page() for placing imported PDF pages offer a wealth of options for controlling the 
placement on the page. This section demonstrates the most important options by look-
ing at some common application tasks. A complete list and descriptions of all options 
can be found in Table 7.23.
Embedding raster images is easy to accomplish with PDFlib. The image file must first 
be loaded with PDF_load_image(). This function returns an image handle which can be 
used along with positioning and scaling options in PDF_fit_image().
Embedding imported PDF pages works along the same line. The PDF page must be 
opened with PDF_open_pdi_page() to retrieve a page handle for use in PDF_fit_pdi_
page(). The same positioning and scaling options can be used as for raster images.
All samples in this section work the same for raster images, templates, and imported 
PDF pages. Although code samples are only presented for raster images we talk about 
placing objects in general. Note that before calling any of the fit functions a call to PDF_
load_image() or PDF_open_pdi() and PDF_open_pdi_page() must be issued. For the sake of 
simplicity these calls are not reproduced here.
5.3.1Scaling, Orientation, and Rotation
Simple Placing. Let’s start with the simplest case (see Figure 5.1): an object will be 
placed at a certain position it its original size:
PDF_fit_image(p, image, 80, 100, "");
In this code fragment the object will be placed with its lower left corner at the point 
(80,100) in the user coordinate system. This point is called the reference point. The op-
tion list (the last function parameter) is empty. This means the object will be place in its 
original size at the provided reference point.
Placing with Scaling. The following variation is also very easy to use (see Figure 5.2) We 
place the object as in the previous example, but will modify the object’s scaling:
PDF_fit_image(p, image, 80, 100, "scale 0.5");
Fig. 5.1
Simple placing
Fig. 5.2
Placing with scaling
120
Chapter 5:  Importing and Placing Objects
This code fragment places the object with its lower left corner at the point (80,100) in 
the user coordinate system. In addition, the object will be scaled in x and y direction by a 
scaling factor of 0.5, which makes it appear at 50 percent of its original size.
Placing with orientation. In the next code fragment we will orientate the object in di-
rection west (see Figure 5.3):
PDF_fit_image(p, image, 80, 100, "scale 0.5 orientate west");
This code fragment orientates the object towards western direction (90 degrees coun-
terclockwise), and then translates the object’s lower left corner (after applying the 
orientate option) to the reference point (x,y). The object will be rotated in itself.
Placing with rotation. Rotating an object (see Figure 5.4) works similarly to orienta-
tion. However, it not only affects the placed object but the whole coordinate system. Be-
fore placing the object the coordinate system will be rotated at the reference point (x,y) 
by 90 degrees counterclockwise. The rotated object’s lower right corner (which is the 
unrotated object’s lower left corner) will end up at the reference point. The function call 
to achieve this looks as follows:
PDF_fit_image(p, image, 80, 100, "scale 0.5 rotate 90");
Since there is no translation in this case the object will be partially moved outside the 
page.
Comparing orientation and rotation. Orientation and rotation are quite similar con-
cepts, but are different nevertheless, and you should be aware of these differences. Fig-
ure 5.5 and Figure 5.6 demonstrate the principal difference between the orientate and 
rotate options:
>The orientate option rotates the object at the reference point (x, y) and subsequently 
translates it. This option supports the direction keywords north, east, west, and south.
>The rotate option rotates the object at the reference point (x, y) without any transla-
tion. This option supports arbitrary rotation angles. These have to be specified nu-
merically in degrees (a full circle has 360 degrees).
Fig. 5.3
Placing with orientation
Fig. 5.4
Placing with rotation
Documents you may be interested
Documents you may be interested