Package com.openhtmltopdf.pdfboxout
Class PdfBoxFastLinkManager
- java.lang.Object
-
- com.openhtmltopdf.pdfboxout.PdfBoxFastLinkManager
-
public class PdfBoxFastLinkManager extends java.lang.Object
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description private static class
PdfBoxFastLinkManager.LinkDetails
(package private) static class
PdfBoxFastLinkManager.QuadPointShape
-
Field Summary
Fields Modifier and Type Field Description private float
_dotsPerPoint
private org.apache.pdfbox.pdmodel.interactive.annotation.PDAppearanceDictionary
_embeddedFileAppearance
The lazily created appearance dict for emedded files.private java.util.Map<java.lang.String,org.apache.pdfbox.pdmodel.common.filespecification.PDComplexFileSpecification>
_embeddedFiles
A map from uri to embedded file, so we don't embed files twice in case of a split link (example, two link boxes are formed when a link breaks in the middle).private java.util.List<PdfBoxFastLinkManager.LinkDetails>
_links
private java.util.Map<org.apache.pdfbox.pdmodel.PDPage,java.util.Set<java.lang.String>>
_linkTargetAreas
private PdfBoxFastOutputDevice
_od
private PdfBoxAccessibilityHelper
_pdfUa
private Box
_root
private SharedContext
_sharedContext
-
Constructor Summary
Constructors Constructor Description PdfBoxFastLinkManager(SharedContext ctx, float dotsPerPoint, Box root, PdfBoxFastOutputDevice od)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description private java.awt.geom.Rectangle2D
add(java.awt.geom.Rectangle2D r1, java.awt.geom.Rectangle2D r2)
private void
addLinkToPage(org.apache.pdfbox.pdmodel.PDPage page, AnnotationContainer annot, Box anchor, Box target)
private void
addUriAsLink(RenderingContext c, Box box, org.apache.pdfbox.pdmodel.PDPage page, float pageHeight, java.awt.geom.AffineTransform transform, org.w3c.dom.Element elem, NamespaceHandler handler, java.lang.String uri, java.awt.Shape linkShape)
private java.awt.geom.Rectangle2D
calcTotalLinkArea(RenderingContext c, Box box, float pageHeight, java.awt.geom.AffineTransform transform)
private java.awt.geom.Rectangle2D
checkLinkArea(org.apache.pdfbox.pdmodel.PDPage page, RenderingContext c, Box box, float pageHeight, java.awt.geom.AffineTransform transform, java.awt.Shape linkShape)
private org.apache.pdfbox.pdmodel.interactive.documentnavigation.destination.PDPageXYZDestination
createDestination(RenderingContext c, Box box)
private AnnotationContainer
createFileEmbedLinkAnnotation(org.w3c.dom.Element elem, java.lang.String uri)
Create a file attachment link, being careful not to embed the same file (as specified by uri) more than once.private org.apache.pdfbox.pdmodel.interactive.annotation.PDAppearanceDictionary
createFileEmbedLinkAppearance()
Create an empty appearance stream to hide the pin icon used by various pdf reader for signaling an embedded fileprivate java.lang.String
createRectKey(java.awt.geom.Rectangle2D rect, java.awt.Shape linkShape, java.awt.geom.AffineTransform transform)
static java.awt.geom.Rectangle2D
createTargetArea(RenderingContext c, Box box, float pageHeight, java.awt.geom.AffineTransform transform, Box _root, PdfBoxOutputDevice _od)
private static boolean
isPointEqual(java.awt.geom.Point2D.Float p1, java.awt.geom.Point2D.Float p2)
private static boolean
isURI(java.lang.String uri)
(package private) static PdfBoxFastLinkManager.QuadPointShape
mapShapeToQuadPoints(java.awt.geom.AffineTransform transform, java.awt.Shape linkShape, java.awt.geom.Rectangle2D targetArea)
private boolean
placeAnnotation(java.awt.geom.AffineTransform transform, java.awt.Shape linkShape, java.awt.geom.Rectangle2D targetArea, AnnotationContainer annot)
private void
processLink(RenderingContext c, Box box, org.apache.pdfbox.pdmodel.PDPage page, float pageHeight, java.awt.geom.AffineTransform transform)
void
processLinkLater(RenderingContext c, Box box, org.apache.pdfbox.pdmodel.PDPage page, float pageHeight, java.awt.geom.AffineTransform transform)
void
processLinks(PdfBoxAccessibilityHelper pdfUa)
private static void
removeDoublicatePoints(java.util.List<java.awt.geom.Point2D.Float> points)
-
-
-
Field Detail
-
_linkTargetAreas
private final java.util.Map<org.apache.pdfbox.pdmodel.PDPage,java.util.Set<java.lang.String>> _linkTargetAreas
-
_sharedContext
private final SharedContext _sharedContext
-
_dotsPerPoint
private final float _dotsPerPoint
-
_root
private final Box _root
-
_od
private final PdfBoxFastOutputDevice _od
-
_links
private final java.util.List<PdfBoxFastLinkManager.LinkDetails> _links
-
_pdfUa
private PdfBoxAccessibilityHelper _pdfUa
-
_embeddedFiles
private final java.util.Map<java.lang.String,org.apache.pdfbox.pdmodel.common.filespecification.PDComplexFileSpecification> _embeddedFiles
A map from uri to embedded file, so we don't embed files twice in case of a split link (example, two link boxes are formed when a link breaks in the middle).
-
_embeddedFileAppearance
private org.apache.pdfbox.pdmodel.interactive.annotation.PDAppearanceDictionary _embeddedFileAppearance
The lazily created appearance dict for emedded files.
-
-
Constructor Detail
-
PdfBoxFastLinkManager
public PdfBoxFastLinkManager(SharedContext ctx, float dotsPerPoint, Box root, PdfBoxFastOutputDevice od)
-
-
Method Detail
-
calcTotalLinkArea
private java.awt.geom.Rectangle2D calcTotalLinkArea(RenderingContext c, Box box, float pageHeight, java.awt.geom.AffineTransform transform)
-
add
private java.awt.geom.Rectangle2D add(java.awt.geom.Rectangle2D r1, java.awt.geom.Rectangle2D r2)
-
createRectKey
private java.lang.String createRectKey(java.awt.geom.Rectangle2D rect, java.awt.Shape linkShape, java.awt.geom.AffineTransform transform)
-
checkLinkArea
private java.awt.geom.Rectangle2D checkLinkArea(org.apache.pdfbox.pdmodel.PDPage page, RenderingContext c, Box box, float pageHeight, java.awt.geom.AffineTransform transform, java.awt.Shape linkShape)
-
processLink
private void processLink(RenderingContext c, Box box, org.apache.pdfbox.pdmodel.PDPage page, float pageHeight, java.awt.geom.AffineTransform transform)
-
isPointEqual
private static boolean isPointEqual(java.awt.geom.Point2D.Float p1, java.awt.geom.Point2D.Float p2)
-
removeDoublicatePoints
private static void removeDoublicatePoints(java.util.List<java.awt.geom.Point2D.Float> points)
-
addUriAsLink
private void addUriAsLink(RenderingContext c, Box box, org.apache.pdfbox.pdmodel.PDPage page, float pageHeight, java.awt.geom.AffineTransform transform, org.w3c.dom.Element elem, NamespaceHandler handler, java.lang.String uri, java.awt.Shape linkShape)
-
createFileEmbedLinkAnnotation
private AnnotationContainer createFileEmbedLinkAnnotation(org.w3c.dom.Element elem, java.lang.String uri)
Create a file attachment link, being careful not to embed the same file (as specified by uri) more than once. The element should have the following attributes: download="embedded-filename.ext", data-content-type="file-mime-type" which defaults to "application/octet-stream", relationship (required for PDF/A3), one of: "Source", "Supplement", "Data", "Alternative", "Unspecified", title="file description" (recommended for PDF/A3).
-
createFileEmbedLinkAppearance
private org.apache.pdfbox.pdmodel.interactive.annotation.PDAppearanceDictionary createFileEmbedLinkAppearance()
Create an empty appearance stream to hide the pin icon used by various pdf reader for signaling an embedded file
-
isURI
private static boolean isURI(java.lang.String uri)
-
placeAnnotation
private boolean placeAnnotation(java.awt.geom.AffineTransform transform, java.awt.Shape linkShape, java.awt.geom.Rectangle2D targetArea, AnnotationContainer annot)
-
mapShapeToQuadPoints
static PdfBoxFastLinkManager.QuadPointShape mapShapeToQuadPoints(java.awt.geom.AffineTransform transform, java.awt.Shape linkShape, java.awt.geom.Rectangle2D targetArea)
-
addLinkToPage
private void addLinkToPage(org.apache.pdfbox.pdmodel.PDPage page, AnnotationContainer annot, Box anchor, Box target)
-
createDestination
private org.apache.pdfbox.pdmodel.interactive.documentnavigation.destination.PDPageXYZDestination createDestination(RenderingContext c, Box box)
-
createTargetArea
public static java.awt.geom.Rectangle2D createTargetArea(RenderingContext c, Box box, float pageHeight, java.awt.geom.AffineTransform transform, Box _root, PdfBoxOutputDevice _od)
-
processLinkLater
public void processLinkLater(RenderingContext c, Box box, org.apache.pdfbox.pdmodel.PDPage page, float pageHeight, java.awt.geom.AffineTransform transform)
-
processLinks
public void processLinks(PdfBoxAccessibilityHelper pdfUa)
-
-