display pdf in browser from byte array c# : Rotate one page in pdf application SDK tool html .net web page online Docx4j_GettingStarted1-part1926

11 
This layer is based originally on OpenXML4J (which is also used by Apache POI).  
2.
Parts are generally subclasses of org.docx4j.openpackaging.parts.JaxbXmlPart 
This (the jaxb content tree) is the second level of the three layered model. 
Parts are arranged in a tree.  If a part has descendants, it will have a 
org.docx4j.openpackaging.parts.relationships.RelationshipsPart which 
identifies those descendant parts.  The sample PartsList (see next section) shows you how this 
works. 
A JaxbXmlPart has a content tree: 
public Object getJaxbElement() { 
return jaxbElement; 
public void setJaxbElement(Object jaxbElement) { 
this.jaxbElement = jaxbElement; 
Most parts (including MainDocumentPart, styles, headers/footers, comments, 
endnotes/footnotes) use org.docx4j.wml (WordprocessingML); wml references 
org.docx4j.dml (DrawingML) as necessary. 
These classes were generated from the Open XML schemas 
3.
org.docx4j.model 
This package builds on the lower two layers to provide extra functionality, and is being 
progressively further developed.     
Jaxb: marshalling and unmarshalling  
Docx4j contains a class representing each part.  For example, there is a MainDocumentPart class.  XML 
parts inherit from JaxbXmlPart, which contains a member called jaxbElement.  When you want to 
work with the contents of a part, you work with its jaxbElement. 
When you open a docx document using docx4j, docx4j automatically unmarshals the contents of each 
XML part to a strongly-type Java object tree (the jaxbElement). 
Rotate one page in pdf - rotate PDF page permanently in C#.net, ASP.NET, MVC, Ajax, WinForms, WPF
Empower Users to Change the Rotation Angle of PDF File Page Using C#
how to rotate one page in a pdf file; pdf rotate one page
Rotate one page in pdf - VB.NET PDF Page Rotate Library: rotate PDF page permanently in vb.net, ASP.NET, MVC, Ajax, WinForms, WPF
PDF Document Page Rotation in Visual Basic .NET Class Application
how to permanently rotate pdf pages; how to rotate a single page in a pdf document
12 
Similarly, if/when you tell docx4j to save these Java objects as a docx, docx4j automatically marshals the 
jaxbElement in each Part. 
Sometimes you will want to marshal or unmarshal things yourself.  The class 
org.docx4j.jaxb.Context
defines all the JAXBContexts used in docx4j:  
Jc 
org.docx4j.wml 
org.docx4j.dml 
org.docx4j.dml.picture 
org.docx4j.dml.wordprocessingDrawing 
org.docx4j.vml 
org.docx4j.vml.officedrawing 
org.docx4j.math 
jcThemePart 
org.docx4j.dml 
jcDocPropsCore 
org.docx4j.docProps.core 
org.docx4j.docProps.core.dc.elements 
org.docx4j.docProps.core.dc.terms 
jcDocPropsCustom 
org.docx4j.docProps.custom 
jcDocPropsExtended 
org.docx4j.docProps.extended 
jcXmlPackage 
org.docx4j.xmlPackage 
jcRelationships 
org.docx4j.relationships 
jcCustomXmlProperties 
org.docx4j.customXmlProperties 
jcContentTypes 
org.docx4j.openpackaging.contenttype 
jcPML 
org.docx4j.pml 
org.docx4j.dml 
org.docx4j.dml.picture 
Parts List 
To get a better understanding of how docx4j works – and the structure of a docx document – you can 
run the PartsList sample on a docx (or a pptx or xlsx).  If you do, it will list the hierarchy of parts used in 
that package.  It will tell you which class is used to represent each part, and where that part is a 
JaxbXmlPart, it will also tell you what class the 
jaxbElement 
is. 
You can run it from a command line: 
java -cp docx4j.jar:log4j-1.2.15.jar org.docx4j.samples.PartsList [input.docx]
If there are any images in the docx, you'd also need to add to your classpath: xmlgraphics-commons-1.4.jar and commons-
logging-1.1.1.jar
For example:  
Part /_rels/.rels [org.docx4j.openpackaging.parts.relationships.RelationshipsPart] 
containing JaxbElement:org.docx4j.relationships.Relationships 
Part /docProps/app.xml [org.docx4j.openpackaging.parts.DocPropsExtendedPart]   
containing JaxbElement:org.docx4j.docProps.extended.Properties 
Part /docProps/core.xml [org.docx4j.openpackaging.parts.DocPropsCorePart]   
containing JaxbElement:org.docx4j.docProps.core.CoreProperties 
VB.NET PDF Page Delete Library: remove PDF pages in vb.net, ASP.
If you are looking for a solution to conveniently delete one page from your PDF document, you can use this VB.NET PDF Library, which supports a variety of PDF
rotate a pdf page; rotate pdf page
C# PDF File Merge Library: Merge, append PDF files in C#.net, ASP.
C# developers can easily merge and append one PDF document to document imaging toolkit, also offers other advanced PDF document page processing and
rotate one page in pdf reader; change orientation of pdf page
13 
Part /word/document.xml [org.docx4j.openpackaging.parts.WordprocessingML.MainDocumentPart]   
containing JaxbElement:org.docx4j.wml.Document 
Part /word/settings.xml [
org.docx4j.openpackaging.parts.WordprocessingML
.DocumentSettingsPart]   
containing JaxbElement:org.docx4j.wml.CTSettings 
Part /word/styles.xml [
org.docx4j.openpackaging.parts.WordprocessingML
.StyleDefinitionsPart]   
containing JaxbElement:org.docx4j.wml.Styles 
Part /word/media/image1.jpeg [
org.docx4j.openpackaging.parts.WordprocessingML
.ImageJpegPart]  
docx4j includes convenience methods to make it easy to access commonly used parts. These include, 
on the package: 
public MainDocumentPart getMainDocumentPart()  
public DocPropsCorePart getDocPropsCorePart()  
public DocPropsExtendedPart getDocPropsExtendedPart()  
public DocPropsCustomPart getDocPropsCustomPart()  
on the document part: 
public StyleDefinitionsPart getStyleDefinitionsPart() 
public NumberingDefinitionsPart getNumberingDefinitionsPart() 
public ThemePart getThemePart() 
public FontTablePart getFontTablePart() 
public CommentsPart getCommentsPart() 
public EndnotesPart getEndNotesPart() 
public FootnotesPart getFootnotesPart() 
public DocumentSettingsPart getDocumentSettingsPart() 
public WebSettingsPart getWebSettingsPart() 
If a part points to any other parts, it will have a relationships part listing these other parts.  
RelationshipsPart rp = part.getRelationshipsPart(); 
You can access those, and from there, get the part you want: 
for ( Relationship r : rp.getRelationships().getRelationship() ) { 
log.info("\nFor Relationship Id=" + r.getId()  
" Source is " + rp.getSourceP().getPartName()  
", Target is " + r.getTarget()  
" type " + r.getType() + "\n"); 
Part part = rp.getPart(r); 
That gives access to just the parts this part points to. 
There is also a list of all parts, in the package object: 
Parts parts = wordMLPackage.getParts(); 
The Parts object encapsulates a map of parts, keyed by PartName.
VB.NET PDF File Merge Library: Merge, append PDF files in vb.net
all. This guiding page will help you merge two or more PDF documents into a single one in a Visual Basic .NET imaging application.
pdf rotate single page reader; pdf reverse page order preview
VB.NET PDF Annotate Library: Draw, edit PDF annotation, markups in
to display it. Thus, PDFPage, derived from REPage, is a programming abstraction for representing one PDF page. Annotating Process.
rotate all pages in pdf preview; how to rotate a pdf page in reader
14 
To add a part, see the section Adding a Part below. 
MainDocumentPart 
The text of the document is to be found in the main document part. 
Given: 
WordprocessingMLPackage wordMLPackage 
you can access: 
MainDocumentPart documentPart = wordMLPackage.getMainDocumentPart(); 
Classically, you'd then do: 
org.docx4j.wml.Document wmlDocumentEl  
= (org.docx4j.wml.Document) documentPart.getJaxbElement(); 
Body body = wmlDocumentEl.getBody(); 
But as from 2.7.0, there is: 
/** 
* Convenience method to getJaxbElement().getBody().getContent() 
@since 2.7 
*/ 
public List<Object> getContent()  
A paragraph is org.docx4j.wml.P; a paragraph is basically made up of runs of text. 
@XmlRootElement
(name = "p"
public class P implements Child, ContentAccessor 
The 
ContentAccessor
interface is simply: 
/** 
@since 2.7 
*/ 
public interface ContentAccessor { 
public List<Object> getContent(); 
it is implemented by a number of objects, including: 
P, R (R is for run, which is where the document text lives) 
Hdr, Ftr 
C# PDF Page Extract Library: copy, paste, cut PDF pages in C#.net
Extract PDF Pages, Copy Pages from One PDF File and Paste into Others in C#.NET Program. Free PDF document processing SDK supports PDF page extraction, copying
save pdf rotated pages; rotate pdf pages and save
C# PDF Page Delete Library: remove PDF pages in C#.net, ASP.NET
Using RasterEdge Visual C# .NET PDF page deletion component, developers can easily select one or more PDF pages and delete it/them in both .NET web and Windows
pdf reverse page order; how to rotate all pages in pdf in preview
15 
table related objects (Tbl, Tc, Tr) 
content control objects 
Read on for how to add text etc. 
Samples 
The package org.docx4j.samples contains examples of how to do things with docx4j.  There are pptx and 
xlsx samples in packages org.pptx4j.samples and org.xlsx4j.samples respectively. 
The docx4j samples include: 
Basics 
CreateWordprocessingMLDocument 
DisplayMainDocumentPartXml 
OpenAndSaveRoundTripTest 
OpenMainDocumentAndTraverse 
XPathQuery 
Output/Transformation 
CreateHtml 
CreatePdf 
Flat OPC XML  
ExportInPackageFormat 
ImportFromPackageFormat 
Image handling  
AddImage 
ConvertEmbeddedImageToLinked 
Part Handling 
CopyPart 
ImportForeignPart 
PartsList 
StripParts 
Document generation/document assembly using content controls 
AltChunk 
C# PDF copy, paste image Library: copy, paste, cut PDF images in
This C#.NET example describes how to copy an image from one page of PDF document and paste it into another page. // Define input and output documents.
how to rotate pdf pages and save; pdf save rotated pages
C# PDF: C# Code to Process PDF Document Page Using C#.NET PDF
for developers on how to rotate PDF page in different two different PDF documents into one large PDF C# PDF Page Processing: Split PDF Document - C#.NET PDF
how to rotate all pages in pdf at once; rotate single page in pdf reader
16 
CreateDocxWithCustomXml 
CustomXmlBinding 
ContentControlBindingExtensions 
Miscellaneous 
CompareDocuments 
DocProps 
Filter 
HyperlinkTest 
NumberingRestart 
UnmarshallFromTemplate 
If you installed the source code, you'll have this package already. 
If you didn't, you can browse it online, at  
http://dev.plutext.org/trac/docx4j/browser/trunk/docx4j/src/main/java/org/docx4j/samples
There are also various sample documents in the /sample-docs directory; these are most easily accessed 
by checking out docx4j svn. 
Creating a new docx 
To create a new docx: 
// Create the package 
WordprocessingMLPackage wordMLPackage = WordprocessingMLPackage.createPackage(); 
// Save it 
wordMLPackage.save(new java.io.File("helloworld.docx") ); 
That's it.   
createPackage() 
is a convenience method, which does: 
// Create the package 
WordprocessingMLPackage wordMLPackage = new WordprocessingMLPackage(); 
// Create the main document part (word/document.xml) 
MainDocumentPart wordDocumentPart = new MainDocumentPart(); 
// Create main document part content 
ObjectFactory factory = Context.getWmlObjectFactory(); 
org.docx4j.wml.Body body = factory .createBody(); 
org.docx4j.wml.Document wmlDocumentEl = factory .createDocument(); 
17 
wmlDocumentEl.setBody(body); 
 
// Put the content in the part 
wordDocumentPart.setJaxbElement(wmlDocumentEl); 
 
// Add the main document part to the package relationships 
// (creating it if necessary) 
wmlPack.addTargetPart(wordDocumentPart); 
docx4j.properties 
Here is a sample docx4j.properties file: 
# Page size: use a value from org.docx4j.model.structure.PageSizePaper enum 
# eg A4, LETTER 
docx4j.PageSize=LETTER 
# Page size: use a value from org.docx4j.model.structure.MarginsWellKnown enum 
docx4j.PageMargins=NORMAL 
docx4j.PageOrientationLandscape=false 
# Page size: use a value from org.pptx4j.model.SlideSizesWellKnown enum 
# eg A4, LETTER 
pptx4j.PageSize=LETTER 
pptx4j.PageOrientationLandscape=false 
# These will be injected into docProps/app.xml 
# if App.Write=true 
docx4j.App.write=true 
docx4j.Application=docx4j 
docx4j.AppVersion=2.7 
# of the form XX.YYYY where X and Y represent numerical values 
# These will be injected into docProps/core.xml 
docx4j.dc.write=true 
docx4j.dc.creator.value=docx4j 
docx4j.dc.lastModifiedBy.value=docx4j 
# 
#docx4j.McPreprocessor=true 
# If you haven't configured log4j yourself 
# docx4j will autoconfigure it.  Set this to true to disable that 
docx4j.Log4j.Configurator.disabled=false 
The page size, margin & orientation values are used when new documents are created; naturally they 
don't affect an existing document you open with docx4j. 
If no docx4j.properties file is found on your class path, docx4j has hard coded defaults. 
Adding a paragraph of text 
MainDocumentPart 
contains a method: 
public org.docx4j.wml.P addStyledParagraphOfText(String styleId, String text)
You can use that method to add a paragraph using the specified style. 
18 
The XML we are looking to create will be something like: 
<w:p  xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main"> 
<w:r> 
<w:t>Hello world</w:t> 
</w:r> 
</w:p
addStyledParagraphOfText 
builds the object structure ͞the JAX  way͟, and adds it to the document. 
ObjectFactory factory = Context.getWmlObjectFactory(); 
// Create the paragraph 
org.docx4j.wml.P  para = factory.createP(); 
// Create the text element 
org.docx4j.wml.Text  t = factory.createText(); 
t.setValue(simpleText); 
 
// Create the run 
org.docx4j.wml.R  run = factory.createR(); 
run.getRunContent().add(t);     
 
para.getParagraphContent().add(run); 
// Now add our paragraph to the document body 
Body body = this.jaxbElement.getBody(); 
Body.getEGBlockLevelElts().add(para) 
Notice that adding a paragraph involves: 
Body.getEGBlockLevelElts().add(para) 
Similarly, the paragraph object P has: 
public List<Object> getParagraphContent() 
and the run object: 
public List<Object> getRunContent()  
Alternatively, you can create the paragraph by marshalling XML: 
// Assuming String xml contains the XML above 
org.docx4j.wml.P  para = XmlUtils.unmarshalString(xml); 
For this to work, you need to ensure that all namespaces are declared properly in the string. 
See further below for adding images, and tables. 
19 
General strategy/approach for creating stuff 
The first thing you need to know is what the XML you are trying to create looks like. 
To figure this out, start with a docx that contains the construct (create it in Word if necessary). 
Now look at its XML. Choices: 
You can unzip it to do this 
easiest may be to save it as Flat OPC XML from Word (or use the 
ExportInPackageFormat
sample),  so you have just a single XML file which you don't need to unzip
you can use the 
DisplayMainDocumentPartXml 
to get it 
you can open it with docx4all, and look at the source view 
on Windows, if you have Visual Studio 2010, you can drag the docx onto it 
on Windows, get PackageExplorer from codeplex. 
Now you are ready to create this XML using JAXB.  There are 2 basic ways. 
The classic JAXB way is to use the ObjectFactory's .createX methods.  For example: 
ObjectFactory factory = Context.getWmlObjectFactory();  
P p = factory.createP();   
The challenge with this is to know what object it is you are trying to create.  To find this out, run 
OpenMainDocumentAndTraverse 
on your document. 
Here are the names for some common objects: 
Object 
XML element 
docx4j class 
Factory method 
Document body  w:body 
org.docx4j.wml.Body 
factory.createBody(); 
Paragraph 
w:p 
org.docx4j.wml.P 
factory.createP() 
Paragraph 
props 
w:pPr 
org.docx4j.wml.PPr 
factory.createPPr() 
Run 
w:r 
org.docx4j.wml.R 
factory.createR() 
Run props 
w:rPr 
org.docx4j.wml.RPr 
factory.createRPr() 
Text 
w:t 
org.docx4j.wml.Text 
factory.createText() 
Table 
w:tbl 
org.docx4j.wml.Tbl 
factory.createTbl() 
Table row 
w:tr 
org.docx4j.wml.Tr 
factory.createTr() 
Table cell 
w:tc 
org.docx4j.wml.Tc 
factory.createTc() 
Drawing 
w:drawing 
org.docx4j.wml.Drawing 
factory.createDrawing() 
Page break 
w:br 
org.docx4j.wml.Br 
factory.createBr() 
Footnote  
or endnote ref 
org.docx4j.wml.CTFtnEdnRef  factory.createCTFtnEdnRef() 
An easier way may be to just unmarshal the  XML (eg a String representing a paragraph to be inserted 
into the document). 
20 
For example, given: 
<w:p  xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main"> 
<w:r> 
<w:t>Hello world</w:t> 
</w:r> 
</w:p
you can simply: 
// Assuming String xml contains the XML above 
org.docx4j.wml.P  para = XmlUtils.unmarshalString(xml); 
Problems?  See javax.xml.bind.JAXBElement
One annoying thing about JAXB, is that an object – say a table – could be represented as 
org.docx4j.wml.Tbl
(as you would expect).  Or it might be wrapped in a 
javax.xml.bind.JAXBElement
, in 
which case to get the real table, you have to do something like: 
if ( ((JAXBElement)o).getDeclaredType().getName().equals("org.docx4j.wml.Tbl") )  
org.docx4j.wml.Tbl tbl = (org.docx4j.wml.Tbl)((JAXBElement)o).getValue(); 
XmlUtils.unwrap can do this for you. 
Be careful, though.  If you are intend to copy an unwrapped object into your document (rather than just 
read it), you'll probably want the object to remain wrapped (JAXB usually wraps them for a reason; 
without the wrapper, you might find you need an @XmlRootElement annotation in order to be able to 
marshall ie save your document). 
@XmlRootElement below. 
If you need to be explicit about the type, you can use: 
public static Object unmarshalString(String str, JAXBContext jc, Class declaredType) 
The ContentAccessor interface 
docx4j 2.7.0 introduced a content accessor interface. 
This interface contains a single method: 
public List<Object> getContent(); 
It is implemented for a number of objects, including the following: 
Body 
w:body 
document body 
w:p 
paragraph 
w:r 
run 
Documents you may be interested
Documents you may be interested