» Archive for the 'PDF' Category

Font CharSet and Encoding

Wednesday, July 16th, 2008 by rubypdf

yesterday, A Chinese developer sent me WMF with Chinese character, and the FontFace name is also Chinese, he said the iTextSharp could convert the WMF to PDF correctly. so I try to debug into the source code, and find MetaFont only support ASCII.

try {
faceName = System.Text.Encoding.GetEncoding(1252).GetString(name, 0, k);
}
catch {
faceName = System.Text.ASCIIEncoding.ASCII.GetString(name, 0, k);
}

but charset of Chinese font(GB2312) is 134, so I think the source code needs to get encoding from charset, and then get the right faceName.
Finally, I get the following codes,

public enum FontCharSet : byte
{
ANSI_CHARSET = 0,// ANSI charset (Windows-1252)
DEFAULT_CHARSET = 1,
SYMBOL_CHARSET = 2,
MAC_CHARSET = 77,
SHIFTJIS_CHARSET = 128,// Shift JIS charset (Windows-932)
HANGEUL_CHARSET = 129,// Hangeul charset (Windows-949)
HANGUL_CHARSET = 129,
JOHAB_CHARSET = 130, // Johab charset (Windows-1361)
GB2312_CHARSET = 134,// GB2312 charset (Windows-936)
CHINESEBIG5_CHARSET = 136,// Chinese Big5 charset (Windows-950)
GREEK_CHARSET = 161, // Greek charset (Windows-1253)
TURKISH_CHARSET = 162,// Turkish charset (Windows-1254)
VIETNAMESE_CHARSET = 163,// Vietnamese charset (Windows-1258)
HEBREW_CHARSET = 177,// Hebrew charset (Windows-1255)
ARABIC_CHARSET = 178,// Arabic charset (Windows-1256)
BALTIC_CHARSET = 186,// Baltic charset (Windows-1257)
RUSSIAN_CHARSET = 204,// Cyrillic charset (Windows-1251)
THAI_CHARSET = 222,// Thai charset (Windows-874)
EASTEUROPE_CHARSET = 238, // Eastern european charset (Windows-1250)
OEM_CHARSET = 255,
}

and some very useful source codes( WMFUtilities.java and WMFConstants.java ) file from Apache Batik, it has implement the charset issue.

BTW, iText also has the same issue,

187 try {
188 font = BaseFont.createFont(fontName, "Cp1252", false);
189 }
190 catch (Exception e) {
191 throw new ExceptionConverter(e);
192 }

Batch Extract XMP from PDF to XML

Saturday, June 28th, 2008 by rubypdf

Here is a requirement that want to batch dump xmp from PDF to xml file or Database,

I’d like to know if you have developed or if you can develop an application for extracting customize XMP from PDF documents.

I’ll try to be more relevant: I customized a specific card for additional metadata in Acrobat Professional. If I save the xmp properties in xml format, I obtain the value that I inserted, after that I import xml file in Database. I’d like to know if is possible to develop an application that can extract xmp customized value from a group of PDF files.

And what is XMP?

Adobe’s Extensible Metadata Platform (XMP) is a labeling technology that allows you to embed data about a file, known as metadata, into the file itself. With XMP, desktop applications and back-end publishing systems gain a common method for capturing, sharing, and leveraging this valuable metadata — opening the door for more efficient job processing, workflow automation, and rights management, among many other possibilities. With XMP, Adobe has taken the “heavy lifting” out of metadata integration, offering content creators an easy way to embed meaningful information about their projects and providing industry partners with standards-based building blocks to develop optimized workflow solutions.

Finally, I used iTextSharp(of course iText also ok) to batch extract XMP from PDF, and save it to XML.

Found super fast tools to divide A4 to 2 A5 pages

Saturday, June 28th, 2008 by rubypdf

It is just a article talks about my two softwares posted by JimmyZou on http://www.mobileread.com/forums/archive/index.php/t-10515.html

After google a lot, I find super fast tool to cut A4 pdf into double pages A5 file.

I did one, and attach it behide, you guys can check it out.

Using DOS command to do it, and it done very fast, I split the 210K size pdf in 2 seconds, and the outcome file is 240K only, very effective!

You can find the software here:
http://www.rubypdf.com/

There are two softwares needed: PDFRotate and PDFDivide

First copy all software and the PDFs into one directory, the 2 simple steps:
1.First use PDFRoate
\PDFRoate 1-A4.pdf 1-A4-90.pdf 90
Rotate pdf 90 degree first, prepare to divide it.
2.USE PDFDivide
\Divide 1-A4-90.PDF 1-2A5.PDF

The only none-beatiful thing is that it cut directly, so in some pages there are 1 line letters been cut into 2 parts.

But anyway, it’s nice and fast.