c# wpf free pdf viewer : Acrobat extract pages from pdf application control cloud html azure windows class ATGCommProgGuide8-part2162

ATG  C om mer ce P ro g ramm in g   Gui d e 
63  
4  -  Us i n g  an d  E xt en d i n g  t h e  Pro d u ct  C at al o g  
μ
You may want to add properties to the SKU item type, or create sub-types of the SKU item type that 
include additional properties. If you create a sub-type, you must add it to the 
SKUItemTypes
property of 
the 
/atg/commerce/catalog/CatalogTools
component in order for it to be available to the PMDL 
rules used in promotions. See Extending the Category and Product Item Types in this guide for 
information about extending catalog item types. See the ATG Commerce Guide to Setting Up a Store and 
the ATG Merchandising Guide for Business Users for information on promotions. 
An alternate approach, which does not require modifying the SKU item definition, is to store 
configuration information in the 
dynamicAttributes
property. The property is a Map that stores a 
key/value pair for each attribute you define. For example, you could specify the 
dynamicAttributes
property of a SKU as 
{color=red,size=small}
. This mechanism is very flexible, because it allows each 
SKU to have its own set of configuration attributes. 
One disadvantage of this approach is that data is stored less efficiently than if you explicitly add 
configuration properties to the definition of the SKU item. If you add properties, each property 
corresponds to a column in a table, so each SKU can be represented by a single row in the table. If you use 
dynamicAttributes
, each SKU is represented by one row per attribute. So if 
dynamicAttributes
specifies three attributes (e.g., size, color, and length), the SKU will be represented by three rows in a 
table. The additional rows can have a negative effect on performance. Therefore, if you need to define a 
large number of attributes, explicitly adding properties to the SKU item definition is a better approach. 
Configurable SKUs 
A configurable SKU holds other SKUs, in a different way than linked SKUs do. An example of a 
configurable item is a computer; customers can order them with varying amounts of memory, hard drive 
types, video cards, etc. Configurable items consist of a “base SKU” and a number of optional subSKUs for 
the user to choose among. 
The following repository items are used when working with configurable SKUs: 
Item 
Description 
configurableSku 
Base SKU for the product, to which other products can be added as 
options, such as a computer. 
configurableProperty 
A category of subSKUs, such as Memory or Modems. The 
configurableProperty
holds the list of 
configurationOptions
configurationOption 
The SKU representing the actual product option, such as a particular 
model of hard drive. 
foreignCatalog 
An external system with which ATG Commerce communicates.  
Acrobat extract pages from pdf - application control cloud:C# PDF Page Extract Library: copy, paste, cut PDF pages in C#.net, ASP.NET, MVC, Ajax, WinForms, WPF
Easy to Use C# Code to Extract PDF Pages, Copy Pages from One PDF File and Paste into Others
www.rasteredge.com
Acrobat extract pages from pdf - application control cloud:VB.NET PDF Page Extract Library: copy, paste, cut PDF pages in vb.net, ASP.NET, MVC, Ajax, WinForms, WPF
Detailed VB.NET Guide for Extracting Pages from Microsoft PDF Doc
www.rasteredge.com
ATG  C om merce  P ro gra mm in g  G ui d e 
64  
4  -  Us in g   and   Ex t en d in g   t he  P ro d uct   C at al og  
Catalog Folders 
You can use catalog folders to organize catalogs. Catalog folders are used only in the administrator user 
interface, not in the commerce site itself. The following table describes the folder item properties in the 
product catalog: 
Property 
Description 
creationDate 
Date this folder was created. 
description 
Short descriptive text for display with this folder. 
endDate 
Date this folder will no longer be available, if a collection filter is 
implemented to use this property. See the ATG Personalization 
Programming Guide for information about filtering. 
name 
File name of the folder. 
parentFolder 
Folder that contains this folder; if null, this folder is a root folder. 
path 
Complete pathname of the folder. 
startDate 
Date this folder becomes available, if a collection filter is implemented 
to use this property.  
siteIds 
If you are using ATG’s multisite feature, the IDs of the sites to which the 
catalog folder belongs. 
version 
Integer that is incremented automatically each time the folder is 
updated; used to prevent version conflict. 
Folders and Media Items 
As described in the SQL Content Repositories chapter of the ATG Repository Guide, a SQL Repository can be 
configured as a content repository. A content repository is composed of folder and content repository 
items. The product catalog defines folder and media item types that correspond to these two parts of the 
repository. 
You can use folders to organize media elements. Folders are used only in the administrator user interface, 
not in the commerce site itself. Both the folder and media items define several administrative properties: 
version
creationDate
startDate
endDate
, and 
description
. These properties are used as an aid 
to catalog administrators, not intended for display on the site. 
The 
media
item is similar to an abstract Java object; it cannot be instantiated itself. The item type is 
marked as abstract by tagging it as expert in the repository definition file. As part of this abstract 
definition, two properties are defined: 
data
and 
url
. These properties are intended to be overridden in 
the sub-types. 
application control cloud:.NET PDF Document Viewing, Annotation, Conversion & Processing
Extract hyperlink inside PDF. PDF Write. Redact text content, images, whole pages from PDF file. Annotate & Comment. Support for all the print modes in Acrobat PDF
www.rasteredge.com
application control cloud:C# PDF Converter Library SDK to convert PDF to other file formats
manipulate & convert standard PDF documents in .NET class applications independently, without using other external third-party dependencies like Adobe Acrobat.
www.rasteredge.com
ATG  C om mer ce P ro g ramm in g   Gui d e 
65  
4  -  Us i n g  an d  E xt en d i n g  t h e  Pro d u ct  C at al o g  
The 
media
item includes a property named 
type
that is used to specify the media sub-type of the item. 
The product catalog includes three sub-types: 
media-external: This item type references a piece of content that is stored outside the 
database. The content can be either be either a binary file or a text file. 
media-internal-binary: This item type can be used to store binary objects (such as 
images) in the catalog database. 
media-internal-text: This item type can be used to store text files (such as JSPs) in the 
catalog database. 
For information about uploading media elements to your product catalog, see ATG Commerce Catalog 
Administration of the ATG Commerce Guide to Setting Up a Store
Folder Properties 
The following table describes the folder item properties in the product catalog: 
Property 
Description 
creationDate 
Date this folder was created. 
description 
Short descriptive text for display with this folder. 
endDate 
Date this folder will no longer be available, if a collection filter is 
implemented to use this property. See the ATG Personalization 
Programming Guide for information about filtering. 
name 
File name of the folder. 
parentFolder 
Folder that contains this folder; if null, this folder is a root folder. 
path 
Complete pathname of the folder. 
startDate 
Date this folder becomes available, if a collection filter is implemented 
to use this property.  
version 
Integer that is incremented automatically each time the folder is 
updated; used to prevent version conflict. 
Media Item Properties 
The following table describes the media item properties in the product catalog: 
Property 
Description 
url 
Relative URL that can be used in a JSP to access the media item. 
application control cloud:C# powerpoint - PowerPoint Conversion & Rendering in C#.NET
documents in .NET class applications independently, without using other external third-party dependencies like Adobe Acrobat. PowerPoint to PDF Conversion.
www.rasteredge.com
application control cloud:C# Word - Word Conversion in C#.NET
Word documents in .NET class applications independently, without using other external third-party dependencies like Adobe Acrobat. Word to PDF Conversion.
www.rasteredge.com
ATG  C om merce  P ro gra mm in g  G ui d e 
66  
4  -  Us in g   and   Ex t en d in g   t he  P ro d uct   C at al og  
data 
Defines whether a media item is binary or text. 
mimeType 
A user-defined property that returns the content type value by 
examining the 
url
property. 
name 
File name for this media item. 
path 
Complete path for this media item. 
parentFolder 
Folder that contains this media item. 
startDate 
Date this media item becomes available, if a collection filter is 
implemented to use this property.  
endDate 
Date this media item will no longer be available. if a collection filter is 
implemented to use this property.  
description 
Short descriptive text for display with this media item. 
Using Media-External Properties 
In the media-external item type, the 
data
property is a user-defined property computed by the 
atg.repository.FilePropertyDescriptor
class. If the 
url
property is a relative URL, then 
data
is a 
java.io.File
object, which references the file. 
As part of defining a 
ContentRepositoryItem
, the item definition must supply a length and a last 
modified value. In a media-external item, these values are automatically extracted from the 
File
object 
returned from 
data
Using Media-Internal Properties 
The media-internal sub-types differ only in the way the 
data
property is defined. The 
data
property is 
either 
binary
(for media-internal-binary items) or 
text
(for media-internal-text items). 
The media-internal item types define their own 
length
and 
lastModified
properties. The 
mimeType
property is a user-defined property that is computed by the 
MimeTyperPropertyDescriptor
class, 
which determines the value from the 
name
property. 
The 
url
property of the media-internal item types is a user-defined property computed by the 
atg.distributor.DistributorPropertyDescriptor
class. When a customer accesses a media-
internal-binary or media-internal-text item, the 
/atg/commerce/catalog/ContentDistributorPool
service extracts the content from the database and generates a URL to make the item accessible to a web 
browser. 
For more information about configuring content distributors, see the Content Distribution chapter of the 
ATG Programming Guide
application control cloud:C# Windows Viewer - Image and Document Conversion & Rendering in
standard image and document in .NET class applications independently, without using other external third-party dependencies like Adobe Acrobat. Convert to PDF.
www.rasteredge.com
application control cloud:VB.NET PDF: How to Create Watermark on PDF Document within
Watermark Creator, users need no external application plugin, like Adobe Acrobat. VB example code to create graphics watermark on multiple PDF pages within the
www.rasteredge.com
ATG  C om mer ce P ro g ramm in g   Gui d e 
67  
4  -  Us i n g  an d  E xt en d i n g  t h e  Pro d u ct  C at al o g  
Internationalizing the Product Catalog 
If you want to internationalize your product catalog, you can extend the Commerce repository to support 
translated versions of some properties. This section outlines ATG’s recommended internationalization 
strategy, which is implemented as part of the Commerce Reference Store (CRS). This “best practice” offers 
the following benefits over other approaches: 
Applications can switch between international and non-international modes without 
requiring any JSP page changes. The same property names are used in the JSP page 
code and each repository derives the appropriate language as necessary. 
No database schema changes are required to add additional languages. 
To extend your repository to include internationalized values, follow these steps: 
1.
Decide which properties of which item types you want to translate. This example uses 
properties of the SKU item type, but you may need to translate product, category, and 
even catalog properties, depending on your catalog structure. 
2.
For each item type you are internationalizing, add new properties corresponding to 
that item type’s translatable properties. 
For example, you want to provide internationalized versions of four 
SKU
properties: 
displayName
description
size
, and 
color
. You would add four new properties 
(
displayNameDefault
descriptionDefault
sizeDefault
, and 
colorDefault
to the 
SKU
item descriptor. 
The new properties refer to the original properties’ database columns and represent 
the default text for the properties (thereby allowing us to redefine the original 
properties as derived properties). 
These four properties refer to the 
display_name
description
sku_size
, and 
color
columns, where default-language text for the content are stored. 
Add another property to the item type. This property (with a name such as 
translations
) is a map whose key is a 
locale
and whose value is an item of type 
baseType
Translation
, described below. Note that the 
locale
key does not have to 
be a fully qualified locale. 
Define a set of helper item types for all existing item types that have translatable 
properties. Our example uses the naming convention 
baseType
Translation
, where 
baseType
refers to an existing item type; for example, create a 
skuTranslation
item 
type to correspond with the 
sku
item type, a 
productTranslation
item type for the 
product
item type, and so on. 
baseType
Translation
items function as containers for locale-specific content. As 
such, each 
baseType
Translation
item type has properties that correspond to the 
translatable properties of its base item type. In our example, we have selected four 
SKU properties for translation (
displayName
description
size
, and 
color
).
Therefore, the 
skuTranslation
item also has four properties for 
displayname
description
size
, and 
color
. Each 
baseType
Translation
item type has its own 
table in the database, where each row represents a single 
basetype
Translation
item with a unique ID. For example, the 
cbp_sku_xlate
table contains all the 
application control cloud:C# Excel - Excel Conversion & Rendering in C#.NET
Excel documents in .NET class applications independently, without using other external third-party dependencies like Adobe Acrobat. Excel to PDF Conversion.
www.rasteredge.com
application control cloud:VB.NET PowerPoint: VB Code to Draw and Create Annotation on PPT
as a kind of compensation for limitations (other documents are compatible, including PDF, TIFF, MS on slide with no more plug-ins needed like Acrobat or Adobe
www.rasteredge.com
ATG  C om merce  P ro gra mm in g  G ui d e 
68  
4  -  Us in g   and   Ex t en d in g   t he  P ro d uct   C at al og  
skuTranslation
items, the 
cbp_prd_xlate
table contains all the 
productTranslation
items, and so on. 
Every base item (SKU, product, category) is tied, through its 
translations
property, to one or more 
baseType
Translation
items (one for each locale, with the exception of the default locale). The 
following example shows three 
sku
items and six corresponding 
skuTranslation
items which contain 
translated content for two locales, French and German. 
To create the relationships that connect a base item to its 
baseType
Translation
items, change the 
definitions of the translatable properties in the existing item types. The new definitions should specify 
that each translatable property is a derived property whose value is determined as follows: 
Use the current locale to look up a corresponding 
baseType
Translation
item in the 
translations
property map. The property derivation attempts to find a best match. 
First, it searches the 
locale
keys for a match on the entire locale with a variant, then it 
searches for a match on the locale without a variant, and finally it searches on just the 
language code. 
If a 
baseType
Translation
item exists for the current locale, use its value for the 
property. 
If a 
baseType
Translation
item doesn’t exist for the current locale, or its value for the 
property is null, use the 
translatableProperty
Default
value instead. 
The ATG Commerce Reference Store code uses the 
atg.repository.dp.LanguageTranslation
class 
to implement the derivation. 
The following example shows how CRS derives the 
sku.displayName
property for a store that has 
English (default), German, and French translations: 
1.
giftListShop.jsp
requests the 
sku.displayName
property for a SKU and 
determines the locale, which in this example is 
DE_de
application control cloud:DICOM to PDF Converter | Convert DICOM to PDF, Convert PDF to
users do not need to load Adobe Acrobat or any Convert all pages or certain pages chosen by users; download & perpetual update. Start Image DICOM PDF Converting.
www.rasteredge.com
application control cloud:BMP to PDF Converter | Convert Bitmap to PDF, Convert PDF to BMP
for Adobe Acrobat Reader & print driver during conversion; Support conversion of Bitmap - PDF files in both single & batch mode; Convert all pages or certain
www.rasteredge.com
ATG  C om mer ce P ro g ramm in g   Gui d e 
69  
4  -  Us i n g  an d  E xt en d i n g  t h e  Pro d u ct  C at al o g  
2.
The catalog repository finds the corresponding 
skuTranslation
item using the 
translations
property map. Based on the locale, the repository determines that it 
should reference the German 
skuTranslation
item. 
3.
The catalog repository returns the 
displayName
property from the German 
skuTranslation
item. 
4.
If no 
skuTranslation
item exists for the locale, it returns the value from 
displayNameDefault
Catalog Security 
Securing a catalog allows certain users to view and edit a catalog while preventing other users from doing 
so. ATG Commerce implements a security policy for catalogs based on the secured repositories feature 
(for more information, see the Secured Repositories chapter in the ATG Repository Guide). 
In the catalog security policy, an access control list (ACL) is stored for each individual item (catalog, 
product, SKU, media) except for category; the ACL of a category is the same as the ACL of the catalog that 
contains it. The ACL contains lists of users or groups of users, and the permissions they have. 
Note: If you are using ATG Customer Intelligence for reporting with secured catalogs, in order for the 
ProductCatalog logs to be created during deployment, you must create a 
server_name/localconfig/atg/reporting/datacollection/commerce/ProductCatalogDeploy
mentListener.properties
file with the following contents: 
repositoryPathAliasMap=\ 
/atg/commerce/catalog/SecureProductCatalog=/atg/commerce/catalog/ 
ProductCatalog 
sourceRepositoryPathToItemDecriptorNames+=\ 
/atg/commerce/catalog/SecureProductCatalog=category;product;sku;promotion 
See the Preparing to Use Commerce Reporting chapter in this guide for information on data logging. 
Importing Product Catalog Content 
You may want to maintain your catalogs in an external system and use that content as a basis for your 
ATG product catalogs, which are organized into repository data sets. The way you approach exporting 
this content depends largely on the system that currently holds your content and the data itself. Consult 
your third-party system documentation for exporting instructions. ATG includes two importing tools: 
The 
startSQLRepository
script imports content formatted in an XML file into 
content or SQL repositories. See the startSQLRepository script and Template Parser 
section in the ATG Repository Guide
ATG  C om merce  P ro gra mm in g  G ui d e 
70  
4  -  Us in g   and   Ex t en d in g   t he  P ro d uct   C at al og  
The Repository Loader is a module that conducts single or scheduled imports of XML, 
HTML, binary, and file system files into content or SQL repositories. See the Repository 
Loader chapter of the ATG Repository Guide for information. 
You can also write your own import code. Keep in mind that the XML files parsed by the 
startSQLRepository
script are easier to write than their Repository Loader counterparts, however, 
running the Repository Loader uses less memory than the 
startSQLRepository
script. 
It’s a good idea to familiarize yourself with repositories in general by reading through the Introduction and 
Repository API chapters of the ATG Repository Guide as well as the documentation on the commerce 
repositories available to you. The commerce repositories are described in the Using and Extending the 
Product Catalog chapter of this guide. Learning about the repositories you’ll use will help you understand 
the format required by the ATG importing tools, and planning your data organization strategy will 
minimize the amount of manual tweaking you’ll need to do later. The ATG Commerce repositories are 
extensible, so you have the option of changing them if they don’t offer the properties or item types your 
product catalog requires. 
Once you generate the export files, import your content into ATG Commerce using the ATG tool you 
prefer. 
Assigning a Catalog to a User 
In order for users to view a catalog, they must have that catalog assigned to their profile. The catalog 
assumes the existence of a 
catalog
property for the 
user
repository item. The 
catalog
property is a 
derived property. You can set it in either the user’s 
myCatalog
property or the 
catalog
property of the 
contract
for the user’s 
parentOrganization
. If 
myCatalog
is set, the parent organization’s setting is 
ignored. 
ATG Commerce adds 
CatalogProfilePropertySetter
and 
PriceListProfilePropertySetter
components to the 
profilePropertySetters
property of the 
/atg/dynamo/servlet/dafpipeline/ProfilePropertyServlet
component in the DAF servlet 
pipeline: 
profilePropertySetters+=/atg/userprofiling/CatalogProfilePropertySetter,\ 
/atg/userprofiling/PriceListProfilePropertySetter 
For the profile’s 
catalog
property, the 
CatalogProfilePropertySetter
calls the 
determineCatalog
method of the 
/atg/commerce/catalog/CatalogTools
component (class 
atg.commerce.catalog.custom.CustomCatalogTools
). This method invokes the 
/atg/commerce/util/ContextValueRetriever
component, which is the primary mechanism for 
identifying the catalog to assign so that the appropriate items can be displayed. See 
ContextValueRetriever Class for more information. 
ContextValueRetriever Class 
The class for the 
ContextValueRetriever
component is 
atg.commerce.util.ContextValueRetriever
, which holds most of the logic for determining which 
ATG  C om mer ce P ro g ramm in g   Gui d e 
71  
4  -  Us i n g  an d  E xt en d i n g  t h e  Pro d u ct  C at al o g  
catalog to assign to each user. It performs a parallel function for price lists – see PriceListManager for more 
information. It has one property, 
useProfile
, which is a boolean that defaults to false. The main method, 
retrieveValue
, goes through the following steps. The method does not continue to the next step if it 
finds a non-null value. 
1.
It calls the 
shouldUseProfile
method (see below). If this method returns true, it 
retrieves the requested property from the profile. 
2.
If a site was provided, it retrieves the requested property from the site. See Assigning 
Price Lists and Catalogs in a Multisite Configuration for more information. 
If 
ContextValueRetriever
returns null, 
CustomCatalogTools.determineCatalog
picks up the 
default catalog and returns that to the 
CatalogProfilePropertySetter
The out-of-the-box implementation of the 
shouldUseProfile
method simply returns the value of the 
useProfile
property. By default this property is set to false, which is appropriate for most multisite 
environments. The false value means that anything that might already be set in the profile is ignored, and 
values are retrieved instead from the current site or the global (
CatalogTools
) default. If you assign 
catalogs or price lists via your own pipeline servlet or a scenario, set 
useProfile
to true to prevent your 
profile settings from being overridden with the global defaults. 
If your business requires different choices for different customers, you can override 
shouldUseProfile
For example, assume some special customers (for example employees and sales reps) have values pre-set 
in their profiles, while most customers should get site defaults. The 
shouldUseProfile
method can look 
at any profile property to decide if a customer is special or not and return true for the special customers 
and false for everyone else. In addition, if you want to add another source for catalogs or price lists, 
beyond profiles and sites, you can override the 
retrieveValue
method. 
Note that ATG 10.0.1 provides a single component that handles both catalogs and price lists. This 
configuration assumes you want to apply the same logic for both types of values, which is common. If you 
want to apply different logic for catalogs and price lists, you can configure a second Nucleus instance of 
the 
ContextValueRetriever
component, change its configuration or implementation class, and 
reconfigure either 
CatalogTools
or 
PriceListManager
to refer to the new instance. 
ATG  C om merce  P ro gra mm in g  G ui d e 
72  
4  -  Us in g   and   Ex t en d in g   t he  P ro d uct   C at al og  
Documents you may be interested
Documents you may be interested