Problems using Acrobat 9 with InDesign CS2
We have just upgraded from Acrobat 7 to version 9 but are still using CS2 for everything else(don't ask!!!). However, when we use the Adobe pdf presets, they still seem to be using the version 7 job options. I've tried to load up the new job options (from C:\Documents and Settings\All Users\Application Data\Adobe\Adobe PDF\Settings) but it says 'cannot import presets from this file'.
IT are not being very helpful with this, so I need help please! Microsoft office seems to be using version 9, and I can make a postscript file using version 9 in the print window of InDesign, but for some reason I can't get the programme to recognise the new presets.
Thanks v much
David,
When you print to PDF (or Distill in two steps), your transparency gets flattened BEFORE the PDF is made, so the transparency is not really there, just the "appearance" of the transparency. Exporting to PDF 1.4 (Acrobat 5) or later keeps the transparency "Live" in the PDF so that flattening can be handled in the RIP, as well as eliminating flattening artifacts (referred to as stitching, which appear as thin white lines along the borders of transparent regions in front of a colored background) during on-screen viewing.
Although Illustrator is not a general purpose PDF editing tool, it can be instructive to do a little demonstration of the difference in the structure of the same file exported and printed to PDF. Start by placing a photograph as a background, then use one of InDesign's shape tools to put a filled shape in front of the photo, and apply a drop shadow to the shape. Export and print using the Press Quality preset (which will keep the transparency live in the export, but the printed PDF will be flattened, despite its PDF 1.4 compatibility).
First, you'll probably see stitching in Acrobat on the printed version, and it may be lighter in appearance overall than the exported version. Now open the two version in Illustrator. Open the layers panel and keep expanding the groups until you are able to isolate the shape and drop shadow elements (in the exported version the shadow will probably be grouped with a clipping mask, while in the printed version the shadow may be in several pieces and has been burned into a copy of the background photo). Try to select the shape and shadow and move them relative to the background.
Mostly, though, I was referring to the fact that you can't use bookmarks, buttons, or other interactive elements in Printed PDF.
Similar Messages
-
I´m newbie with InDesign CS2 Scripting (JavaScript). I need some help to understand the way to place a Word document in an indesign template, using JavaScript(.jsx).
Thank you for the help,
Peter//PlaceTextFileInFrame.jsx
//An InDesign CS3 JavaScript
//Places a text file in a text frame.
var myDocument = app.documents.add();
//Set the measurement units to points.
myDocument.viewPreferences.horizontalMeasurementUnits = MeasurementUnits.points;
myDocument.viewPreferences.verticalMeasurementUnits = MeasurementUnits.points;
//Create a text frame.
var myTextFrame = myDocument.pages.item(0).textFrames.add({geometricBounds:myGetBounds(myDocument, myDocument.pages.item(0))});
//Place a text file in the text frame.
//Parameters for TextFrame.place():
//File as File object,
//[ShowingOptions as Boolean = False]
//You'll have to fill in your own file path.
myTextFrame.place(File("/c/test.txt"));
function myGetBounds(myDocument, myPage){
var myPageWidth = myDocument.documentPreferences.pageWidth;
var myPageHeight = myDocument.documentPreferences.pageHeight
if(myPage.side == PageSideOptions.leftHand){
var myX2 = myPage.marginPreferences.left;
var myX1 = myPage.marginPreferences.right;
else{
var myX1 = myPage.marginPreferences.left;
var myX2 = myPage.marginPreferences.right;
var myY1 = myPage.marginPreferences.top;
var myX2 = myPageWidth - myX2;
var myY2 = myPageHeight - myPage.marginPreferences.bottom;
return [myY1, myX1, myY2, myX2]; -
I am having a problem using Acrobat Pro in trying to merge documents.
I am having a problem using Acrobat Pro to merge documents. I can still use other functions withing Acrobat Pro. Help - I have a deadline to meet!
For product, there is an option in preferences where we can set fonts. There are two options: One is application font and other is system font. I am talking about elements 8 which I have but not sure that will solve your problem which is help related.
Hope Help in 5th version is html which opens in Browser? Please confirm. -
Problem Using Multiple With Statements
I'm having a problem using multiple WITH statements. Oracle seems to be expecting a SELECT statement after the first one. I need two in order to reference stuff from the second one in another query.
Here's my code:
<code>
WITH calculate_terms AS (SELECT robinst_current_term_code,
CASE
WHEN robinst_current_term_code LIKE '%60' THEN robinst_current_term_code - '40'
WHEN robinst_current_term_code LIKE '%20' THEN robinst_current_term_code - '100'
END first_term,
CASE
WHEN robinst_current_term_code LIKE '%60' THEN robinst_current_term_code - '100'
WHEN robinst_current_term_code LIKE '%20' THEN robinst_current_term_code - '160'
END second_term
FROM robinst
WHERE robinst_aidy_code = :aidy)
/*Use terms from calculate_terms to generate attendance periods*/
WITH gen_attn_terms AS
SELECT
CASE
WHEN first_term LIKE '%60' THEN 'Fall '||substr(first_term,0,4)
WHEN first_term LIKE '%20' THEN 'Spring '||substr(first_term,0,4)
END first_attn_period,
CASE
WHEN second_term LIKE '%60' THEN 'Fall '||substr(second_term,0,4)
WHEN second_term LIKE '%20' THEN 'Spring '||substr(second_term,0,4)
END second_attn_period
FROM calculate_terms
SELECT *
FROM gen_attn_terms
<code>
I get ORA-00928: missing SELECT keyword error. What could be the problem?You can just separate them with a comma:
WITH calculate_terms AS (SELECT robinst_current_term_code,
CASE
WHEN robinst_current_term_code LIKE '%60' THEN robinst_current_term_code - '40'
WHEN robinst_current_term_code LIKE '%20' THEN robinst_current_term_code - '100'
END first_term,
CASE
WHEN robinst_current_term_code LIKE '%60' THEN robinst_current_term_code - '100'
WHEN robinst_current_term_code LIKE '%20' THEN robinst_current_term_code - '160'
END second_term
FROM robinst
WHERE robinst_aidy_code = :aidy),
/*Use terms from calculate_terms to generate attendance periods*/
gen_attn_terms AS
SELECT
CASE
WHEN first_term LIKE '%60' THEN 'Fall '||substr(first_term,0,4)
WHEN first_term LIKE '%20' THEN 'Spring '||substr(first_term,0,4)
END first_attn_period,
CASE
WHEN second_term LIKE '%60' THEN 'Fall '||substr(second_term,0,4)
WHEN second_term LIKE '%20' THEN 'Spring '||substr(second_term,0,4)
END second_attn_period
FROM calculate_terms
)Not tested because there are no scripts. -
Problem using Toplink with JUnit
Hi,
I have a problem using Toplink with JUnit. Method under test is very simple: it use a static EntityManager object to open a transaction and persists data to db. When I invoke the method from a test method, it gives me the exception:
java.lang.AssertionError
at oracle.toplink.essentials.ejb.cmp3.persistence.PersistenceUnitProcessor.computePURootURL(PersistenceUnitProcessor.java:248)
at oracle.toplink.essentials.ejb.cmp3.persistence.PersistenceUnitProcessor.findPersistenceArchives(PersistenceUnitProcessor.java:232)
at oracle.toplink.essentials.ejb.cmp3.persistence.PersistenceUnitProcessor.findPersistenceArchives(PersistenceUnitProcessor.java:216)
at oracle.toplink.essentials.internal.ejb.cmp3.JavaSECMPInitializer.initialize(JavaSECMPInitializer.java:239)
at oracle.toplink.essentials.internal.ejb.cmp3.JavaSECMPInitializer.initializeFromMain(JavaSECMPInitializer.java:278)
at oracle.toplink.essentials.internal.ejb.cmp3.JavaSECMPInitializer.getJavaSECMPInitializer(JavaSECMPInitializer.java:81)
at oracle.toplink.essentials.ejb.cmp3.EntityManagerFactoryProvider.createEntityManagerFactory(EntityManagerFactoryProvider.java:119)
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:83)
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:60)
at it.valerio.electromanager.model.EntityFacade.<clinit>(EntityFacade.java:12)
at it.valerio.electromanager.business.ClienteBiz.insertIntoDatabase(ClienteBiz.java:36)
at it.valerio.electromanager.test.model.ClienteTest.insertDBTest(ClienteTest.java:30)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.junit.internal.runners.TestMethodRunner.executeMethodBody(TestMethodRunner.java:99)
at org.junit.internal.runners.TestMethodRunner.runUnprotected(TestMethodRunner.java:81)
at org.junit.internal.runners.BeforeAndAfterRunner.runProtected(BeforeAndAfterRunner.java:34)
at org.junit.internal.runners.TestMethodRunner.runMethod(TestMethodRunner.java:75)
at org.junit.internal.runners.TestMethodRunner.run(TestMethodRunner.java:45)
at org.junit.internal.runners.TestClassMethodsRunner.invokeTestMethod(TestClassMethodsRunner.java:66)
at org.junit.internal.runners.TestClassMethodsRunner.run(TestClassMethodsRunner.java:35)
at org.junit.internal.runners.TestClassRunner$1.runUnprotected(TestClassRunner.java:42)
at org.junit.internal.runners.BeforeAndAfterRunner.runProtected(BeforeAndAfterRunner.java:34)
at org.junit.internal.runners.TestClassRunner.run(TestClassRunner.java:52)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:38)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:460)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:673)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:386)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:196)
Where is the problem???
Regards,
ValerioEntityFacade class is very simple and it uses a static EntityManager object. Here the code:
public class EntityFacade {
private static EntityManager em = Persistence.createEntityManagerFactory("ElectroManager").createEntityManager();
private static Logger logger=Logger.getLogger(EntityFacade.class);
public static void insertCliente(Cliente c)
logger.debug("Inserisco cliente nel db: " + c);
em.getTransaction().begin();
c.setId(getNextIdForTable("Cliente"));
em.persist(c);
em.getTransaction().commit();
If I call the method from inside a main it works well, so I think the problem is not the classpath neither the URL in the persistence.xml. However the URL is:
<property name="toplink.jdbc.url" value="jdbc:derby:c:/programmi/ElectroManager/db/electroManager"/>
I use the latest build version of TopLink.
Thanks. -
Any Problems using SSL with Safari and the move with Internet explorer to require only TLS encryption.
Hi .
Apple no longer supports Safari for Windows if that's what you are asking > Apple apparently kills Windows PC support in Safari 6.0
Microsoft has not written IE for Safari for many years. -
Problem using ViewObject with bc4j:table
Hello !!
This is the query of my ViewObject:
select * from speiseplan order by jahr desc, kw desc;
and everything works fine in the BC4J tester:
jahr kw
2003 52
2003 7
2003 3
2002 51
But in my uix page the rows are not correctly sorted:
jahr kw
2003 3
2003 7
2003 52
2002 51
What's going wrong here?
Thanks for your help.
Regards,
MareikeDuplicate post.
Original problem using ViewObject with <bc4j:table> -
Problems using iCloud with Mountain Lion on iMac8,1
problems using iCloud with Mountain Lion on iMac8,1 - about 5J old - iMac gets slower and slower - total free memory is used in some minutes - no more reaction on input
Download > http://codykrieger.com/gfxCardStatus Open it and select Integrated Only. It's a bug with NVIDIA graphic cards
-
Problems using Acrobat Pro to scan with 10.5.2 and HP7280
Hello,
I'm hoping someone can help me. I'm trying to use Acrobat Pro to create PDF via scan. The scanner I have is an HP Photosmart C7280 all in one. When I try to use it, it starts up HP Scan Pro and gives option is scan to Acrobat. Unfortunately, when I ask it to do so, it crashes Acrobat.
Any ideas on what to do to make this work?
ThanksBTW: whats with this Îικε stuff.
As for Adobe/HP.
They have had a long running feud of Sorts for years running.
there was a very long period that spanned several versions of Acrobat, and HP Print Driver Updates. where every time adobe issued an update for Acrobat. Hp had to turn around and issue an update to their print Drivers.
The controversy swilled around If a Pdf was printed through acrobat or Reader to an Hp Printer all you would se was a series of very fine line screwed sideways much like looking at a TV screen the Horizontal hold adjustment was out of whack.
I'm sure Aandi , and Mike as well as myself posting thousands of times over the years to use the work around of going to print menu advanced and choosing print as image. And if it cleared the problem, to get on the horn with HP and let them know their driver was broken.
HP would fix it it work for a month and Adobe would do another update, and the same thing would happen.
It would be like the joke about Peat and repeat sat on a fence. If Peat fell off who's left? Pete. Then you would say repeat. And the person telling everything would repeat until you caught on.
You would think that a Software That depending highly on how printers would print would actually have sample of printers from the printer vendors to test on.
I also find it strange you never hear of any other printers having as much problems with adobe products. -
How to call javascript using applescript in InDesign cs2 Mac
Hi,
I need to integrate javascript with my apple script??? how to use it???please help me...i need it immediately..........Hi Andrew,
Here is an example for you – a snippet from my script:
global myBridgeLabel
-- function that runs on clicking the button in adobe script studio project
on clicked theObject
if name of theObject is "b1" then
set processName to "Started working"
set myBridgeLabel to "Red"
set myLabel to 1
else if name of theObject is "b2" then
set processName to "Started doing this"
set myBridgeLabel to "Green"
set myLabel to 2
else if name of theObject is "b3" then
set processName to "Started doing that"
set myBridgeLabel to "Yellow"
set myLabel to 3
else if name of theObject is "b4" then
set processName to "Finished doing this"
set myBridgeLabel to "Blue"
set myLabel to 4
else if name of theObject is "b5" then
set processName to "Finished doing that"
set myBridgeLabel to "Purple"
set myLabel to 5
end if
tell application "Adobe InDesign CS2"
set mydocument to active document
set myDocumentPath to full name of mydocument
set workerName to "Kasyan"
tell metadata preferences of mydocument
set theDate to current date
set myWeekday to weekday of theDate as string
set myDenNedeli to my convertWeekday(myWeekday)
set myRecord to (processName & " – " & workerName & " – ") & myDenNedeli & " " & text 1 thru -4 of time string of theDate & " \r"
set myHistory to get property namespace "http://ns.adobe.com/photoshop/1.0/" path "History"
set property namespace "http://ns.adobe.com/photoshop/1.0/" path "History" value myHistory & myRecord
end tell
set myJavaScript to "var myLabel =\"" & myBridgeLabel & "\"; app.activate(); var bt = new BridgeTalk; bt.target = \"bridge\"; myScript = 'app.displayDialogs = \"none\"; var t = new Thumbnail (File (\"" & myDocumentPath & "\")); var mdata = t.metadata; mdata.namespace = \"http://ns.adobe.com/xap/1.0/\"; mdata.Label = \"' + myLabel + '\";'; bt.body = myScript; bt.send();"
do script myJavaScript language javascript
In this javascript I use pares of single and double quotes.
The main java script – myJavaScript – (inside double quotes) contains another java script – myScript – (inside single quotes) which runs in Bridge via BridgeTalk.
I also put variables from AppleScript into JavaScript by using two pares of double quotes – the outside pare I escape with slashes:
set myBridgeLabel to "Red" -- a variable I defined in AppleScript
set myJavaScript to "var myLabel =\"" & myBridgeLabel & "\"; app.activate();
-- the contents of myBridgeLabel variable now becomes part of the JavaScript
Kasyan -
Anybody having trouble with InDesign CS2 documents on a network drive?
I just set up my Airport network at home (Airport Extreme base station, external hard drive plugged into the USB port, iMac G5 plugged into one of the Ethernet ports) and have run into a peculiar problem. When working on my iMac (connected vie ethernet) I open an Adobe InDesign CS2 document from the USB network drive. After a minute or so InDesign tells me something has gone wrong and it is shutting down. I immediately re-launch InDesign and it does its auto-recovery and immediately shuts down again. If I re-launch again and it asks if I want to begin auto recovery it immediately shuts down again. Only by telling it "no" to auto revoery can I break the cycle and let InDesign launch normally. However, if I then go to the file I was working on and attempt to open it, InDesign shuts down. I know that InDesign creates a temporary Lock file when you open a document. My guess is that somehow the lock file is getting corrupted and preventing InDesign from opening this file. InDesign documents are the only file types thus affected, Illustrator and Photoshop are fine. I have a second hard drive connected via Firewire and have never had any problems with files from it. My question is, what would be causing the problem on my network drive connectd to the base station? Am I the only one out there with this problem?
iMac 1.8 GHz PowerPC G5 20 Mac OS X (10.4.9)I just set up my Airport network at home (Airport Extreme base station, external hard drive plugged into the USB port, iMac G5 plugged into one of the Ethernet ports) and have run into a peculiar problem. When working on my iMac (connected vie ethernet) I open an Adobe InDesign CS2 document from the USB network drive. After a minute or so InDesign tells me something has gone wrong and it is shutting down. I immediately re-launch InDesign and it does its auto-recovery and immediately shuts down again. If I re-launch again and it asks if I want to begin auto recovery it immediately shuts down again. Only by telling it "no" to auto revoery can I break the cycle and let InDesign launch normally. However, if I then go to the file I was working on and attempt to open it, InDesign shuts down. I know that InDesign creates a temporary Lock file when you open a document. My guess is that somehow the lock file is getting corrupted and preventing InDesign from opening this file. InDesign documents are the only file types thus affected, Illustrator and Photoshop are fine. I have a second hard drive connected via Firewire and have never had any problems with files from it. My question is, what would be causing the problem on my network drive connectd to the base station? Am I the only one out there with this problem?
iMac 1.8 GHz PowerPC G5 20 Mac OS X (10.4.9) -
Problems Using Viber with new iPhone 4S
When I try and use VIber with my new iPhone is says push notifications are not enabled, even though I've enabled them. I've also tried deleting and reinstalling viber several times, along with restarting the phone. Is anyone else having the same problem and does anyone have any suggestions of something else I could do?
Hi,
This is a member of Viber's development team.
@libbyfromchristchurch - Please check: http://helpme.viber.com/index.php?/Knowledgebase/Article/View/38/0/push-notifica tions-for-iphone---how-to-enable
@quyenfromseattle - This is a known issue which will be resolved shortly. Make sure that you stay current with our version updates.
It may help to change 'banners' to 'alerts' on Viber's Push Notification settings as a temporary workaround.
Thank you for your patience! -
Problem using ipod with itunes 5.0.1
Could anyone help me?? I'm having serious problems using my ipod mini with my "just downloaded" itunes 5.0.1.
it says that my comunication software with ipod is not correctly installed and that i have to reinstall itunes again. i did it the problem is always there. what can i do?? can someone help me??Man, it seems that iTunes 5.whatever has gotten us all a little hot under the collar. I'm back up and running...this is what I did...I hope it helps some of you out.
1) created a new folder in MyMusic and copied everything from my iTunes library to the new folder. I then tested a few songs to make sure they still played (you never know)
2) I deleted iTunes using the control panel selection Add/Delete programs. I emptied the recycle gin and then did a search to see that iTunes was no longer there.
3) I went to filehippo.com to download iTunes 4.8 (my original disks are packed (Thank you to poster Allison for the filehippo.com suggestion).
4) I copied all my songs back into iTunes from where I had stored them in the new folder I created in MyMusic)
5) I connected the iPod Mini and opened iTunes and darn if it STILL didn't recognize the iPod
6) I did a restore on the iPod
7) I reconnected the iPod and had to reregister it and Voila! it worked again!!!!
Whatever the new features were in ver. 5.01, they were NOT worth the hassle I've experienced over the past two weeks. I'll stick with version 4.8 for awhile. -
Problem using SmartCard with 2 Certificates stored and SunPKCS11
Hi,
I'm trying to access one SmartCard token in Java 1.5 using SunPKCS11 provider for crypt, decrypt and digital signature operations.
I have 2 certificates stored on Token:
- CertA;
- CertB.
There are also 2 PIN:
- PIN1;
- PIN2.
I use:
- PIN1 for logging into the token;
- PIN1 for operation involving CertA;
- PIN2 for operation involving CertB;
There is no problem to logging into the token using Java and, without any troubles, I can read certificates and key from the
cryptographic card.
There is no problem using CertA for all my operation, but every attempt of using Private Key of CertB (for the same operations) returns with an Exception:
java.security.ProviderException: sun.security.pkcs11.wrapper.PKCS11Exception: CKR_DEVICE_ERROR
Here there's an extract of my source code.
public void loginToken() {
Provider UserProvider = new sun.security.pkcs11.SunPKCS11(C:\\pkcs11.cfg);
Security.addProvider(UserProvider);
try {
KeyStore ks = null;
X509Certificate UserCert = null;
PrivateKey UserCertPrivKey = null;
PublicKey UserCertPubKey = null;
//PIN
char PIN1[] = "11111".toCharArray();
char PIN2[] = "22222".toCharArray();
//logging into token
ks = KeyStore.getInstance("PKCS11", UserProvider);
ks.load(null, PIN1);
//enumeration alias
String alias = "";
Enumeration e = ks.aliases();
while (e.hasMoreElements()) {
alias = (String) e.nextElement();
//Certificate
UserCert = (X509Certificate) ks.getCertificate(alias);
//PublicKey
UserCertPubKey = (PublicKey) ks.getCertificate(alias).getPublicKey();
if (alias.compareToIgnoreCase("Cert1") == 0) {
//PrivateKey reference
UserCertPrivKey = (PrivateKey) ks.getKey(alias, PIN1);
} else if (alias.compareToIgnoreCase("Cert2") == 0) {
//PrivateKey reference
UserCertPrivKey = (PrivateKey) ks.getKey(alias, PIN2);
} else {
System.out.println("ALIAS UNKNOW");
System.exit(1);
//Signature Test
if (!MakeSignature(UserCertPrivKey, UserProvider))
System.out.println(" *** SIGNATURE OK *** ");
else
System.out.println(" *** SIGNATURE KO *** ");
catch (Exception ex) {
System.out.println("ERROR: " + ex);
public boolean MakeSign(PrivateKey PrivKey, Provider p) {
try {
//File I/O
FileInputStream txtfis = new FileInputStream("C:\\Test.txt");
FileOutputStream sigfos = new FileOutputStream("C:\\Test_Signature.txt");
//Signature Obj init
Signature dsa = Signature.getInstance("SHA1withRSA", p.getName());
dsa.initSign(PrivKey);
//Update data
BufferedInputStream bufin = new BufferedInputStream(txtfis);
byte[] buffer = new byte[1024];
int len;
while (bufin.available() != 0) {
len = bufin.read(buffer);
dsa.update(buffer, 0, len);
bufin.close();
//Make signature
byte[] realSig = dsa.sign();
//save signature on file
sigfos.write(realSig);
sigfos.close();
return true;
catch (Exception ex) {
System.out.println("ERROR: " + ex);
return false;
Any help would be grateful...
Thanks in advance.
P.S. Sorry for my EnglishThis is the same my initial problem.
I resolved it using IAIK-PKCS#11Wrapper (it is FREE) insted of sun.security.pkcs11.SunPKCS11.
You can find it here:
http://jce.iaik.tugraz.at/sic/products/core_crypto_toolkits/pkcs_11_wrapper
Here an exemple of code.
The main class:
import iaik.pkcs.pkcs11.Module;
import iaik.pkcs.pkcs11.DefaultInitializeArgs;
import java.util.Hashtable;
import iaik.pkcs.pkcs11.Token;
import iaik.pkcs.pkcs11.Slot;
import iaik.pkcs.pkcs11.Session;
import iaik.pkcs.pkcs11.objects.RSAPrivateKey;
import java.util.Vector;
import iaik.pkcs.pkcs11.objects.PrivateKey;
import iaik.pkcs.pkcs11.objects.X509PublicKeyCertificate;
import java.util.Enumeration;
import iaik.pkcs.pkcs11.objects.Key;
import java.security.cert.CertificateFactory;
import java.io.ByteArrayInputStream;
import iaik.pkcs.pkcs11.Mechanism;
import java.security.Security;
import org.bouncycastle.jce.provider.BouncyCastleProvider;
import java.io.File;
import java.io.FileInputStream;
import org.bouncycastle.cms.CMSSignedDataGenerator;
import org.bouncycastle.cms.CMSProcessableByteArray;
import java.util.ArrayList;
import java.security.cert.CertStore;
import java.security.cert.CollectionCertStoreParameters;
import org.bouncycastle.cms.CMSSignedData;
import java.io.FileOutputStream;
import java.security.cert.X509Certificate;
import iaik.pkcs.pkcs11.TokenInfo;
import org.bouncycastle.asn1.pkcs.PKCSObjectIdentifiers;
public class MakeSignature {
public static void main(String[] args) {
String USER_PIN = "12345678";
String DLL_NAME = "C:\\windows\\system32\\dll_P11_name.dll";
String OBJ_LABEL1 = "CNS0"; //this is the label of my 1th cert
String OBJ_LABEL2 = "CNS1"; //this is the label of my 2th cert
String INPUT_FILE = "C:\\Temp\\test.txt";
String OUTPUT_FILE = "C:\\Temp\\test.p7m";
try {
// ********** INITIALIZE PKCS#11 MODULE WITH DEFAULT PARAMETERS **********
Module pkcs11Module = Module.getInstance(DLL_NAME);
pkcs11Module.initialize(new DefaultInitializeArgs());
// ********** SELECT TOKEN **********
Slot[] slotsWithToken = pkcs11Module.getSlotList(Module.SlotRequirement.TOKEN_PRESENT);
Token[] tokens = new Token[slotsWithToken.length];
Hashtable tokenIDtoToken = new Hashtable(tokens.length);
long tokenID = -1;
Token tokenUsed = null;
//enum readers
for (int i = 0; i < slotsWithToken.length; i++) {
tokens[i] = slotsWithToken.getToken();
tokenID = tokens[i].getTokenID();
tokenIDtoToken.put(new Long(tokenID), tokens[i]);
System.out.println("Active tokens:");
System.out.println("Token ID: " + tokenID);
if (tokens.length == 0) { //No SC found
System.out.println("No SC presents");
else {
System.out.println("Using token: " + tokens[0].getTokenID());
tokenUsed = tokens[0];
//Note: if you have more reader and more SC inserted, you have to write
//here the code for select the right token
// ********** OPEN SESSION VS THE TOKEN AND IF REQUIRED SUBMIT PIN **********
TokenInfo tokenInfo = tokenUsed.getTokenInfo();
Session session = tokenUsed.openSession(Token.SessionType.SERIAL_SESSION, false, null, null);
if (tokenInfo.isLoginRequired()) {
session.login(Session.UserType.USER, USER_PIN.toCharArray());
// ********** SET SEARCH TEMPLATE FOR THE P11 OBJECT **********
RSAPrivateKey privateSignatureKeyTemplate = new RSAPrivateKey();
privateSignatureKeyTemplate.getSign().setBooleanValue(Boolean.TRUE);
privateSignatureKeyTemplate.getLabel().setCharArrayValue(OBJ_LABEL2.toCharArray());
// ********** SEARCH P11 OBJECT USING TEMPLATE **********
Vector keyList = new Vector(4);
session.findObjectsInit(privateSignatureKeyTemplate);
Object[] matchingKeys;
while ( (matchingKeys = session.findObjects(1)).length > 0) {
keyList.addElement(matchingKeys[0]);
session.findObjectsFinal();
//Try to find the corresponding certificates for the signature keys
Hashtable keyToCertificateTable = new Hashtable(4);
Enumeration keyListEnumeration = keyList.elements();
while (keyListEnumeration.hasMoreElements()) {
PrivateKey signatureKey = (PrivateKey) keyListEnumeration.nextElement();
byte[] keyID = signatureKey.getId().getByteArrayValue();
X509PublicKeyCertificate certificateTemplate = new X509PublicKeyCertificate();
certificateTemplate.getId().setByteArrayValue(keyID);
session.findObjectsInit(certificateTemplate);
Object[] correspondingCertificates = session.findObjects(1);
if (correspondingCertificates.length > 0) {
keyToCertificateTable.put(signatureKey, correspondingCertificates[0]);
session.findObjectsFinal();
//There are three cases now: 1 no obj found; 2 found only one obj, 3 found more obj
Key selectedKey = null;
X509PublicKeyCertificate correspondingCertificate = null;
//no object found for template
if (keyList.size() == 0) {
System.out.println("No object found for template");
throw new Exception("No object found for template");
//Founf only one object
else if (keyList.size() == 1) {
selectedKey = (Key) keyList.elementAt(0);
// create a IAIK JCE certificate from the PKCS11 certificate
correspondingCertificate = (X509PublicKeyCertificate)keyToCertificateTable.get(selectedKey);
System.out.println("One object Found");
//Found more object ... user can select one
else {
System.out.println("Many obj found!!!");
//write here the code for select the right object
// ********** GET THE OBJECT **********
RSAPrivateKey signerPriKey = (RSAPrivateKey) selectedKey;
java.security.cert.CertificateFactory certificateFactory = CertificateFactory.getInstance("X.509");
byte[] derEncodedCertificate = correspondingCertificate.getValue().getByteArrayValue();
//Cast to java.security.cert.X509Certificate
java.security.cert.X509Certificate signerCert = (java.security.cert.X509Certificate) certificateFactory.
generateCertificate(new ByteArrayInputStream(derEncodedCertificate));
// ********** SIGNATURE OPERATION **********
//Add BouncyCastle as provider
Security.addProvider(new BouncyCastleProvider());
//initialize signature operation
session.signInit(Mechanism.RSA_PKCS, (PrivateKey) signerPriKey);
//get input data
File src = new File(INPUT_FILE);
int sizecontent = ( (int) src.length());
byte[] contentData = new byte[sizecontent];
FileInputStream freader = new FileInputStream(src);
freader.read(contentData, 0, sizecontent);
freader.close();
//calculate digest of the input data
byte[] toEncrypt = buildBits(contentData); //I've already posted the code for this function
//make signature
byte[] signature = session.sign(toEncrypt);
// ********** MAKE P7 WELL FORMAT DOCUMENT **********
//CMSSignedDataGenerator fact = new CMSSignedDataGenerator();
Signature2CMSSignedData fact = new Signature2CMSSignedData();
CMSProcessableByteArray content = new CMSProcessableByteArray(contentData);
//Creation of BC CertStore
ArrayList certList = new ArrayList();
certList.add(signerCert);
CertStore certs = CertStore.getInstance("Collection", new CollectionCertStoreParameters(certList), "BC");
//Signature Alg
String algorithm = CMSSignedDataGenerator.DIGEST_SHA1;
//add element to P7
fact.addSignature(signature, signerCert, algorithm);
fact.addCertificatesAndCRLs(certs);
//generate enveloped using Bouncycastle provider
CMSSignedData envdata = fact.generate(PKCSObjectIdentifiers.data.getId(), content, true);
byte[] enveloped = envdata.getEncoded();
//Write P7 file
FileOutputStream efos = new FileOutputStream(OUTPUT_FILE);
efos.write(enveloped);
efos.close();
// ********** END **********
session.closeSession();
pkcs11Module.finalize(null);
catch (Exception ex) {
ex.printStackTrace();
}Main class uses buildBits function (already posted in this topic) and Signature2CMSSignedData class.import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.security.cert.CertStore;
import java.security.cert.X509CRL;
import java.security.cert.X509Certificate;
import org.bouncycastle.asn1.ASN1EncodableVector;
import org.bouncycastle.asn1.ASN1InputStream;
import org.bouncycastle.asn1.ASN1OctetString;
import org.bouncycastle.asn1.ASN1Sequence;
import org.bouncycastle.asn1.ASN1Set;
import org.bouncycastle.asn1.BERConstructedOctetString;
import org.bouncycastle.asn1.DEREncodable;
import org.bouncycastle.asn1.DERNull;
import org.bouncycastle.asn1.DERObject;
import org.bouncycastle.asn1.DERObjectIdentifier;
import org.bouncycastle.asn1.DEROctetString;
import org.bouncycastle.asn1.DERSet;
import org.bouncycastle.asn1.cms.ContentInfo;
import org.bouncycastle.asn1.cms.IssuerAndSerialNumber;
import org.bouncycastle.asn1.cms.SignedData;
import org.bouncycastle.asn1.cms.SignerIdentifier;
import org.bouncycastle.asn1.cms.SignerInfo;
import org.bouncycastle.asn1.pkcs.PKCSObjectIdentifiers;
import org.bouncycastle.asn1.x509.AlgorithmIdentifier;
import org.bouncycastle.asn1.x509.CertificateList;
import org.bouncycastle.asn1.x509.TBSCertificateStructure;
import org.bouncycastle.asn1.x509.X509CertificateStructure;
import org.bouncycastle.cms.CMSProcessable;
import org.bouncycastle.cms.CMSSignedData;
* class for generating a RSA pkcs7-signature message.
public class Signature2CMSSignedData2 {
CertStore certStore;
List certs = new ArrayList();
List crls = new ArrayList();
List signerInfs = new ArrayList();
List signers = new ArrayList();
public static final String DATA = PKCSObjectIdentifiers.data.getId();
public static final String ENCRYPTION_RSA = "1.2.840.113549.1.1.1";
private byte[] signatureData = null;
private X509Certificate cert = null;
private String digestOID = null;
private String encOID = null;
public Signature2CMSSignedData2() {
public void addSignature(byte[] signatureData, X509Certificate cert, String digestOID) {
this.signatureData = signatureData;
this.cert = cert;
this.digestOID = digestOID;
this.encOID = ENCRYPTION_RSA;
public void addCertificatesAndCRLs(CertStore certStore) throws Exception{
try {
Iterator it = certStore.getCertificates(null).iterator();
while (it.hasNext()) {
X509Certificate c = (X509Certificate) it.next();
certs.add(new X509CertificateStructure((ASN1Sequence) makeObj(c.getEncoded())));
Iterator it2 = certStore.getCRLs(null).iterator();
while (it2.hasNext()) {
X509CRL c = (X509CRL) it2.next();
crls.add(new CertificateList((ASN1Sequence) makeObj(c.getEncoded())));
catch (Exception e) {
throw new Exception(e.getMessage());
private DERObject makeObj(byte[] encoding) throws Exception {
if (encoding == null) {
return null;
ByteArrayInputStream bIn = new ByteArrayInputStream(encoding);
ASN1InputStream aIn = new ASN1InputStream(bIn);
return aIn.readObject();
public CMSSignedData generate(String signedContentType, CMSProcessable content, boolean encapsulate) throws Exception {
try {
ASN1EncodableVector digestAlgs = new ASN1EncodableVector();
ASN1EncodableVector signerInfos = new ASN1EncodableVector();
DERObjectIdentifier contentTypeOID = new DERObjectIdentifier(signedContentType);
// add the SignerInfo objects
Iterator it = signerInfs.iterator();
AlgorithmIdentifier digAlgId = new AlgorithmIdentifier(new DERObjectIdentifier(digestOID), new DERNull());
AlgorithmIdentifier encAlgId;
encAlgId = new AlgorithmIdentifier(new DERObjectIdentifier(encOID), new DERNull());
digestAlgs.add(digAlgId);
ASN1Set signedAttr = null;
ASN1Set unsignedAttr = null;
ASN1OctetString encDigest = new DEROctetString(signatureData);
ByteArrayInputStream bIn = new ByteArrayInputStream(cert.getTBSCertificate());
ASN1InputStream aIn = new ASN1InputStream(bIn);
TBSCertificateStructure tbs = TBSCertificateStructure.getInstance(aIn.readObject());
IssuerAndSerialNumber encSid = new IssuerAndSerialNumber(tbs.getIssuer(), tbs.getSerialNumber().getValue());
signerInfos.add(new SignerInfo(new SignerIdentifier(encSid), digAlgId, signedAttr, encAlgId, encDigest, unsignedAttr));
ASN1Set certificates = null;
if (certs.size() != 0) {
ASN1EncodableVector v = new ASN1EncodableVector();
it = certs.iterator();
while (it.hasNext()) {
v.add( (DEREncodable) it.next());
certificates = new DERSet(v);
ASN1Set certrevlist = null;
if (crls.size() != 0) {
ASN1EncodableVector v = new ASN1EncodableVector();
it = crls.iterator();
while (it.hasNext()) {
v.add( (DEREncodable) it.next());
certrevlist = new DERSet(v);
ContentInfo encInfo;
if (encapsulate) {
ByteArrayOutputStream bOut = new ByteArrayOutputStream();
content.write(bOut);
ASN1OctetString octs = new BERConstructedOctetString(bOut.toByteArray());
encInfo = new ContentInfo(contentTypeOID, octs);
else {
encInfo = new ContentInfo(contentTypeOID, null);
SignedData sd = new SignedData(new DERSet(digestAlgs), encInfo, certificates, certrevlist, new DERSet(signerInfos));
ContentInfo contentInfo = new ContentInfo(PKCSObjectIdentifiers.signedData, sd);
return new CMSSignedData(content, contentInfo);
catch (Exception e) {
throw new Exception(e.getMessage());
}Bye. -
Using Acrobat with Adobe Drive
I am exploring using Acrobat professional with Adobe Drive 2.1. I have not seen an explict statement that Acrobat can use Adobe drive.
Here are my questions:
1. Can Acrobat 9 or 10 interact with Adobe Drive 2.1?
2. Are there any Acrobat limitations to using the exposed Adobe Drive 2.1 CMIS functionality?
Thanks
TomFatMac>MacPro is correct about using Preview to read PDF's. It is built in, reliable and kept up to date by Apple software updates.
Adobe Reader has had vulnerabilities that can cause your Mac to be attacked via malicious PDF's. Keeping Reader up to date is essential for good security, however Adobe updaters nag so much that it is simpler to avoid installing it if at all possible.
PC users recommend it because they had no PDF support for so long, OS X has always had PDF support from Apple.
Maybe you are looking for
-
To expand on the question, I have performed the following steps: 1 - Unplugged external drive (1TB WD MyBook) from the Time Capsule 2 - Reconnected it. At this point, AirPort utility for iOS5 reported a problem with the disk (Time Capsule light was b
-
Installing Windows XP pro from a ZIP file
Hi, I bought a OEM copy of windows XP pro. It comes in a ZIP file. Is there a way to install it using Bootcamp directly or must I first create a CD with this file? Also, is there a difference in using the 64 bit version instead of the 32? Which one i
-
CSS Image Gallery - DEFAULT IMG
Not really a DW question but as I've had no replies on the appropriate forum, I thought I'd ask you guys for some help. I'm using http://www.dynamicdrive.com/style/cs...e-gallery/P30/ but am unsure how to position a default image in the space where
-
EXCEPTION: there should be exactly one local peer
I am trying to get started using PHD, but I can not get it to working yet. When I have login on the client it acts as if the sync is happening, but it never happens. I have poured through the FileSync logs on the client and keep finding complaints of
-
Can't add connection. + sign grayed out.
Hello, I am running IIS on a remote machine on the network. My site, files, and db file is also located on this remote machine. DW CS4 is running locally. I setup the SystemDNS for the access db file. However, I am not able to create a connection to