本文整理汇总了Java中com.itextpdf.tool.xml.css.StyleAttrCSSResolver类的典型用法代码示例。如果您正苦于以下问题:Java StyleAttrCSSResolver类的具体用法?Java StyleAttrCSSResolver怎么用?Java StyleAttrCSSResolver使用的例子?那么, 这里精选的类代码示例或许可以为您提供帮助。
StyleAttrCSSResolver类属于com.itextpdf.tool.xml.css包,在下文中一共展示了StyleAttrCSSResolver类的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。
示例1: parseXHtml
import com.itextpdf.tool.xml.css.StyleAttrCSSResolver; //导入依赖的package包/类
private void parseXHtml(final ElementHandler d, final Reader in) throws IOException {
CssFilesImpl cssFiles = new CssFilesImpl();
cssFiles.add(getDefaultCSS());
cssFiles.add(getHtmlCSS());
StyleAttrCSSResolver cssResolver = new StyleAttrCSSResolver(cssFiles) {
@Override
public void resolveStyles(Tag t) {
configuration.resolveDefaultStyles(t);
super.resolveStyles(t);
}
@Override
public CSSResolver clear() throws CssResolverException {
// prevent css files from being been removed
return this;
}
};
HtmlPipelineContext hpc = new HtmlPipelineContext(null);
final String imageRootPath = configuration.getImageRootPath();
if (imageRootPath != null) {
hpc.setImageProvider(new AbstractImageProvider() {
/**
* @return a rootpath to set before the src attribute
*/
@Override
public String getImageRootPath() {
return imageRootPath;
}
});
}
hpc.setAcceptUnknown(true).autoBookmark(true).setTagFactory(getDefaultTagProcessorFactory());
Pipeline<?> pipeline =
new CssResolverPipeline(cssResolver,
new HtmlPipeline(hpc,
new ElementHandlerPipeline(d, null)));
XMLWorker worker = new XMLWorker(pipeline, true);
XMLParser p = new XMLParser();
p.addListener(worker);
p.parse(in);
}
示例2: createPdf
import com.itextpdf.tool.xml.css.StyleAttrCSSResolver; //导入依赖的package包/类
/**
* <a href="http://stackoverflow.com/questions/43610868/how-to-add-dynamic-variable-to-footer-without-calling-document-newpage-in-itex">
* How to add dynamic variable to footer without calling document.newPage() in iText 5
* </a>
* <p>
* generator method of the OP
* </p>
* @see #testDynamicFooterLikeAyZagen()
*/
public static void createPdf(ArrayList<String> htmlStrings, FooterTable footerEvt, String destinationPath)
throws IOException, DocumentException {
Document document = new Document(PageSize.A4);
document.setMargins(68, 85, 75, 85);
PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(destinationPath));
if (footerEvt != null)
writer.setPageEvent(footerEvt);
document.open();
CSSResolver cssResolver = new StyleAttrCSSResolver();
CssFile cssFile = XMLWorkerHelper
.getCSS(new ByteArrayInputStream(/*readCSS("resources/content.min.css").getBytes()*/ "".getBytes()));
cssResolver.addCss(cssFile);
XMLWorkerFontProvider fontProvider = new XMLWorkerFontProvider(XMLWorkerFontProvider.DONTLOOKFORFONTS);
fontProvider.register(/*"resources/ARIAL.TTF"*/ "c:/Windows/Fonts/arial.ttf");
CssAppliers cssAppliers = new CssAppliersImpl(fontProvider);
HtmlPipelineContext htmlContext = new HtmlPipelineContext(cssAppliers);
htmlContext.setTagFactory(Tags.getHtmlTagProcessorFactory());
PdfWriterPipeline pdf = new PdfWriterPipeline(document, writer);
HtmlPipeline html = new HtmlPipeline(htmlContext, pdf);
CssResolverPipeline css = new CssResolverPipeline(cssResolver, html);
XMLWorker worker = new XMLWorker(css, true);
XMLParser p = new XMLParser(worker);
int i = 0;
for (String htmlfile : htmlStrings) {
i++;
footerEvt.setTitleIndex("" + i);//or FooterTable.setTitleIndex("" + i);
ByteArrayInputStream stream = new ByteArrayInputStream(htmlfile.getBytes("UTF-8"));
p.parse(stream, Charset.forName("UTF-8"));
}
document.close();
}
示例3: testParseHtml7Original
import com.itextpdf.tool.xml.css.StyleAttrCSSResolver; //导入依赖的package包/类
/**
* <a href="http://stackoverflow.com/questions/42412002/xmlworker-itext-doesnt-break-page-in-pdf-result">
* XMLWorker (iText) doesn't break page in PDF result
* </a>
* <br/>
* <a href="http://developers.itextpdf.com/fr/node/2078#999-parsehtml7.java">
* ParseHtml7 iText example
* </a>
* <p>
* Indeed, the ParseHtml7 iText example does not respect page-break-before
* style entries. The cause is that they are only supported when the elements
* generated by the XML worker are directly added to the Document, not when
* they are added to a table cell as in your example. Unfortunately RTL is
* only supported inside table cells.
* </p>
* <p>
* {@link #testParseHtml7Improved()} shows how to explicitly support the
* page-break-before style entries by recognizing the {@link Chunk#NEWPAGE}
* elements generated for page-break-before elements and creating a new page
* then.
* </p>
*/
@Test
public void testParseHtml7Original() throws DocumentException, IOException
{
try ( InputStream resource = getClass().getResourceAsStream("PageBreaks.html") )
{
// step 1
Document document = new Document();
// step 2
PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(new File(RESULT_FOLDER, "PageBreaks.pdf")));
// step 3
document.open();
// step 4
// Styles
CSSResolver cssResolver = new StyleAttrCSSResolver();
XMLWorkerFontProvider fontProvider = new XMLWorkerFontProvider(XMLWorkerFontProvider.DONTLOOKFORFONTS);
fontProvider.register("src/test/resources/mkl/testarea/itext5/xmlworker/NotoNaskhArabic-Regular.ttf");
CssAppliers cssAppliers = new CssAppliersImpl(fontProvider);
// HTML
HtmlPipelineContext htmlContext = new HtmlPipelineContext(cssAppliers);
htmlContext.setTagFactory(Tags.getHtmlTagProcessorFactory());
// Pipelines
ElementList elements = new ElementList();
ElementHandlerPipeline pdf = new ElementHandlerPipeline(elements, null);
HtmlPipeline html = new HtmlPipeline(htmlContext, pdf);
CssResolverPipeline css = new CssResolverPipeline(cssResolver, html);
// XML Worker
XMLWorker worker = new XMLWorker(css, true);
XMLParser p = new XMLParser(worker);
p.parse(resource, Charset.forName("UTF-8"));
PdfPTable table = new PdfPTable(1);
PdfPCell cell = new PdfPCell();
cell.setRunDirection(PdfWriter.RUN_DIRECTION_RTL);
for (Element e : elements) {
cell.addElement(e);
}
table.addCell(cell);
document.add(table);
// step 5
document.close();
}
}
示例4: CSSResolver
import com.itextpdf.tool.xml.css.StyleAttrCSSResolver; //导入依赖的package包/类
/**
* Creates a CSS resolver to modify element attributes based on the corresponding CSS styles
* @param pCSSFiles The css files that should be used when resolving styles
* @param pIsDebug If true, the debug class is applied when resolving styles
*/
public CSSResolver(CssFiles pCSSFiles, boolean pIsDebug) {
mCssPropertyResolver = new StyleAttrCSSResolver(pCSSFiles);
mIsDebug = pIsDebug;
}