أدوات المستخدم

أدوات الموقع


pri:docbook2odt

التحويل من docbook إلى odt ثم pdf

الموقع التالي يحتوي على xsl وسكربت perl لعمل ذلك

لسبب ما سكربت بيرل لا يعمل جيدا

قمت بكتابة بديل على bash قم وضعه داخل utils

#!/bin/bash
# docbook2odf.sh
function error()
{
echo "$1" >&2
exit 1
}
myscript=$( basename "$0" )
prefix=$( dirname "$0" )
[ $# -ne 2 ] && error "Usage: $myscript docbookfile.xml /path/to/outfile.odt"
input=$1; shift
output_file=$1; shift
b_o=`basename "$output_file"`
PATH_XSL="$prefix/../xsl"
TEMP="/tmp/docbook2odf$$""$b_o.tmp"
 
mkdir -p "$TEMP" || error "Could not create temp directory"
mkdir -p "$TEMP/Pictures"
mkdir -p "$TEMP/META-INF"
mkdir -p "$TEMP/process"
 
echo "input=$input"
echo "output_file=$output_file"
echo "TEMP=$TEMP"
 
##################################################################################
# DOCBOOK -> ODF (one big xml)
##################################################################################
 
XML_DOC="$input"
XSL="$PATH_XSL/docbook.xsl"
OPTIONS='--stringparam CI.style.color #329832' # --stringparam PARAMNAME PARAMVALUE 
xsltproc --stringparam generate.toc 1 --stringparam CI.text.copyright "وثائق أعجوبة" $OPTIONS "$XSL" "$XML_DOC" > "$TEMP/process/full.xml" || error "Could not generate xml file"
 
# 
echo "application/vnd.oasis.opendocument.text" > "$TEMP/mimetype"
 
##################################################################################
# SPLIT
##################################################################################
XML_DOC="$TEMP/process/full.xml"
XSL="$PATH_XSL/odf.xsl"
 
# MANIFEST
xsltproc --stringparam part manifest "$XSL" "$XML_DOC" > "$TEMP/META-INF/manifest.xml"
# META
xsltproc --stringparam part meta "$XSL" "$XML_DOC" > "$TEMP/meta.xml"
# STYLES
xsltproc --stringparam part styles "$XSL" "$XML_DOC" >  "$TEMP/styles.xml"
# CONTENT
xsltproc --stringparam part content "$XSL" "$XML_DOC" >  "$TEMP/content.xml"
 
##################################################################################
# POSTPROCESSING
##################################################################################
 
# TODO: implement post processing
# TODO: copy pictures into TEMP directory
# TODO: convert alternative nbsp character to ODF spaces
# $content=~s|([\xC2\x82]+)|'<text:s text:c="'.length($1).'"/>'|eg;
 
##################################################################################
# ZIPPING
##################################################################################
 
#doctype=$( perl -wne 'if (/\<office:(text|presentation|spread)/) {print $1,"\n"; exit 0}' "$TEMP/process/full.xml" )
rm -rf "$TEMP/process/"
pushd "$TEMP" >/dev/null
zip -rq "$output_file" *
popd  >/dev/null
rm -rf "$TEMP"
  • الكثير من التنسيقات تتم عبر params
  • اختيار الخطوط موجود في document-styles/font-face-decls.xsl
  • تنسيق خط وكان الشريط الجانبي موجود في overlay/default.xsl

استخدام itext

هذا مثال يوضح كيفية استخدام itext لإنتاج pdf من xml لكن هنا علينا عمل فية مشتقة من org.xml.sax.helpers.DefaultHandler ثم إعراب ملف xml



نقاش

أدخل تعليقك:
89 +10 = ?
 
pri/docbook2odt.txt · آخر تعديل: 2015/04/23 00:21 (تحرير خارجي)