Return-Path: X-Original-To: apmail-poi-dev-archive@www.apache.org Delivered-To: apmail-poi-dev-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 613C5DCF3 for ; Fri, 24 Aug 2012 06:12:03 +0000 (UTC) Received: (qmail 10583 invoked by uid 500); 24 Aug 2012 06:12:03 -0000 Delivered-To: apmail-poi-dev-archive@poi.apache.org Received: (qmail 10284 invoked by uid 500); 24 Aug 2012 06:11:58 -0000 Mailing-List: contact dev-help@poi.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: "POI Developers List" Delivered-To: mailing list dev@poi.apache.org Delivered-To: moderator for dev@poi.apache.org Received: (qmail 43889 invoked by uid 99); 23 Aug 2012 14:12:04 -0000 X-ASF-Spam-Status: No, hits=-2.1 required=5.0 tests=FREEMAIL_ENVFROM_END_DIGIT,RCVD_IN_DNSWL_MED,SPF_PASS X-Spam-Check-By: apache.org Received-SPF: pass (athena.apache.org: domain of bauhaus9@mac.com designates 17.172.204.239 as permitted sender) MIME-version: 1.0 X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10432:5.7.7855,1.0.260,0.0.0000 definitions=2012-08-23_05:2012-08-23,2012-08-23,1970-01-01 signatures=0 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 spamscore=0 ipscore=0 suspectscore=1 phishscore=0 bulkscore=0 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=6.0.2-1203120001 definitions=main-1208230118 From: Bart W Jenkins Content-type: multipart/signed; boundary="Apple-Mail=_E7A45032-6499-4B8E-BB03-498025A5D55F"; protocol="application/pkcs7-signature"; micalg=sha1 Subject: POI - HWPF - Documentation - Page/Name cross-reference example provided. Message-id: Date: Thu, 23 Aug 2012 10:11:25 -0400 To: dev@poi.apache.org X-Mailer: Apple Mail (2.1485) X-Virus-Checked: Checked by ClamAV on apache.org --Apple-Mail=_E7A45032-6499-4B8E-BB03-498025A5D55F Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset=us-ascii All, It is not clear how to provide code examples to the Apache POI = project, so, I am sending it to the dev email address in hopes someone = can fold this into the documentation for example usage. This took me = some time to figure out and so I felt strongly enough to share it. =20 PROBLEM: How to create cross-reference links to bookmarked areas that show the = page number of the target. So, for example, if I have a 100 page = document and I have an item named "FOO" on page 50 and I want to make a = cross-reference link to that item, and I want the cross-reference to be = in the form of: "(Pg. xxx)" - where 'xxx' will be a field in word that points to page = 100 where the FOO paragraph is located, then the following code snippet = will do that: Given an XWPFParagraph, 'p' and a 'target' variable of type CTBookmark: p.createRun().setText(" (Pg."); = p.createRun().getCTR().addNewFldChar().setFldCharType(STFldCharType.BEGIN)= ; CTText pgcttext =3D p.createRun().getCTR().addNewInstrText(); pgcttext.setSpace(Space.PRESERVE); pgcttext.setStringValue("PAGEREF "+target.getName()+" \\h "); = p.createRun().getCTR().addNewFldChar().setFldCharType(STFldCharType.SEPARA= TE); XWPFRun pgtextRun =3D p.createRun(); pgtextRun.getCTR().addNewRPr().addNewNoProof(); pgtextRun.setText("0"); // here is the text, now as a bookmark xref, = this is a placeholder until one updates the fields in the document or = goes to print. pgtextRun.setBold(true); pgtextRun.setUnderline(UnderlinePatterns.SINGLE); = p.createRun().getCTR().addNewFldChar().setFldCharType(STFldCharType.END); p.createRun().setText(" )"); I hope you all find this example useful. Note: For a standard cross reference that keeps the NAME is just a = "REF" so just replace the string "PAGEREF" with "REF". =20 Bart= --Apple-Mail=_E7A45032-6499-4B8E-BB03-498025A5D55F Content-Disposition: attachment; filename=smime.p7s Content-Type: application/pkcs7-signature; name=smime.p7s Content-Transfer-Encoding: base64 MIAGCSqGSIb3DQEHAqCAMIACAQExCzAJBgUrDgMCGgUAMIAGCSqGSIb3DQEHAQAAoIIDjTCCA4kw ggJxoAMCAQICAQEwCwYJKoZIhvcNAQELMEcxFzAVBgNVBAMMDkJhcnQgVyBKZW5raW5zMQswCQYD VQQGEwJVUzEfMB0GCSqGSIb3DQEJARYQYmF1aGF1czlAbWFjLmNvbTAeFw0xMjA4MTcyMTM0NTla Fw0xMzA4MTcyMTM0NTlaMEcxFzAVBgNVBAMMDkJhcnQgVyBKZW5raW5zMQswCQYDVQQGEwJVUzEf MB0GCSqGSIb3DQEJARYQYmF1aGF1czlAbWFjLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC AQoCggEBALgCH4xAItx6qB1yqzumPw5KdCrBgjM2dJNHPqhhM/kItYLki0QdzIsQio3bVoQkT+ab ZBodjo4jCWbtT0YugeKOIeAxA21yt8scTilXQLNgjO4X5Z9opi1MkgJzv89CeP4hIDYUxc//dULy bw4qOT6UTIUJfj7k7brvtTRCUiHk9wXQVV/b5MuQKs9B1ZlEXnckN+LqQHbtorSDk2HEfawBFIvI B+xs40clIoZygm5aUc25KYyfvCQfu20In0lGFv7r94ooVl3CluYsO6+oGDmSumHjQ4tgmxP1kaBg zyBn+qbSHQSAJG+4rbmmXP9knx0UzTKcSsbYzLjnX4eBq8kCAwEAAaOBgTB/MA4GA1UdDwEB/wQE AwIHgDBQBgNVHSUBAf8ERjBEBggrBgEFBQcDBAYIKwYBBQUHAwIGCCsGAQUFBwMBBggrBgEFBQcD AwYJKoZIhvdjZAQCBgkqhkiG92NkBAMGBFUdJQAwGwYDVR0RBBQwEoEQYmF1aGF1czlAbWFjLmNv bTANBgkqhkiG9w0BAQsFAAOCAQEAVjKtbJusQtb0Woq5qoxIhVNbAxHRJiLX3hn8fLUIzLvZ0/e2 kpjJGoZwuNFbsN3iCxJS1BWwM4QGSEgEh6EngkoSsPd9gtw/GQAa7JeyK6IWj3wUjmuZyw6w2QUe V9JXp2Ax0WQfH4YWjqM+u7lJs3EMpnCDA7r6cM/XLlLo9I8VwK2AWqLNdpy00qoADWZ4OXXedan/ Ni/oB2W0O1vXciirQ7xUZowYQcUxjRYUhrZZ6QWZe+t/qYtnXuzScgHfgso3FtXfBYChOEVBy8Yh B6zDag6eS9va08nm59LlSvgvgfFgYwkW2lIm/6oYBdWGUOtCxrSDi/GGpgq9meQ99jGCAdIwggHO AgEBMEwwRzEXMBUGA1UEAwwOQmFydCBXIEplbmtpbnMxCzAJBgNVBAYTAlVTMR8wHQYJKoZIhvcN AQkBFhBiYXVoYXVzOUBtYWMuY29tAgEBMAkGBSsOAwIaBQCgXTAYBgkqhkiG9w0BCQMxCwYJKoZI hvcNAQcBMBwGCSqGSIb3DQEJBTEPFw0xMjA4MjMxNDExMjZaMCMGCSqGSIb3DQEJBDEWBBRyZt6k QH4lNWyrWrnTYgDKOiRomDANBgkqhkiG9w0BAQEFAASCAQAxKNUCUBZSUs6c5OAhVRXo2ynG4oJf EmGtZBq1XkMCVlDbfyI3aDMRa9H2vUc1lUjHHkbdhKS9xMG0ridyt4tXMRYvrRKGBTfDJ9SDuf8V Ytm3VulwF085mofL+Vdp9juNBiYF9zucHHPq5xWQjM/4FHk2MCB1jYe1fYrx7BrTWWsFwBbXtKWY /nAykd2DEUUK+kmj8mFP+9q7kqJA2T/DoaRdShnbHi2bgIf3KNCiIPt6hGoyNQZOuIbtdbGrVoNJ f9g+0wB8FVmY+Prm15POvHnfEHs4NlCeiAnIoCJP7j0IFMztdXNZSAjdK9q5Tm9OutB3+dn9d0s8 EyREyg98AAAAAAAA --Apple-Mail=_E7A45032-6499-4B8E-BB03-498025A5D55F--